¿Cómo fusionar varios archivos PDF?


Respuestas:


209

PDF-Shuffler Instalar PDF-Shuffler

Si desea una herramienta con una GUI simple, pruebe pdfshuffler . Permite la fusión de archivos PDF, así como la reorganización y eliminación de páginas. Para el procesamiento por lotes y / o tareas más complicadas, pdftk es, por supuesto, más potente.

Captura de pantalla de PDF-Shuffler


Intenté esto, no funcionó el 10.04
David Oneill

El 12.04, pdfshuffler siempre se queja de que hay "demasiados valores para descomprimir", por lo que es inutilizable.
abre el

8
Se instala y funciona de maravilla en 14.04. ¡¡Gracias un montón!!
Zlatty

1
También puedo confirmar que pdfshufflerfunciona bien el 14.04 amd64.
conualfy

2
También funciona muy bien el 16.04.1
Sanjay Manohar

334

pdftkInstalar pdftk

Para fusionar dos archivos pdf file1.pdfy file2.pdf:

pdftk file1.pdf file2.pdf cat output mergedfile.pdf

Más información disponible aquí Way Back Machine .


55
pdftk tiene errores: bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs puede ser lento, pero funciona perfectamente [respuesta de IgnitE]
Pushpak Dagade

@PushpakDagade ghostscript se equivoca con anotaciones, particularmente comentarios que han sido marcados (casilla marcada con marca de verificación), ya no tendrá esta marca de verificación. No estoy al tanto de una forma de evitar esto. Además, si combina PDF v1.5 + 1.6, la salida será 1.4 por defecto. Ese es un comportamiento extraño.
Jonathan Komar

2
pdftk tiene un uso inusual donde los comandos caty outputlos argumentos de entrada varían y siguen de nuevo un argumento de salida.
Jeff Puckett el

3
El paquete parece haber sido eliminado en 2018.04.
Nicolas Raoul

1
@NicolasRaoul Lo acabo de descargar como una instalación rápida.
Max

161

Ghostscript es un paquete (disponible de forma predeterminada en Ubuntu) que le permite ver o imprimir archivos PostScript y PDF a otros formatos, o convertir esos archivos a otros formatos.
Para usar Ghostscript para combinar archivos PDF, escriba algo como lo siguiente:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf  file1.pdf file2.pdf

Aquí hay una breve explicación del comando:

gs         starts the Ghostscript program.
-dBATCH    once Ghostscript processes the PDF files, it should exit.
           If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE  forces Ghostscript to process each page without pausing for user interaction.
-q         stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite 
           tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
           tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
           Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.

Sus archivos de entrada ni siquiera necesitan ser archivos PDF. También puede usar archivos PostScript o EPS, o cualquier combinación de los tres.

Hay mucho que puedes hacer con Ghostscript. Puede leer su documentación para más detalles.

Fuente


2
Es cierto, pero es increíblemente lento. Acabo de intentar concatenar 45 x 400K, PDF de una sola página. pdftktomó 0m0.484s, gstomó 1m32.898s (eso es casi 200 veces más lento) Sin gsembargo, el archivo era aproximadamente un 21% más pequeño.
aidan

2
Este comando también funciona si utiliza un comodín para la lista de archivos que se combinarán. por ejemplo, reemplazar file1.pdf file2.pdfconfile*.pdf
Antonios Hadjigeorgalis

2
Para mí gstrabajé con algunos archivos PDF "no conformes" donde pdftksimplemente se ejecutarían para siempre.
ntc2

1
-dPDFSETTINGS=/prepressOpción de uso de mejora de calidad. Todo gracias por el colaborador
Mohnish

66
@AntoniosHadjigeorgalis Sólo como referencia y el buen entendimiento: eso no es el comando de apoyo comodines, que en realidad es la cáscara reemplazar file*.pdfcon file1.pdf file2.pdfantes de pasar los argumentos para el comando.
Midgard

82

También usa pdfunite para fusionar documentos pdf:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

12
ADVERTENCIA: un archivo existente out.pdfse sobrescribirá sin previo aviso, por pdfunite *.pdflo que no funcionará como se esperaba.
krlmlr

1
@krlmlr Siempre puede colocar la salida en otro directorio.
Bћовић

Justo, cptambién sobrescribe el último argumento sin previo aviso. Esto es sólo para usuarios corriendo (como yo) - Tuve la suerte que tenía una copia de seguridad del archivo en cuestión ...
krlmlr

1
Voto a favor: esta es una herramienta simple de línea de comandos sin una GUI de clic y babeo como muchas de las otras respuestas aquí. Encapsula muy bien las complejidades de la solución GhostScript (en gran medida equivalente).
tripleee

1
Esto también es muy rápido. Hace bien el trabajo. En un servidor muy lento (aws t1.micro), gs tarda 9 segundos, pdftk tarda 4 segundos y este pdfunite tarda 0.9 segundos para fusionar dos archivos.
rsmoorthy

34

Cadena PDF Instalar cadena de PDF

Una solución muy buena es PDFChain. Su GUI es una interfaz de PDFTK donde puede fusionar, dividir o incluso agregar algo de fondo a sus archivos PDF.


Esta es la mejor respuesta. Funciona perfectamente, independientemente de la versión de Ubuntu.
Paulo Coghi

¡Trabajó en Ubuntu 14.04 sin problemas!
my account_ram

¡Funciona muy bien en Ubuntu 18.04!
orschiro


@ user2413 es una tienda instantánea, no la única fuente de software en Ubuntu. Sin aptembargo, intentar buscar no dio ningún resultado: /
jena


8

Un enfoque alternativo es usar Latex como se explica en esta publicación ( sin acceso de root, suponiendo que tenga instalado pdflatex ): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- látex

Esto es útil en caso de que no tenga las herramientas mencionadas ni los privilegios de root, pero sí tiene pdflatex.

Copio el código de texto a continuación para fusionar file1.pdfy file2.pdf. Crea un archivo llamado output.texy pon:

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}

Y para compilar, simplemente use: pdflatex output.tex

El archivo fusionado se nombrará como output.pdf.


6

Utilizo pdfseparate para extraer páginas específicas de archivos PDF grandes:

pdfseparate -f  156 -l 157 input.pdf  output_%d.pdf 
pdfseparate -f  1   -l 2   input.pdf  output_%d.pdf 

y luego me uno a todos a través del comando:

pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date  +%Y-%m-%d_%H_%M_%S ).pdf

Esto se une a:

output_1.pdf output_2.pdf output_156.pdf output_157.pdf  

dentro:

out2014-12-14_23_25_36.pdf

Puede haber una manera más fácil de hacer frente ... :-)


La sustitución del proceso es superflua y potencialmente incluso perjudicial . Una línea de comando correcta y mucho más simple es pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdfpero carece de orden ls -v. Una solución obvia y trivial es nombrar sus archivos para que, naturalmente, se ordenen en el orden en que desea incluirlos. Si lo desea ls -v, al menos puede perder la tubería tr, lo que no logra nada aquí.
tripleee




1

Aquí está mi enfoque:

  • Quería que fuera fácilmente accesible, así que creé un acceso directo con el botón derecho en Nautilus (consulte https://help.ubuntu.com/community/NautilusScriptsHowto )
  • Quería que fuera muy rápido, así que usé pdfunite
  • pdfunite solo acepta las rutas de archivos en el medio del comando, por lo que tuve que rascarme la cabeza para administrar los espacios en las rutas de archivos. Así que asumí que todas las rutas de archivo comenzarán con "/ home /" y terminarán con ".pdf"

Aquí está el resultado:

#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'

Simplemente pegue este script en

/home/your_username/.local/share/nautilus/scripts

y asígnele el nombre "merge_pdfs.sh" (por ejemplo). Luego, hágalo ejecutable (haga clic con el botón derecho en merge_pdfs.sh -> pestaña Permisos -> marque "Permitir ejecutar archivo como programa"

Entonces, para fusionar archivos pdf, solo tiene que seleccionarlos -> haga clic con el botón derecho -> scripts -> merge_pdfs.sh y creará un archivo "merged.pdf" en el mismo directorio

¡Espero eso ayude!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.