Puoi usare la classe di PyPdf2PdfMerger .
Concatenazione di file
Puoi semplicemente concatenare i file usando il appendmetodo.
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()
Puoi passare handle di file invece di percorsi di file se lo desideri.
Unione di file
Se si desidera un controllo più dettagliato dell'unione, è disponibile un mergemetodo di PdfMerger, che consente di specificare un punto di inserimento nel file di output, il che significa che è possibile inserire le pagine ovunque nel file. Il appendmetodo può essere pensato come un punto in mergecui il punto di inserimento è la fine del file.
per esempio
merger.merge(2, pdf)
Qui inseriamo l'intero pdf nell'output ma a pagina 2.
Intervalli di pagine
Se desideri controllare quali pagine sono aggiunte da un particolare file, puoi usare l' pagesargomento della parola chiave appende merge, passando una tupla nel modulo (start, stop[, step])(come la rangefunzione normale ).
per esempio
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
Se specifichi un intervallo non valido, otterrai un IndexError.
Nota: inoltre, per evitare che i file vengano lasciati aperti, il PdfFileMergermetodo di chiusura s dovrebbe essere chiamato quando il file unito è stato scritto. Ciò garantisce che tutti i file vengano chiusi (input e output) in modo tempestivo. È un peccato che PdfFileMergernon sia implementato come gestore di contesto, quindi possiamo usare la withparola chiave, evitare la chiamata di chiusura esplicita e ottenere un po 'di sicurezza dalle eccezioni.
Potresti anche voler guardare lo pdfcatscript fornito come parte di pypdf2. È possibile evitare potenzialmente la necessità di scrivere del codice del tutto.
Il GitHub PyPdf2 include anche alcuni esempi di codice che dimostrano l'unione.