1. Produkter
  2.   PDF
  3.   Python
  4.   PyMuPDF
 
  

Gengiv PDF-filer, udpak tekst og billeder via gratis Python-bibliotek

Gratis Python API gør det muligt at redigere og gengive PDF-filer; udtræk tekst og billeder, rediger PDF-sider, flet/opdel og konverter PDF-filer med lethed.

PyMuPDF er en letvægts open source Python API, der tilføjer Python-bindinger og abstraktioner til MuPDF. API'en er lille i størrelse, men alligevel meget hurtig og understøtter en række populære dokumentformater, herunder PDF, XPS, OpenXPS, CBZ, EPUB og FB2 (eBooks) formater samt omkring 10 populære billedformater kan også åbnes, og behandles som dokumenter. PyMuPD er meget pålidelig og er kendt for sin bedste gengivelsesevne. Da biblioteket er meget let, gør det det til et godt valg til platforme, hvor ressourcer normalt er begrænsede, som smartphones.

Der er adskillige grundlæggende og avancerede funktioner, der understøttes af PyMuPDF API til PDF-dokumentgengivelse og konverteringer, såsom konvertering af PDF til PNG, adgang til og visning af metadata, arbejde med konturer, gengivelse af en side til et raster- eller vektorbillede (SVG), PDF-tekst Søgesupport, udtræk tekst fra PDF-side, udtræk billeder fra PDF, visning af billedet i GUI'er, ændring af PDF-side, oprettelse af nye PDF-sider, sletning af uønskede PDF-sider, Integrering af data og så videre. PyMuPDF har inkluderet understøttelse af adskillige platforme, såsom Mac, Linux og Windows.

Previous Next

Kom godt i gang med PyMuPDF

PyMuPDF kan installeres ved hjælp af pip, følgende kommandoer installeres fra et Python-hjul, hvis et er tilgængeligt til din platform.

Installer PyMuPDF via pip

 python -m pip install --upgrade pip
python -m pip install --upgrade pymupdf
 

Klon PyMuPDF via git Repository

 git clone https://github.com/pymupdf/PyMuPDF.git 

Det er også muligt at installere det manuelt; download de seneste udgivelsesfiler direkte fra GitHub-lageret.

Søgning efter tekst i PDF-filer via Python

PDF har været et af verdens foretrukne filformater til deling af dokumenter på tværs af internettet, fordi det bevarer al tekstformatering og grafik inde i det. Men det er ikke let at søge efter tekst i disse filer sammenlignet med andre dokumenter. Det gratis PyMuPDF-bibliotek giver softwareudviklere mulighed for at tilføje tekstsøgningsfunktioner i deres Python-applikationer. Det giver mulighed for at søge ud, hvor på siden en bestemt tekststreng findes.

Søg hvor på PDF-siden Tekststreng vises via Python

areas = page.search_for("mupdf") 

Udpakning af PDF-tekst og billeder via Python API

Open source PyMuPDF-biblioteket har inkluderet flere vigtige funktioner til at arbejde med PDF-tekst og billeder. Biblioteket har leveret forskellige funktioner til at udtrække tekst samt billeder fra PDF-dokumenter. Som standard tillader den udtrækning af almindelig tekst med linjeskift. Ingen formatering, ingen tekstpositionsdetaljer, ingen billeder. Desuden understøtter det generering af en liste over tekstblokke, generering af en liste med ord, oprettelse af en fuld visuel version af siden inklusive billeder og mange flere.

Sådan udtrækkes tekst fra PDF via Python API

from operator import itemgetter
from itertools import groupby
import fitz
doc = fitz.open( 'mydocument.pdf' )
pages = [ doc[ i ] for i in range( doc.pageCount ) ]
for page in pages:
  text_words = page.getTextWords()
  # The words should be ordered by y1 and x0
  sorted_words = SortedCollection( key = itemgetter( 3, 0 ) )
  for word in text_words:
    sorted_words.insert( word )
  # At this point you already have an ordered list. If you need to 
  # group the content by lines, use groupby with y1 as a key
  lines = groupby( sorted_words, key = itemgetter( 3 ) )

Deltag og opdel PDF-dokumenter i Python APP'er

Kombination af forskellige PDF-filer er en meget nyttig funktion, der giver brugerne mulighed for at have én PDF i stedet for at have et dusin separate PDF-filer. Det gratis og open source cross-platform PyMuPDF-bibliotek giver softwareprogrammører mulighed for nemt at flette forskellige filer eller kopiere sider mellem forskellige PDF-dokumenter. Det giver også brugerne mulighed for at opdele store PDF-dokumenter i mindre filer med blot et par linjer Python-kode. Det er også muligt at vælge nogle bestemte sider i et PDF-dokument og oprette et nyt dokument ud af det.

Opretter nyt dokument fra første og sidste 10 sider

doc2 = fitz.open()                 # new empty PDF
doc2.insert_pdf(doc1, to_page = 9)  # first 10 pages
doc2.insert_pdf(doc1, from_page = len(doc1) - 10) # last 10 pages
doc2.save("first-and-last-10.pdf")

Læs og eksporter PDF-metadata til CSV via Python

Open source PyMuPDF-biblioteket har leveret komplet funktionalitet til at få adgang til og læse metadata af PDF-filer uden nogen ekstern afhængighed. Det understøtter forskellige typer metadatanøgler såsom oprettelsesdato, forfatter, titel, skaberapplikation, ethvert emne, krypteringsmetode, filformat og så videre. Det er også muligt at eksportere metadata til CSV-format.

 

Eksporter PDF-metadata til CSV via Python API

import csv
import fitz
import argparse
parser = argparse.ArgumentParser(description="Enter CSV delimiter [;], CSV filename and documment filename")
parser.add_argument('-d', help='CSV delimiter [;]', default = ';')
parser.add_argument('-x', help='delete XML info [n]', default = 'n')
parser.add_argument('-csv', help='CSV filename')
parser.add_argument('-pdf', help='PDF filename')
args = parser.parse_args()
delim = args.d               # requested CSV delimiter character
assert args.csv, "missing CSV filename"
assert args.pdf, "missing PDF filename"
print "delimiter", args.d
print "xml delete", args.x
print "csv file", args.csv
print "pdf file", args.pdf
print "----------------------------------------"
doc = fitz.open(args.pdf)
oldmeta = doc.metadata
print "old metadata:"
for k,v in oldmeta.items():
    print k, ":",v
with open(args.csv) as tocfile:
    tocreader = csv.reader(tocfile, delimiter = delim)
    for row in tocreader:
        assert len(row) == 2, "each row must contain 2 entries"
        oldmeta[row[0]] = row[1]
print "----------------------------------------"
print "\nnew metadata:"
for k,v in oldmeta.items():
    print k, ":",v
doc.set_metadata(oldmeta)
doc.saveIncr()
 Dansk