varios unir solo programas programa para imagenes como archivos ruby language-agnostic pdf

unir - ¿Es posible combinar una serie de archivos PDF en uno usando Ruby?



unir archivos pdf (7)

No creo que Ruby tenga herramientas para eso. Puede consultar ImageMagick y Cairo. ImageMagick se puede usar para unir varias imágenes / documentos, pero no estoy seguro del caso de PDF.

Por otra parte, seguramente existen herramientas de Windows (comerciales) para hacer este tipo de cosas.

Yo uso El Cairo yo mismo para generar PDF. Si los PDF provienen de usted, tal vez sería una solución (admite varias páginas). ¡Buena suerte!

Tengo una serie de archivos PDF nombrados secuencialmente así:

  • 01_foo.pdf
  • 02_bar.pdf
  • 03_baz.pdf
  • etc.

Usando Ruby, ¿es posible combinarlos en un gran PDF mientras los mantienes en secuencia? No me importa instalar gemas necesarias para hacer el trabajo.

Si esto no es posible en Ruby, ¿qué hay de otro idioma? Sin componentes comerciales, si es posible.

Actualización: la sugerencia de Jason Navarrete conduce a la solución perfecta:

Coloque los archivos PDF que necesitan combinarse en un directorio junto con pdftk (o asegúrese de que pdftk esté en su RUTA), luego ejecute el siguiente script:

pdfs = Dir["[0-9][0-9]_*"].sort.join(" ") `pdftk #{pdfs} output combined.pdf`

O incluso podría hacerlo como una línea desde la línea de comandos:

ruby -e ''`pdftk #{Dir["[0-9][0-9]_*"].sort.join(" ")} output combined.pdf`''

Gran sugerencia Jason, solución perfecta, gracias. Dale un voto a la gente .


Puede hacer esto convirtiendo a PostScript y viceversa. Los archivos PostScript se pueden concatenar trivialmente. Por ejemplo, aquí hay un script de Bash que usa las herramientas de Ghostscript ps2pdf y pdf2ps:

#!/bin/bash for file in 01_foo.pdf 02_bar.pdf 03_baz.pdf; do pdf2ps $file - >> temp.ps done ps2pdf temp.ps output.pdf rm temp.ps

No estoy familiarizado con Ruby, pero es casi seguro que hay alguna función (podría llamarse system() (solo una conjetura)) que invocará una línea de comando determinada.


Sugeriría mirar el código de PDFCreator (VB, si no me equivoco, pero eso no debería importar ya que solo estarías implementando código similar en otro idioma), que usa GhostScript (licencia de GNU). O simplemente cavar directamente en GhostScript; también hay una capa de fachada disponible llamada GhostPDF, que puede hacer lo que quieras.

Si puede controlar GhostScript con VB, puede hacerlo con C, lo que significa que puede hacerlo con Ruby.

Ruby también tiene IO.popen, que le permite llamar a programas externos que pueden hacer esto.


Una publicación de Ruby-Talk sugiere usar el kit de herramientas pdftk para fusionar los archivos PDF.

Debería ser relativamente sencillo llamar a pdftk como un proceso externo y hacer que se encargue de la fusión. PDF :: Writer puede ser excesivo porque todo lo que buscas lograr es un apéndice simple.


Cualquier código de Ruby para hacer esto en una aplicación real probablemente sea muy lento. Intentaría buscar herramientas de Unix para hacer el trabajo. Esta es una de las bellezas del uso de Mac OS X, tiene capacidades de PDF muy rápidas incorporadas. La segunda mejor opción es probablemente una herramienta de Unix.

En realidad, he tenido cierto éxito con rtex. Si miras aquí , encontrarás información al respecto. Es mucho más rápido que cualquier biblioteca de Ruby que he usado y estoy bastante seguro de que el látex tiene una función para traer datos PDF de otras fuentes.


Si tiene ghostscript en su plataforma, descuelgue y ejecute este comando:

gs -dBATCH -dNOPAUSE -q -sDEVICE = pdfwrite -sOutputFile = finished.pdf <sus archivos pdf de origen>


Probé la solución pdftk y tuve problemas tanto en SnowLeopard como en Tiger. Instalar en Tiger realmente causó estragos en mi sistema y me dejó incapaz de ejecutar script / servidor, afortunadamente es una máquina retirada del desarrollo web.

Posteriormente se encontró otra opción: - joinPDF. Fue una instalación absolutamente indolora y rápida y funciona perfectamente.

También probé GhostScript y falló miserablemente (no pude leer las fuentes y terminé con archivos PDF que solo tenían imágenes).

Pero si está buscando una solución a este problema, puede intentar joinPDF.