Puoi usare la classe di PyPdf2PdfMerger
.
Concatenazione di file
Puoi semplicemente concatenare i file usando il append
metodo.
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 merge
metodo 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 append
metodo può essere pensato come un punto in merge
cui 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' pages
argomento della parola chiave append
e merge
, passando una tupla nel modulo (start, stop[, step])
(come la range
funzione 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 PdfFileMerger
metodo 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 PdfFileMerger
non sia implementato come gestore di contesto, quindi possiamo usare la with
parola chiave, evitare la chiamata di chiusura esplicita e ottenere un po 'di sicurezza dalle eccezioni.
Potresti anche voler guardare lo pdfcat
script 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.