Vous pouvez utiliser PyPdf2 de PdfMerger
classe.
Concaténation de fichiers
Vous pouvez simplement concaténer des fichiers en utilisant la append
méthode.
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()
Vous pouvez transmettre des descripteurs de fichiers à la place des chemins de fichiers si vous le souhaitez.
Fusion de fichiers
Si vous souhaitez un contrôle plus fin de la fusion, il existe une merge
méthode du PdfMerger
, qui vous permet de spécifier un point d'insertion dans le fichier de sortie, ce qui signifie que vous pouvez insérer les pages n'importe où dans le fichier. La append
méthode peut être considérée comme un merge
endroit où le point d'insertion est la fin du fichier.
par exemple
merger.merge(2, pdf)
Ici, nous insérons le pdf entier dans la sortie mais à la page 2.
Plages de pages
Si vous souhaitez contrôler quelles pages sont ajoutées à partir d'un fichier particulier, vous pouvez utiliser l' pages
argument mot - clé de append
et merge
, en passant un tuple sous la forme (start, stop[, step])
(comme la range
fonction régulière ).
par exemple
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
Si vous spécifiez une plage non valide, vous obtiendrez un fichier IndexError
.
Remarque: également que pour éviter de laisser les fichiers ouverts, la PdfFileMerger
méthode close doit être appelée lorsque le fichier fusionné a été écrit. Cela garantit que tous les fichiers sont fermés (entrée et sortie) en temps opportun. C'est dommage que ce PdfFileMerger
ne soit pas implémenté en tant que gestionnaire de contexte, nous pouvons donc utiliser le with
mot - clé, éviter l'appel de fermeture explicite et obtenir une sécurité d'exception facile.
Vous pouvez également consulter le pdfcat
script fourni dans le cadre de pypdf2. Vous pouvez potentiellement éviter d'avoir à écrire du code complètement.
Le github PyPdf2 comprend également des exemples de code démontrant la fusion.