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

Gjengi PDF-filer, pakk ut tekst og bilder via gratis Python-bibliotek

Gratis Python API lar deg redigere og gjengi PDF-filer; trekk ut tekst og bilder, rediger PDF-sider, slå sammen / del og konverter PDF-er med letthet.

PyMuPDF er en lett åpen kildekode Python API som legger til Python-bindinger og abstraksjoner til MuPDF. API-en er liten i størrelse, men likevel veldig rask og forutsatt at den støtter en rekke populære dokumentformater, inkludert PDF, XPS, OpenXPS, CBZ, EPUB og FB2 (eBooks) formater, samt rundt 10 populære bildeformater kan også åpnes, og behandlet som dokumenter. PyMuPD er veldig pålitelig og er kjent for sin beste gjengivelsesevne. Siden biblioteket er veldig lett, gjør det det til et godt valg for plattformer der ressursene vanligvis er begrensede, som smarttelefoner.

Det er mange grunnleggende og avanserte funksjoner som støttes av PyMuPDF API for PDF-dokumentgjengivelse og konverteringer, for eksempel konvertering av PDF til PNG, tilgang til og visning av metadata, arbeid med konturer, gjengivelse av en side til et raster- eller vektorbilde (SVG), PDF-tekst Søkestøtte, trekke ut tekst fra PDF-side, trekke ut bilder fra PDF, vise bildet i GUI-er, endre PDF-side, lage nye PDF-sider, slette uønskede PDF-sider, bygge inn data og så videre. PyMuPDF har inkludert støtte for en rekke plattformer, for eksempel Mac, Linux og Windows.

Previous Next

Komme i gang med PyMuPDF

PyMuPDF kan installeres ved hjelp av pip, følgende kommandoer vil installeres fra et Python-hjul hvis et er tilgjengelig for plattformen din.

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å mulig å installere det manuelt; last ned de siste utgivelsesfilene direkte fra GitHub-depotet.

Søke etter tekst i PDF-filer via Python

PDF har vært et av verdens favorittfilformater for deling av dokumenter over internett fordi det beholder all tekstformatering og grafikk i den. Men det er ikke lett å søke etter tekst i disse filene sammenlignet med andre dokumenter. Det gratis PyMuPDF-biblioteket lar programvareutviklere legge til tekstsøkefunksjoner i sine Python-applikasjoner. Det lar deg søke ut hvor på siden en bestemt tekststreng finnes.

Søk hvor på PDF-siden Tekststrengen vises via Python

areas = page.search_for("mupdf") 

Trekker ut PDF-tekst og bilder via Python API

Åpen kildekode PyMuPDF-biblioteket har inkludert flere viktige funksjoner for å jobbe med PDF-tekst og bilder. Biblioteket har levert ulike funksjoner for å trekke ut tekst og bilder fra PDF-dokumenter. Som standard tillater den ekstrahering av ren tekst med linjeskift. Ingen formatering, ingen tekstposisjonsdetaljer, ingen bilder. Dessuten støtter den generering av en liste over tekstblokker, generering av en liste med ord, opprettelse av en full visuell versjon av siden inkludert alle bilder og mange flere.

Hvordan trekke ut 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 ) )

Bli med og del opp PDF-dokumenter i Python-apper

Å kombinere forskjellige PDF-filer er en veldig nyttig funksjon som gir brukerne muligheten til å ha én PDF i stedet for å ha et dusin separate PDF-er. Det gratis og åpen kildekode-kryssplattform PyMuPDF-biblioteket gir programvareprogrammerere muligheten til å slå sammen forskjellige filer eller kopiere sider mellom forskjellige PDF-dokumenter med letthet. Det gir også brukere muligheten til å dele store PDF-dokumenter i mindre filer med bare et par linjer med Python-kode. Det er også mulig å velge noen spesifikke sider i et PDF-dokument og lage et nytt dokument ut av det.

Oppretter nytt dokument fra første og siste 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")

Les og eksporter PDF-metadata til CSV via Python

PyMuPDF-biblioteket med åpen kildekode har gitt komplett funksjonalitet for tilgang til og lesing av metadata av PDF-filer uten eksterne avhengigheter. Den støtter ulike typer metadatanøkler som dato for opprettelse, forfatter, tittel, skaperapplikasjon, ethvert emne, krypteringsmetode, filformat og så videre. Det er også mulig å 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()
 Norsk