Para la concatenación simple de archivos PDF, la utilidad pdfunite
es lo más sencillo que puede haber. Es una de las utilidades que vienen con el Biblioteca de renderización de PDFs Poppler y se puede instalar con brew install poppler
. También se incluye en el poppler-utils
en Debian y Ubuntu y el paquete poppler
en ArchLinux y en Fedora, si utiliza Linux.
El uso es
pdfunite file1.pdf file2.pdf file3.pdf mergedfile.pdf
Para procesar todos los archivos con la extensión "pdf" en el directorio actual en el orden del valor numérico de la cadena si no hay espacios en blanco en ninguno de los archivos :
pdfunite $(\ls -v *.pdf) output.pdf
Y si hay posiblemente espacios en blanco en los nombres de los archivos, se complica un poco más, pero esto debería funcionar:
(\ls -v *.pdf; echo output.pdf) | tr \\n \\0 | xargs -0 pdfunite
Explicación:
\ls
invoca el ls
de su $PATH
ignorando los alias. Esto puede ser importante en caso de que tenga un alias ls
que muestra información extra (como caracteres especiales para denotar ciertos permisos). También puede utilizar una ruta absoluta al archivo ls
ejecutable, como /usr/bin/ls
.
ls -v
ordena los archivos según los números (de versión) dentro del texto
tr \\n \\0
sustituye las nuevas líneas por NULLs después de cada archivo
xargs -0
indica a xargs que utilice el carácter NULL para separar los argumentos
Como puedes ver, el manejo adecuado de cosas como los espacios en blanco (y otros caracteres especiales) al canalizar comandos en el shell puede ser un poco complicado. Si quieres leer más, te recomiendo el libro de David Wheeler artículo completo .