logo

Arbeiten mit PDF-Dateien in Python

Sie alle müssen mit PDFs vertraut sein. Tatsächlich sind sie eines der wichtigsten und am weitesten verbreiteten digitalen Medien. PDF steht für Tragbares Dokumentformat . Es benutzt .pdf Verlängerung. Es dient der zuverlässigen Präsentation und dem Austausch von Dokumenten, unabhängig von Software, Hardware oder Betriebssystem.
Erfunden von Adobe , PDF ist jetzt ein offener Standard, der von der International Organization for Standardization (ISO) verwaltet wird. PDFs können Links und Schaltflächen, Formularfelder, Audio, Video und Geschäftslogik enthalten.
In diesem Artikel erfahren wir, wie wir verschiedene Operationen durchführen können, wie zum Beispiel:

  • Extrahieren von Text aus PDF
  • Rotierende PDF-Seiten
  • Zusammenführen von PDFs
  • PDF aufteilen
  • Hinzufügen von Wasserzeichen zu PDF-Seiten

Installation: Mit einfachen Python-Skripten!
Wir werden ein Drittanbietermodul verwenden, pypdf.
pypdf ist eine Python-Bibliothek, die als PDF-Toolkit erstellt wurde. Es ist in der Lage:



  • Extrahieren von Dokumentinformationen (Titel, Autor, …)
  • Dokumente Seite für Seite aufteilen
  • Dokumente Seite für Seite zusammenführen
  • Seiten zuschneiden
  • Mehrere Seiten zu einer einzigen Seite zusammenführen
  • Verschlüsseln und Entschlüsseln von PDF-Dateien
  • und mehr!

Um pypdf zu installieren, führen Sie den folgenden Befehl über die Befehlszeile aus:

pip install pypdf>

Bei diesem Modulnamen muss die Groß-/Kleinschreibung beachtet werden. Stellen Sie daher sicher, dass Und ist Kleinbuchstaben und alles andere ist Großbuchstaben. Alle in diesem Tutorial/Artikel verwendeten Code- und PDF-Dateien sind verfügbar Hier .

1. Extrahieren von Text aus einer PDF-Datei



Python

Java konvertiert String in int






# importing required classes> from> pypdf>import> PdfReader> > # creating a pdf reader object> reader>=> PdfReader(>'example.pdf'>)> > # printing number of pages in pdf file> print>(>len>(reader.pages))> > # creating a page object> page>=> reader.pages[>0>]> > # extracting text from page> print>(page.extract_text())>

>

>

Die Ausgabe des obigen Programms sieht folgendermaßen aus:

20 PythonBasics S.R.Doty August27,2008 Contents 1Preliminaries 4 1.1WhatisPython?................................... ..4 1.2Installationanddocumentation.................... .........4   [and some more lines...]>

Versuchen wir, den obigen Code in Teilen zu verstehen:

reader = PdfReader('example.pdf')>
  • Hier erstellen wir ein Objekt von PDF Reader Klasse des pypdf-Moduls, übergeben Sie den Pfad zur PDF-Datei und erhalten Sie ein PDF-Reader-Objekt.
print(len(reader.pages))>
  • Seiten Die Eigenschaft gibt die Anzahl der Seiten in der PDF-Datei an. In unserem Fall ist es beispielsweise 20 (siehe erste Ausgabezeile).
pageObj = reader.pages[0]>
  • Jetzt erstellen wir ein Objekt von Seitenobjekt Klasse des PyPDF-Moduls. Das PDF-Reader-Objekt hat eine Funktion Seiten[] Dies nimmt die Seitennummer (beginnend mit Index 0) als Argument und gibt das Seitenobjekt zurück.
print(pageObj.extract_text())>
  • Seitenobjekt hat Funktion extract_text() um Text aus der PDF-Seite zu extrahieren.

Notiz: Während sich PDF-Dateien hervorragend dafür eignen, Text so anzuordnen, dass er leicht gedruckt und gelesen werden kann, lassen sie sich von Software nicht einfach in Klartext umwandeln. Daher kann pypdf beim Extrahieren von Text aus einer PDF-Datei Fehler machen und einige PDFs möglicherweise überhaupt nicht öffnen. Leider können Sie nicht viel dagegen tun. pypdf kann möglicherweise einfach nicht mit einigen Ihrer speziellen PDF-Dateien arbeiten.

2. PDF-Seiten drehen

Python


Java-Nullprüfung



# importing the required classes> from> pypdf>import> PdfReader, PdfWriter> > def> PDFrotate(origFileName, newFileName, rotation):> > ># creating a pdf Reader object> >reader>=> PdfReader(origFileName)> > ># creating a pdf writer object for new pdf> >writer>=> PdfWriter()> > ># rotating each page> >for> page>in> range>(>len>(reader.pages)):> > ># creating rotated page object> >pageObj>=> reader.pages[page]> >pageObj.rotate(rotation)> > ># adding rotated page object to pdf writer> >pdfWriter.add_page(pageObj)> > ># new pdf file object> >newFile>=> open>(newFileName,>'wb'>)> > ># writing rotated pages to new file> >pdfWriter.write(newFile)> > ># closing the new pdf file object> >newFile.close()> > > def> main():> > ># original pdf file name> >origFileName>=> 'example.pdf'> > ># new pdf file name> >newFileName>=> 'rotated_example.pdf'> > ># rotation angle> >rotation>=> 270> > ># calling the PDFrotate function> >PDFrotate(origFileName, newFileName, rotation)> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()>

>

>

Hier können Sie sehen, wie die erste Seite von gedrehtes_beispiel.pdf sieht nach der Drehung so aus (rechtes Bild):

fmovies

Eine PDF-Datei drehen

Einige wichtige Punkte im Zusammenhang mit dem obigen Code:

  • Für die Rotation erstellen wir zunächst ein PDF-Reader-Objekt des Original-PDF.
writer = PdfWriter()>
  • Gedrehte Seiten werden in ein neues PDF geschrieben. Zum Schreiben in PDFs verwenden wir das Objekt von PDFWriter Klasse des PyPDF-Moduls.
for page in range(len(pdfReader.pages)): pageObj = pdfReader.pages[page] pageObj.rotate(rotation) pdfWriter.add_page(pageObj)>
  • Jetzt iterieren wir jede Seite des Original-PDF. Wir erhalten das Seitenobjekt von .Seiten[] Methode der PDF-Reader-Klasse. Jetzt drehen wir die Seite um drehen() Methode der Seitenobjektklasse. Dann fügen wir mithilfe von eine Seite zum PDF-Writer-Objekt hinzu addage() Methode der PDF-Writer-Klasse durch Übergabe des gedrehten Seitenobjekts.
newFile = open(newFileName, 'wb') pdfWriter.write(newFile) newFile.close()>
  • Jetzt müssen wir die PDF-Seiten in eine neue PDF-Datei schreiben. Zuerst öffnen wir das neue Dateiobjekt und schreiben mit PDF-Seiten darauf schreiben() Methode des PDF-Writer-Objekts. Abschließend schließen wir das ursprüngliche PDF-Dateiobjekt und das neue Dateiobjekt.

3. PDF-Dateien zusammenführen

Python




# importing required modules> from> pypdf>import> PdfMerger> > > def> PDFmerge(pdfs, output):> ># creating pdf file merger object> >pdfMerger>=> PdfMerger()> > ># appending pdfs one by one> >for> pdf>in> pdfs:> >pdfMerger.append(pdf)> > ># writing combined pdf to output pdf file> >with>open>(output,>'wb'>) as f:> >pdfMerger.write(f)> > > def> main():> ># pdf files to merge> >pdfs>=> [>'example.pdf'>,>'rotated_example.pdf'>]> > ># output pdf file name> >output>=> 'combined_example.pdf'> > ># calling pdf merge function> >PDFmerge(pdfs>=>pdfs, output>=>output)> > > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()>

>

>

desc-Tabelle in MySQL

Die Ausgabe des obigen Programms ist ein kombiniertes PDF, kombiniertes_Beispiel.pdf , durch Zusammenführung erhalten Beispiel.pdf Und gedrehtes_beispiel.pdf .

  • Werfen wir einen Blick auf wichtige Aspekte dieses Programms:
pdfMerger = PdfMerger()>
  • Zum Zusammenführen verwenden wir eine vorgefertigte Klasse, PDFMerger des pypdf-Moduls.
    Hier erstellen wir ein Objekt pdfMerger der PDF-Merger-Klasse
for pdf in pdfs: pdfmerger.append(open(focus, 'rb'))>
  • Jetzt hängen wir das Dateiobjekt jedes PDFs an das PDF-Merge-Objekt an, indem wir Folgendes verwenden append() Methode.
with open(output, 'wb') as f: pdfMerger.write(f)>
  • Abschließend schreiben wir die PDF-Seiten mit in die Ausgabe-PDF-Datei schreiben Methode des PDF-Merge-Objekts.

4. PDF-Datei aufteilen

Python




# importing the required modules> from> pypdf>import> PdfReader, PdfWriter> > def> PDFsplit(pdf, splits):> ># creating pdf reader object> >reader>=> PdfReader(pdf)> > ># starting index of first slice> >start>=> 0> > ># starting index of last slice> >end>=> splits[>0>]> > > >for> i>in> range>(>len>(splits)>+>1>):> ># creating pdf writer object for (i+1)th split> >writer>=> PdfWriter()> > ># output pdf file name> >outputpdf>=> pdf.split(>'.pdf'>)[>0>]>+> str>(i)>+> '.pdf'> > ># adding pages to pdf writer object> >for> page>in> range>(start,end):> >writer.add_page(reader.pages[page])> > ># writing split pdf pages to pdf file> >with>open>(outputpdf,>'wb'>) as f:> >writer.write(f)> > ># interchanging page split start position for next split> >start>=> end> >try>:> ># setting split end position for next split> >end>=> splits[i>+>1>]> >except> IndexError:> ># setting split end position for last split> >end>=> len>(reader.pages)> > > def> main():> ># pdf file to split> >pdf>=> 'example.pdf'> > ># split page positions> >splits>=> [>2>,>4>]> > ># calling PDFsplit function to split pdf> >PDFsplit(pdf, splits)> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()>

>

>

Die Ausgabe erfolgt in drei neuen PDF-Dateien mit Split 1 (Seite 0,1), Split 2 (Seite 2,3), Split 3 (Seite 4-Ende) .
Im obigen Python-Programm wurde keine neue Funktion oder Klasse verwendet. Mithilfe einfacher Logik und Iterationen haben wir die Aufteilungen der übergebenen PDFs entsprechend der übergebenen Liste erstellt spaltet sich .

5. Wasserzeichen zu PDF-Seiten hinzufügen

Python




# importing the required modules> from> pypdf>import> PdfReader> > def> add_watermark(wmFile, pageObj):> ># creating pdf reader object of watermark pdf file> >reader>=> PdfReader(wmFileObj)> > ># merging watermark pdf's first page with passed page object.> >pageObj.merge_page(reader.pages[>0>])> > ># returning watermarked page object> >return> pageObj> > def> main():> ># watermark pdf file name> >mywatermark>=> 'watermark.pdf'> > ># original pdf file name> >origFileName>=> 'example.pdf'> > ># new pdf file name> >newFileName>=> 'watermarked_example.pdf'> > ># creating pdf File object of original pdf> >pdfFileObj>=> open>(origFileName,>'rb'>)> > ># creating a pdf Reader object> >reader>=> PdfReader(pdfFileObj)> > ># creating a pdf writer object for new pdf> >writer>=> PdfWriter()> > ># adding watermark to each page> >for> page>in> range>(>len>(reader.pages)):> ># creating watermarked page object> >wmpageObj>=> add_watermark(mywatermark, reader.pages[page])> > ># adding watermarked page object to pdf writer> >writer.add_page(wmpageObj)> > ># new pdf file object> >newFile>=> open>(newFileName,>'wb'>)> > ># writing watermarked pages to new file> >writer.write(newFile)> > ># closing the new pdf file object> >newFile.close()> > if> __name__>=>=> '__main__'>:> ># calling the main function> >main()>

Lokaldatum

>

>

So sieht die erste Seite der Original-PDF-Datei (links) und der mit Wasserzeichen versehenen PDF-Datei (rechts) aus:

Die PDF-Datei mit einem Wasserzeichen versehen

  • Der gesamte Vorgang ist derselbe wie im Beispiel für die Seitendrehung. Der einzige Unterschied ist:
wmpageObj = add_watermark(mywatermark, pdfReader.pages[page])>
  • Das Seitenobjekt wird mithilfe von in ein mit Wasserzeichen versehenes Seitenobjekt umgewandelt Wasserzeichen hinzufügen() Funktion.
  • Versuchen wir es zu verstehen Wasserzeichen hinzufügen() Funktion:
reader = PdfReader(wmFile) pageObj.merge_page(reader.pages[0]) wmFileObj.close() return pageObj>
  • Zunächst erstellen wir ein PDF-Reader-Objekt von wasserzeichen.pdf . Um das übergebene Seitenobjekt zu verwenden, verwenden wir merge_page() Funktion und übergeben Sie das Seitenobjekt der ersten Seite des Wasserzeichen-PDF-Reader-Objekts. Dadurch wird das Wasserzeichen über das übergebene Seitenobjekt gelegt.

Und hier sind wir am Ende dieses langen Tutorials zum Arbeiten mit PDF-Dateien in Python angelangt.
Jetzt können Sie ganz einfach Ihren eigenen PDF-Manager erstellen!
Verweise:

Wenn Ihnen techcodeview.com gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel über write.techcodeview.com schreiben oder Ihren Artikel per E-Mail an [email protected] senden
Bitte schreiben Sie Kommentare, wenn Sie etwas Falsches finden oder wenn Sie weitere Informationen zu dem oben besprochenen Thema mitteilen möchten.