¿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
pdfunite
es parte de poppler, tiene una mayor posibilidad de instalación, el uso también es más simple quepdftk
:fuente
pdfunite *.pdf out.pdf
suponiendo 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
gs
corre muy rápido y se comprime mucho. Sin embargo, la calidad mejoró mucho después de usar este parámetro:-dPDFSETTINGS=/prepress
-dPDFSETTINGS=/prepress
tiene el efecto muy agradable de rotar páginas que son demasiado anchas y fuerzan molestas barras de desplazamiento horizontal..bash_profile
y 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.pdf
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
puede 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-o
opción seguida de la especificación del archivo de salida como se discutió anteriormente. La-o
opción también establece las opciones-dBATCH
y-dNOPAUSE
. Esta es una forma rápida de invocarghostscript
para 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.pdf
generará el archivo combinado comoout.pdf
pdftk
no 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.pdf
fuente
También
pdfjoin a.pdf b.pdf
creará una nuevab-joined.pdf
con 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.pdf
lugar.pdfunite
está 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 usarpdfseparate
para dividir los archivos en PDF separados para cada páginapdfunite
.En ese punto, probablemente desee un programa con más opciones.
qpdf
es la mejor utilidad que he encontrado para manipular archivos PDF.pdftk
es 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í queqpdf
produjo un archivo de salida mucho más pequeño que usarpdfseparate
ypdfunite
ensamblar páginas en un PDF de salida de 30 páginas, 970kB frente a 1,6450 kB. Como ofrece muchas más opciones,qpdf
la línea de comandos no es tan simple; la solicitud original para fusionar file1 y file2 se puede realizar confuente
pdftk
debido 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 parapdfunite
opdftk
.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.pdftools
se 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.pdf
Conserva marcadores, anotaciones de enlaces, acroformas, etc. en realidad tiene muchas opciones con las que puedes jugar, solo corre
sejda-console merge -h
para verlas todas.fuente
Si desea convertir todas las imágenes descargadas en un pdf, ejecute
convert img{0..19}.jpg slides.pdf
fuente
Secundo la
pdfunite
recomendació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
convert
conduce a fusionarlos en un pdf común. Este comando combina todos los archivos con.pdf
extensión en el directorio real en el directoriomerged.pdf
principal.fuente
$(ls *.pdf)
en lugar de comodín simple*.pdf
?ls *.pdf
comodí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
macos
usuarios 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
pdfpages
paquete Latex .Para combinar archivos PDF uno por uno, puede ejecutar:
Para fusionar todos los archivos pdf en un directorio, puede ejecutar:
fuente