Introducción
Seguimos con los posts acerca de trabajar con documentos PDF. En este caso vamos a ver cómo unir 2, 3 o muchos documentos PDF en uno solo, utilizando el poderoso lenguaje Python y una librería llamada PyPDF2. Vamos allá.
Requisitos
Python 3 y pip. Podemos instalarlo como se ve aquí.
¿Cómo unir documentos PDF en Python?
Vamos a ver que es fácil hacerlo.
Paso 1: instalar librería PyPDF2
En nuestra línea de comandos escribimos:
pip install pypdf2
Presionamos enter, y esperamos a que el paquete se descargue.
![Descargar e instalar PyPDF2 para unir PDF's Descargar e instalar PyPDF2 para unir PDF's](https://parzibyte.me/blog/wp-content/uploads/2018/03/Instalar-PyPDF2-para-unir-PDF.png)
Paso 2: documentos PDF de ejemplo
Para ilustrar bien este ejemplo, utilizaré 2 documentos PDF. Son estos:
Documento 1: PdfFileWriter
Documento 2: RectangleObject
Por el momento no importa el nombre ni el contenido de cada documento (son de alguna página de documentación de Python), lo que importa es cómo vamos a unirlos, y también el resultado.
Dichos ficheros estarán en el mismo directorio en donde ejecutaré el script.
![Directorio en donde ejecutaremos el script Directorio en donde ejecutaremos el script](https://parzibyte.me/blog/wp-content/uploads/2018/03/Directorio-de-trabajo.png)
Vamos allá.
Paso 3: Unir documentos
Aquí el código fuente que utilizaremos:
from PyPDF2 import PdfFileMerger
pdfs = ["PdfFileWriter.pdf", "RectangleObject.pdf"]
nombre_archivo_salida = "salida.pdf"
fusionador = PdfFileMerger()
for pdf in pdfs:
fusionador.append(open(pdf, 'rb'))
with open(nombre_archivo_salida, 'wb') as salida:
fusionador.write(salida)
Al ejecutarlo (en caso de que no haya errores) no imprime nada en la consola:
![Ejecutar unión de documentos Ejecutar unión de documentos](https://parzibyte.me/blog/wp-content/uploads/2018/03/Ejecutando-unión.png)
Naveguemos ahora al directorio en donde lo ejecutamos. Una vez que la ejecución haya terminado, habrá un documento nuevo con el nombre que indicamos.
![Unión exitosa Unión exitosa](https://parzibyte.me/blog/wp-content/uploads/2018/03/Salida-exitosa.png)
Listo, se ha creado un nuevo documento: salida
Bonus: unir todos los documentos en el directorio actual
Puede que no deseemos cambiar la lista cada vez que queremos unir diferentes documentos, podemos unir todos y cada uno de los documentos pdf que se encuentren en el directorio en donde se ejecuta nuestro script.
from PyPDF2 import PdfFileMerger
import os
pdfs = [archivo for archivo in os.listdir('./') if archivo.endswith(".pdf")]
nombre_archivo_salida = "salida.pdf"
fusionador = PdfFileMerger()
for pdf in pdfs:
fusionador.append(open(pdf, 'rb'))
with open(nombre_archivo_salida, 'wb') as salida:
fusionador.write(salida)
Al ejecutarlo, el resultado será el mismo; la diferencia es que no tuvimos que escribir el nombre de cada documento.
Conclusión
No sólo podemos unir 2 documentos, podemos unir los que sea, sólo tenemos que agregar sus nombres a la lista, o utilizar el segundo script para unir todos los que se encuentren en el directorio.
Te invito a ver cómo convertir imágenes a PDF, y también a darle una estrella al repositorio de la librería.
Créditos al autor de la respuesta que encontré en stackoverflow.
Gracias por el aporte, funciona ok. Sólo un apunte:
actualizar el script porque PdfFileMerger cambió por PdfMerger
Muchas gracias, era justo lo que necesitaba, soy novato
Gracias por sus comentarios. Saludos!
Un excelente aporte, felicitaciones