Sie können mit PyPdf2 s PdfMerger
Klasse.
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 merge
Methode 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 append
Methode kann als eine Methode angesehen werden, merge
bei 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 pages
Schlüsselwortargument von append
und verwenden merge
und ein Tupel im Formular übergeben (start, stop[, step])
(wie die reguläre range
Funktion).
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 PdfFileMerger
Methode 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 PdfFileMerger
nicht als Kontextmanager implementiert ist, sodass wir das with
Schlüsselwort verwenden, den expliziten Abschlussaufruf vermeiden und eine einfache Ausnahmesicherheit erhalten können.
Vielleicht möchten Sie sich auch das pdfcat
Skript 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.