Sie können mit PyPdf2 s PdfMergerKlasse.
Dateikettung
Mit der Methode können Sie Dateien einfach verkettenappend .
from PyPDF2 import PdfFileMerger
pdfs = ['file1.pdf', 'file2.pdf', 'file3.pdf', 'file4.pdf']
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(pdf)
merger.write("result.pdf")
merger.close()
Sie können stattdessen Dateihandles anstelle von Dateipfaden übergeben, wenn Sie möchten.
Zusammenführen von Dateien
Wenn Sie eine genauere Steuerung des Zusammenführens wünschen, gibt es eine mergeMethode von PdfMerger, mit der Sie eine Einfügemarke in der Ausgabedatei angeben können, dh Sie können die Seiten an einer beliebigen Stelle in der Datei einfügen. Die appendMethode kann als eine Methode angesehen werden, mergebei der die Einfügemarke das Ende der Datei ist.
z.B
merger.merge(2, pdf)
Hier fügen wir das gesamte PDF in die Ausgabe ein, jedoch auf Seite 2.
Seitenbereiche
Wenn Sie steuern möchten, welche Seiten aus einer bestimmten Datei angehängt werden, können Sie das pagesSchlüsselwortargument von appendund verwenden mergeund ein Tupel im Formular übergeben (start, stop[, step])(wie die reguläre rangeFunktion).
z.B
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
Wenn Sie einen ungültigen Bereich angeben, erhalten Sie einen IndexError.
Hinweis: Um zu vermeiden, dass Dateien geöffnet bleiben, sollte die PdfFileMergerMethode s close aufgerufen werden, wenn die zusammengeführte Datei geschrieben wurde. Dies stellt sicher, dass alle Dateien rechtzeitig geschlossen (Eingabe und Ausgabe) werden. Es ist eine Schande, dass dies PdfFileMergernicht als Kontextmanager implementiert ist, sodass wir das withSchlüsselwort verwenden, den expliziten Abschlussaufruf vermeiden und eine einfache Ausnahmesicherheit erhalten können.
Vielleicht möchten Sie sich auch das pdfcatSkript ansehen, das als Teil von pypdf2 bereitgestellt wird. Sie können möglicherweise vermeiden, dass Code vollständig geschrieben werden muss.
Der PyPdf2-Github enthält auch einen Beispielcode, der das Zusammenführen demonstriert.