¿Cómo podría fusionar / convertir múltiples archivos PDF en un archivo PDF grande?
Intenté lo siguiente, pero el contenido del archivo de destino no era el esperado:
convert file1.pdf file2.pdf merged.pdf
Necesito una solución de línea de comando (CLI) muy simple / básica. Lo mejor sería si pudiera canalizar la salida de la fusión / conversión directamente pdf2ps(como intenté originalmente en mi pregunta anterior aquí: tubería de Linux (convertir -> pdf2ps -> lp) ).
linux
pdf
merge
command-line-interface
alcohol
fuente
fuente

Respuestas:
Teniendo en cuenta que
pdfunitees parte de poppler, tiene una mayor posibilidad de instalación, el uso también es más simple quepdftk:fuente
pdfunite *.pdf out.pdfsuponiendo que no exista otro pdf en ese directorio y que su orden se conserve con "*". Si no se conserva, el uso de rangos: filename_ {0..9} .pdf lo resuelve.Prueba el buen ghostscript:
o incluso de esta manera para una versión mejorada para archivos PDF de baja resolución (gracias a Adriano por señalar esto):
En ambos casos, la resolución de salida es mucho mayor y mejor que de esta manera usando convertir:
De esta manera no necesitaría instalar nada más, solo trabaje con lo que ya ha instalado en su sistema (al menos ambos vienen por defecto en mi rhel).
Espero que esto ayude,
ACTUALIZACIÓN: en primer lugar, ¡gracias por todos sus buenos comentarios! solo un consejo que puede funcionar para ustedes, después de buscar en Google, encontré un truco excelente para reducir el tamaño de los archivos PDF, ¡reduje un PDF de 300 MB a solo 15 MB con una resolución aceptable! y todo esto con el buen ghostscript, aquí está:
¡¡salud!!
fuente
gscorre muy rápido y se comprime mucho. Sin embargo, la calidad mejoró mucho después de usar este parámetro:-dPDFSETTINGS=/prepress-dPDFSETTINGS=/prepresstiene el efecto muy agradable de rotar páginas que son demasiado anchas y fuerzan molestas barras de desplazamiento horizontal..bash_profiley tendrá un atajo agradable:pdfmerge() { gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=$@ ; }esto le ahorrará algo de escritura, si tiene que usar mucho el comando. El uso se ve así:pdfmerge merged.pdf mine1.pdf mine2.pdfgs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdfpuede ser acortado a lags -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o merged.pdf mine1.pdf mine2.pdf. De la documentación : "Como una forma abreviada conveniente, puede usar la-oopción seguida de la especificación del archivo de salida como se discutió anteriormente. La-oopción también establece las opciones-dBATCHy-dNOPAUSE. Esta es una forma rápida de invocarghostscriptpara convertir uno o más archivos de entrada".Lo siento, logré encontrar la respuesta yo mismo usando google y un poco de suerte :)
Para los interesados;
Instalé el pdftk (kit de herramientas pdf) en nuestro servidor Debian, y usando el siguiente comando logré el resultado deseado:
O
Esto a su vez se puede canalizar directamente a pdf2ps.
fuente
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf ...pdftk file1.pdf file2.pdf cat output out.pdfgenerará el archivo combinado comoout.pdfpdftkno está disponible para sistemas EL7 debido a la falta de dependencialibgcj.Esta es la solución más fácil si tiene varios archivos y no desea escribir los nombres uno por uno:
qpdf --empty --pages *.pdf -- out.pdffuente
También
pdfjoin a.pdf b.pdfcreará una nuevab-joined.pdfcon los contenidos de a.pdf y b.pdffuente
Puedes usar el comando convertir directamente,
p.ej
fuente
convert -compress lossless sub1.pdf sub2.pdf sub3.pdf merged.pdf, pero el tamaño del archivo resultante podría ser demasiado grande. Sugeriría en suconvert -compress jpeg -quality 90 sub1.pdf sub2.pdf sub3.pdf merged.pdflugar.pdfuniteestá bien fusionar archivos PDF completos. Si desea, por ejemplo, las páginas 2-7 de file1.pdf y las páginas 1,3,4 de file2.pdf, debe usarpdfseparatepara dividir los archivos en PDF separados para cada páginapdfunite.En ese punto, probablemente desee un programa con más opciones.
qpdfes la mejor utilidad que he encontrado para manipular archivos PDF.pdftkes más grande y más lento y Red Hat / Fedora no lo empaqueta debido a su dependencia de gcj. Otras utilidades PDF tienen dependencias Mono o Python. Descubrí queqpdfprodujo un archivo de salida mucho más pequeño que usarpdfseparateypdfuniteensamblar páginas en un PDF de salida de 30 páginas, 970kB frente a 1,6450 kB. Como ofrece muchas más opciones,qpdfla línea de comandos no es tan simple; la solicitud original para fusionar file1 y file2 se puede realizar confuente
pdftkdebido a su dependenciagcj, por lo que creo que se ha eliminado el soporte. A pesar de buscar herramientas de manipulación de PDF víapacman -Ss pdf, me perdí esto. Gracias por esta respuesta! Debería recibir más votos a favor, por lo que aparece justo al lado de sugerencias parapdfuniteopdftk.Apache PDFBox http://pdfbox.apache.org/
PDFMerger Esta aplicación tomará una lista de documentos pdf y los fusionará, guardando el resultado en un nuevo documento.
fuente
Use herramientas PDF de python https://pypi.python.org/pypi/pdftools/1.0.6
Descargue el archivo tar.gz, descomprímalo y ejecute el comando como se muestra a continuación
Debe instalar pyhton3 antes de ejecutar el comando anterior
Estas herramientas son compatibles con las siguientes
Puede encontrar más detalles en el siguiente enlace y es de código abierto
https://github.com/MrLeeh/pdftools
fuente
gs(todas las variantes enumeradas anteriormente), una simple combinación de dos archivos PDF, 2MB y 500Kb, estaba tardando unos minutos en completarse y el resultado era un archivo de 40MB.pdftoolsse completa instantáneamente con un tamaño de archivo idéntico.Puedes usar sejda-console , gratis y de código abierto. Descomprimirlo y correr
sejda-console merge -f file1.pdf file2.pdf -o merged.pdfConserva marcadores, anotaciones de enlaces, acroformas, etc. en realidad tiene muchas opciones con las que puedes jugar, solo corre
sejda-console merge -hpara verlas todas.fuente
Si desea convertir todas las imágenes descargadas en un pdf, ejecute
convert img{0..19}.jpg slides.pdffuente
Secundo la
pdfuniterecomendación. Sin embargoArgument list too long, recibí errores al intentar fusionar archivos> 2k PDF.Me volví a Python para esto y dos paquetes externos: PyPDF2 (para manejar todo lo relacionado con PDF) y natsort (para hacer un tipo "natural" de los nombres de archivo del directorio). En caso de que esto pueda ayudar a alguien:
fuente
date +%s.pdf' && pdfunite output - *. pdf output.pdf (Esto creará lotes de 500 archivos procesados en serie, ordenará los archivos temporales resultantes en el orden correcto , y producir un archivo de salida apropiado; necesitará limpiar los archivos temporales después)Aquí hay un método que uso que funciona y es fácil de implementar. Esto requerirá las bibliotecas fpdf y fpdi que se pueden descargar aquí:
fuente
Soy parcial al ser uno de los desarrolladores de PyMuPDF (un enlace de Python de MuPDF).
Puedes hacer fácilmente lo que quieras con él (y mucho más). El código esqueleto funciona así:
Eso es todo. Hay varias opciones disponibles para seleccionar solo rangos de páginas, mantener una tabla de contenido conjunta, invertir la secuencia de páginas o cambiar la rotación de páginas, etc., etc.
Estamos en PyPi.
fuente
Me gusta la idea de Chasmo, pero prefiero usar las ventajas de cosas como
Dar múltiples archivos fuente a los
convertconduce a fusionarlos en un pdf común. Este comando combina todos los archivos con.pdfextensión en el directorio real en el directoriomerged.pdfprincipal.fuente
$(ls *.pdf)en lugar de comodín simple*.pdf?ls *.pdfcomodín pierde el control sobre el orden de los archivos combinados. En un ejemplo, la siguiente lista: 1.pdf, 2.pdf, 3.pdf, ..., 10.pdf, ..., 100.pdf se fusionará como 1.pdf, 10.pdf, 100. pdf, 2.pdf, 3.pdf (debido a la forma predeterminada de ordenar archivos de Linux; aquí tiene más detalles sobre este problema: stackoverflow.com/q/22948042/1977012 ).Aunque no es una solución de línea de comandos, puede ayudar a los
macosusuarios a:fuente
Puede ver el uso de las herramientas pdftools gratuitas y de código abierto (descargo de responsabilidad: soy el autor de la misma).
Básicamente es una interfaz de Python para el
pdfpagespaquete Latex .Para combinar archivos PDF uno por uno, puede ejecutar:
Para fusionar todos los archivos pdf en un directorio, puede ejecutar:
fuente