Puede usar la clase de PyPdf2PdfMerger .
Concatenación de archivos
Simplemente puede concatenar archivos utilizando el appendmétodo.
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()
Puede pasar identificadores de archivo en lugar de rutas de archivo si lo desea.
Fusión de archivos
Si desea un control más detallado de la fusión, existe un mergemétodo de PdfMerger, que le permite especificar un punto de inserción en el archivo de salida, lo que significa que puede insertar las páginas en cualquier lugar del archivo. El appendmétodo se puede considerar como un mergepunto en el que el punto de inserción es el final del archivo.
p.ej
merger.merge(2, pdf)
Aquí insertamos el pdf completo en la salida pero en la página 2.
Rangos de páginas
Si desea controlar qué páginas se agregan desde un archivo en particular, puede usar el pagesargumento de palabra clave appendy merge, pasando una tupla en el formulario (start, stop[, step])(como la rangefunción regular ).
p.ej
merger.append(pdf, pages=(0, 3)) # first 3 pages
merger.append(pdf, pages=(0, 6, 2)) # pages 1,3, 5
Si especifica un rango no válido, obtendrá un IndexError.
Nota: también que para evitar que los archivos queden abiertos, se PdfFileMergerdebe llamar al método s close cuando se haya escrito el archivo combinado. Esto asegura que todos los archivos se cierren (entrada y salida) de manera oportuna. Es una pena que PdfFileMergerno se implemente como administrador de contexto, por lo que podemos usar la withpalabra clave, evitar el cierre explícito y obtener una seguridad de excepción fácil.
Es posible que también desee consultar el pdfcatscript proporcionado como parte de pypdf2. Potencialmente, puede evitar la necesidad de escribir código por completo.
El github de PyPdf2 también incluye un código de ejemplo que demuestra la fusión.