Puede usar la clase de PyPdf2PdfMerger
.
Concatenación de archivos
Simplemente puede concatenar archivos utilizando el append
mé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 merge
mé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 append
método se puede considerar como un merge
punto 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 pages
argumento de palabra clave append
y merge
, pasando una tupla en el formulario (start, stop[, step])
(como la range
funció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 PdfFileMerger
debe 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 PdfFileMerger
no se implemente como administrador de contexto, por lo que podemos usar la with
palabra clave, evitar el cierre explícito y obtener una seguridad de excepción fácil.
Es posible que también desee consultar el pdfcat
script 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.