unir recortar paginas manipular extraer cortar concatenar linux pdf merge command-line-interface

recortar - unir paginas pdf linux



Combinar/convertir varios archivos PDF en un PDF (16)

Apache PDFBox http://pdfbox.apache.org/

PDFMerger Esta aplicación tomará una lista de documentos PDF y los combinará, guardando el resultado en un nuevo documento.

uso: java -jar pdfbox-app-xyzjar PDFMerger "Archivos PDF de origen (2 ..n)" "Archivo PDF de destino"

¿Cómo podría fusionar / convertir varios archivos PDF en un archivo PDF grande?

Intenté lo siguiente, pero el contenido del archivo de destino no fue el esperado:

convert file1.pdf file2.pdf merged.pdf

Necesito una solución de línea de comandos (CLI) muy simple / básica. Lo mejor sería si pudiera canalizar la salida de la combinación / conversión directamente a pdf2ps (como se intentó originalmente en mi pregunta anterior aquí: tubería de Linux (convertir -> pdf2ps -> lp) ).


Aquí hay un método que utilizo que funciona y es fácil de implementar. Esto requerirá las bibliotecas fpdf y fpdi que se pueden descargar aquí:

require(''fpdf.php''); require(''fpdi.php''); $files = [''doc1.pdf'', ''doc2.pdf'', ''doc3.pdf'']; $pdf = new FPDI(); foreach ($files as $file) { $pdf->setSourceFile($file); $tpl = $pdf->importPage(1, ''/MediaBox''); $pdf->addPage(); $pdf->useTemplate($tpl); } $pdf->Output(''F'',''merged.pdf'');


Después de buscar en muchas de las bibliotecas pdf disponibles, lo único que funcionó perfectamente para mí es

https://libraries.io/npm/easy-pdf-merge

Requiere la instalación de Java 6 o superior, pero funciona perfectamente. Pdftk está lleno de errores.

var merge = require(''easy-pdf-merge''); merge(source_files,dest_file_path,function(err){ if(err) return console.log(err); console.log(''Success''); });

Nota : Esto no es cmd pero puede ejecutarse con comandos como aceptar nombres de archivos como argumentos de línea de comandos.


Estoy parcializado por ser uno de los desarrolladores de PyMuPDF (un enlace Python de MuPDF).

Puedes hacer fácilmente lo que quieras con él (y mucho más). El código del esqueleto funciona así:

#------------------------------------------------- import fitz # the binding PyMuPDF fout = fitz.open() # new PDF for joined output flist = ["1.pdf", "2.pdf", ...] # list of filenames to be joined for f in flist: fin = fitz.open(f) # open an input file fout.insertPDF(fin) # append f fin.close() fout.save("joined.pdf") #-------------------------------------------------

Eso es todo. Hay varias opciones disponibles para seleccionar solo rangos de páginas, mantener una tabla de contenidos conjunta, invertir la secuencia de páginas o cambiar la rotación de la página, etc., etc.

Estamos en PyPi.


Las otras respuestas son buenas, pero si no puede combinar archivos PDF localmente, ya sea que esté en un entorno de alojamiento compartido, o por otras razones, no le ayudarán.

Si está buscando una API para combinar archivos PDF de forma remota, puede probar api2pdf, que tiene un punto final para combinar archivos PDF. La documentación está here .


Lo siento, me las arreglé para encontrar la respuesta yo mismo usando google y un poco de suerte:)

Para los interesados;

Instalé el pdftk (pdf toolkit) en nuestro servidor Debian, y con el siguiente comando logré el resultado deseado:

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

O

gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...

Esto a su vez se puede canalizar directamente en pdf2ps.


Me gusta la idea de Chasmo, pero prefiero usar las ventajas de cosas como

convert $(ls *.pdf) ../merged.pdf

Dar varios archivos de origen para convert clientes potenciales para fusionarlos en un pdf común. Este comando combina todos los archivos con la extensión .pdf en el directorio real en merged.pdf en el directorio principal.


Prueba el buen ghostscript:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf

o incluso de esta manera para una versión mejorada para archivos PDF de baja resolución (gracias a Adriano por señalarlo):

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf

En ambos casos, la resolución de salida es mucho más alta y mejor que de esta manera utilizando convert:

convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf

De esta manera, no necesitaría instalar nada más, solo trabaje con lo que ya tiene 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 archivo de 300 MB a solo 15 MB con una resolución aceptable! Y todo esto con el buen ghostscript, aquí está:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf

¡¡aclamaciones!!


Puedes usar sejda-console , libre y de código abierto. Descomprímalo y ejecute 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, simplemente ejecuta sejda-console merge -h para verlas todas.


Puedes usar el comando de conversión directamente,

p.ej

convert sub1.pdf sub2.pdf sub3.pdf merged.pdf


Segundo la recomendación de pdfunite . Sin embargo, estaba obteniendo errores en la Argument list too long , ya que estaba intentando fusionar> 2k archivos PDF.

Me dirigí a Python para obtener este 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:

from PyPDF2 import PdfFileMerger import natsort import os DIR = "dir-with-pdfs/" OUTPUT = "output.pdf" file_list = filter(lambda f: f.endswith(''.pdf''), os.listdir(DIR)) file_list = natsort.natsorted(file_list) # ''strict'' used because of # https://github.com/mstamy2/PyPDF2/issues/244#issuecomment-206952235 merger = PdfFileMerger(strict=False) for f_name in file_list: f = open(os.path.join(DIR, f_name), "rb") merger.append(f) output = open(OUTPUT, "wb") merger.write(output)


Si desea convertir todas las imágenes descargadas en un pdf, ejecute

convert img{0..19}.jpg slides.pdf


También pdfjoin a.pdf b.pdf creará un nuevo b-joined.pdf con los contenidos de a.pdf y b.pdf


Teniendo en cuenta que pdfunite es parte de poppler, tiene una mayor probabilidad de ser instalado, el uso también es más sencillo que pdftk :

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


Utilice las herramientas de 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

python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3

Debe instalar pyhton3 antes de ejecutar el comando anterior

Estas herramientas soportan las siguientes

  • añadir
  • insertar
  • retirar
  • Girar
  • División
  • Unir
  • Cremallera

Puede encontrar más detalles en el siguiente enlace y es de código abierto.

https://github.com/MrLeeh/pdftools


pdfunite está bien para combinar archivos PDF completos. Si desea, por ejemplo, las páginas 2 a 7 de file1.pdf y las páginas 1,3,4 de file2.pdf, debe usar pdfseparate para dividir los archivos en archivos PDF separados para cada página para entregar a pdfunite .

En ese momento, es probable que 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 de PDF tienen dependencias Mono o Python. Encontré que qpdf produjo un archivo de salida mucho más pequeño que el uso de pdfseparate y pdfunite para ensamblar páginas en un PDF de salida de 30 páginas, 970kB vs. 1,6450 kB. Debido a que ofrece muchas más opciones, la línea de comandos de qpdf no es tan simple; La solicitud original para fusionar archivo1 y archivo2 se puede realizar con

qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf