Introducción:
El objetivo es concatenar múltiples pdf en un único pdf, intentando mantener la estructura interna de los pdf a unir.
Para hacer esto tenemos múltiples opciones:
- Concatenar por linea de comandos:
- Concatenar con librerias externas:
- Concatenar Online:
- Resumen general
- Conclusion final
Concatenar por linea de comandos
Pdfunite
Pdfunite es una herramienta muy simple excrita en ruby para unir pdf, se instala rápido, funciona bien pero el indice de los pdf se lo carga.
Instalación.
Solo hay que instalar el paquete poppler
que lo contiene.
|
|
Unión de pdf.
Para unir varios pdf lo único que hay que hacer es pasárselos a pdfunite como argumento teniendo en cuenta que se irán añadiendo al pdf en el mismo orden y que el ultimo parámetro debe de ser el nombre del pdf resultante.
|
|
Como inconveniente el indice que traigan otros pdf se lo carga.
ImageMagick (no recomendado)
Este método funciona pero reduce la calidad (resolucion) del pdf un poco y aumenta bastante el tamaño del pdf resultante, su uso seria el siguiente:
|
|
Pdfjam
Pdfjam es un conjunto de pequeños script para hacer modificaciones a pdf, pero a nosotros la única herramienta que nos interesa ahora mismo es pdfjam que es la principal, ya que es la que usaremos para unir los pdf.
Instalación.
La Instalación en Fedora es simple, solo hay que instalar un paquete.
|
|
Union de pdf.
Para unir varios pdf lo único que hay que hacer es pasárselos a pdfjam como argumento teniendo en cuenta que se irán añadiendo al pdf en el mismo orden y que el pdf resultante debe ir precedido por un -o
para indicar que es la salida.
|
|
Como inconveniente el indice que traigan otros pdf se lo carga.
Ghostscript
Ghostscript es un paquete que te permite ver o imprimir archivos PostScript y PDF en otros formatos o a partir de estos a otros formatos, pero a demás de todo eso también te permite unir archivos pdf. La instalación no es necesaria al menos en Fedora 24 ya que venia instalado por defecto.
Unión de pdf.
En este apartado al ser una herramienta bastante completa podríamos hacerlo de múltiples formas, antes de ponerla pondré algunos parámetros importantes que pasaremos a Ghostscript:
- -dBATCH: una vez que Ghostscript procesa los archivos PDF, debe salir. Si no incluye esta opción, Ghostscript seguirá ejecutándose.
- -dNOPAUSE: obliga a Ghostscript a procesar cada página sin pausar la interacción del usuario.
- -q: para que Ghostscript no muestre mensajes mientras funciona.
- -sDEVICE=pdfwrite: le dice a Ghostscript que use su escritor de PDF incorporado para procesar los archivos.
- -sOutputFile=output.pdf: le dice a Ghostscript que guarde el archivo PDF combinado con el nombre que especifico.
Unir varios pdf.
|
|
Unir varios pdf haciendo una pequeña compresión.
|
|
Unir varios pdf haciendo una gran compresión, revisar porque puede haber perdidas de calidad visibles.
|
|
Fuentes: stackoverflow, linux.com
Concatenar con librerías externas
Python
En python podemos usar la librería pyPdf2 que depende de la librería pdf. El resultado es un pdf con el nombre salida.pdf
que tiene buena calidad pero no mantiene los indices
IMPORTANTE: Actualizar el script para pasarle distintos argumentos como -o para hacerlo dinamico y que no tenga un fichero de salida statico
Instalación.
|
|
Unir varios pdf.
Uso: python concatena_pdf.py portada.pdf memoria.pdf
|
|
Concatenar Online
Smallpdf
Smallpdf es una pagina online en la que podemos hacer múltiples operaciones con pdf como unirlos, separarlos y convertirlos a múltiples formatos, funciona bastante bien pero supongo que tendrá limitaciones en cuanto al tamaño de los ficheros y el numero máximo de operaciones a hacer con una cuenta gratis/sin registrar.
Resumen general
herramienta | mantiene integridad del indice | calidad resultante |
---|---|---|
pdfunite | ❌ | ✔ |
ImageMagick | ❌ | ❌ |
pdfjam | ❌ | ✔ |
Ghostscript | ✔ | ✔ |
pyPdf2 | ❌ | ✔ |
smallpdf | ❌ | ✔ |
Conclusión final
Creo que en este caso la mejor opción es Ghostscript ya que es la unica que mantiene el indice después de la unión.