144 votos

¿Cómo puedo combinar varios PDF mediante la línea de comandos?

¿Existe un método rápido para combinar varios archivos PDF en uno solo?

Sé que se puede hacer utilizando Preview.app

177voto

user3439894 Puntos 5883

Echa un vistazo a "Combinar archivos PDF en la línea de comandos en OSX" en Cómo unir archivos PDF en OS X desde la línea de comandos .

Resulta que a partir de Tiger, OSX viene con un script de Python que hace exactamente lo que necesitas. El script ya es ejecutable, y Python está preinstalado en OS X, así que todo lo que necesitas hacer para ejecutarlo es abrir el Terminal y escribir

"/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o PATH/TO/YOUR/MERGED/FILE.pdf /PATH/TO/ORIGINAL/1.pdf /PATH/TO/ANOTHER/2.pdf /PATH/TO/A/WHOLE/DIR/*.pdf

También en la página enlazada se sugiere hacer un enlace simbólico para el join.py para facilitar la escritura, sin embargo, omitieron el -s en ln -s ... ... y sin ella, se crea un enlace duro. Probablemente no importaría, sin embargo, aunque lo mencionaría.

0 votos

A mí me funcionó. Una cosa muy buena es evitar tener que instalar paquetes adicionales que tal vez no vuelva a usar. Gracias.

0 votos

Me ha funcionado en El Capitan 10.11.6.

8 votos

Advertencia : Tenía PDFs en los que se estropeaba la rotación de varias páginas

134voto

emragins Puntos 111

Simplemente instale Ghostscript usando el comando Brew with:

brew install gs

A continuación, ejecute el comando con todos los archivos de la lista:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf source1.pdf source2.pdf source3.pdf

0 votos

OS X/MacOS ya tiene de forma nativa una manera de combinar archivos PDF desde la línea de comandos, así que ¿por qué perder el tiempo de tener que instalar primero Command Line Tools para Xcode, Homebrew y luego Ghostscript, para hacer algo que ya se puede hacer de forma nativa sin tener que instalar ninguno de los paquetes mencionados?

9 votos

@user3439894 mucha gente ya tiene estos paquetes comunes instalados y ya están usando gs así que para futuras referencias esta solución sería igual de conveniente.

0 votos

@htor, no tengo ni idea de por qué diriges tu comentario a mí, ya que no soy el autor de la respuesta que comentas. Dicho esto, MacOS no tiene gs instalado por defecto y probablemente por eso Bartosz Petrynski lo sugiere en su respuesta.

34voto

Dmitry Grigoryev Puntos 111

Encontré la versión gratuita de Herramienta de línea de comandos de Coherent PDF para ser la mejor opción. Es muy rápido, no tiene pérdidas y no estropea la orientación ni los hipervínculos como hacían otras soluciones. El formato es:

cpdf file1.pdf file2.pdf -o output.pdf

1 votos

Esta debería ser la respuesta aceptada. Preview.app así como join.py estropean los hipervínculos.

2 votos

También, cpdf *.pdf -o output.pdf funciona muy bien si tienes muchos pdfs para combinar en un directorio.

0 votos

Sí, esto es lo mejor, también es una ventanilla única para todas las cosas que quieras hacer con pdfs....

19voto

Alex Abreu Puntos 411

construyendo sobre @Bartosz Petryński 's buena respuesta podemos hacer un mínimo propio cpdf sobre GhostScript:

brew install gs

cpdf () { 
  gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$1" "${@:2}"
}

entonces úsalo como:

cpdf merged.pdf file1.pdf file2.pdf file3.pdf

7voto

benwiggy Puntos 8

El Python de Apple script en la acción de Automator es muy lento, ya que utiliza las APIs CGPDFDocument de CoreGraphics, en lugar del más reciente framework PDFKit. También importa toda la biblioteca de CoreGraphics, en lugar de sólo las APIs necesarias.

Una alternativa, más rápida de Python script, se puede encontrar aquí:

Este scripttambién añade una tabla de contenidos al PDF, enumerando cada archivo componente (y fusionando los TdC existentes), cosa que no hace el de Apple.

Se puede utilizar en la línea de comandos (con los nombres de los archivos PDF como argumentos), o en una acción de Automator shell script, para hacer una acción/servicio rápido para el Finder.

2 votos

Como prueba, utilizando el time comando junto con su joinpdfs.py script El sistema integrado de join.py script y dos archivos de ~200 MB cada uno, su joinpdfs.py script fue 9 segundos más rápido que el join.py script con la ventaja añadida de tener la tabla de contenido intacta. Muy bien. +1

1 votos

Por cierto, 9 segundos no parece mucho, pero fue un tercio del tiempo total de la obra. script , por lo que 1/3 del tiempo más rápido es significativo.

0 votos

El enlace ya no funciona, pero ahora se pueden encontrar versiones para Python 2 y 3 en github.com/benwiggy/PDFsuite/blob/master/legacy%20(Python%202)/ y github.com/benwiggy/PDFsuite/blob/master/Python3/joinpdfs.py respectivamente.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X