Domanda

Ho una serie di PDF nominati in sequenza in questo modo:

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

Usando Ruby, è possibile combinarli in un unico grande PDF mantenendoli in sequenza?Non mi dispiace installare le gemme necessarie per svolgere il lavoro.

Se questo non è possibile in Ruby, che ne dici di un'altra lingua?Nessun componente commerciale, se possibile.


Aggiornamento: Il suggerimento di Jason Navarrete portano alla soluzione perfetta:

Posiziona i file PDF che devono essere combinati in una directory insieme a pdftk (o assicurati che pdftk sia nel tuo PERCORSO), quindi esegui il seguente script:

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

Oppure potrei anche farlo come una riga dalla riga di comando:

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

Ottimo suggerimento Jason, soluzione perfetta, grazie. Dategli un voto positivo, gente.

È stato utile?

Soluzione

UN Ruby-Talk il post suggerisce di utilizzare il file pdftk toolkit per unire i PDF.

Dovrebbe essere relativamente semplice da chiamare pdftk come processo esterno e fargli gestire la fusione. PDF::Scrittore potrebbe essere eccessivo perché tutto ciò che stai cercando di realizzare è una semplice aggiunta.

Altri suggerimenti

Puoi farlo convertendo in PostScript e viceversa.I file PostScript possono essere concatenati banalmente.Ad esempio, ecco uno script Bash che utilizza gli strumenti Ghostscript ps2pdf e 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

Non ho familiarità con Ruby, ma quasi sicuramente c'è qualche funzione (potrebbe essere chiamata system() (solo un'ipotesi)) che invocherà una determinata riga di comando.

Se hai ghostscript sulla tua piattaforma, esegui il shell ed esegui questo comando:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=finished.pdf <i tuoi file pdf di origine>

Ho provato la soluzione pdftk e ho riscontrato problemi sia su SnowLeopard che su Tiger.L'installazione su Tiger ha effettivamente causato il caos nel mio sistema e mi ha lasciato incapace di eseguire script/server, fortunatamente è una macchina ritirata dallo sviluppo web.

Successivamente ho trovato un'altra opzione:- iscriviti a PDF.L'installazione è stata assolutamente indolore e veloce e funziona perfettamente.

Ho anche provato GhostScript e ha fallito miseramente (non riuscivo a leggere i caratteri e mi sono ritrovato con PDF che contenevano solo immagini).

Ma se stai cercando una soluzione a questo problema, potresti provare joinPDF.

Non penso che Ruby abbia gli strumenti per questo.Potresti controllare ImageMagick e Cairo.ImageMagick può essere utilizzato per rilegare più immagini/documenti insieme, ma non sono sicuro del caso PDF.

D'altra parte, ci sono sicuramente strumenti Windows (commerciali) per fare questo genere di cose.

Io stesso uso Cairo per generando PDF.Se i PDF provengono da te, forse questa sarebbe una soluzione (supporta più pagine).Buona fortuna!

Suggerirei di guardare il codice per PDFCreator (VB, se non sbaglio, ma non dovrebbe importare dato che implementeresti semplicemente un codice simile in un'altra lingua), che utilizza GhostScript (licenza GNU).Oppure semplicemente scavare direttamente nello stesso GhostScript;è disponibile anche un livello di facciata chiamato GhostPDF, che può fare quello che vuoi.

Se puoi controllare GhostScript con VB, puoi farlo con C, il che significa che puoi farlo con Ruby.

Ruby ha anche IO.popen, che ti permette di chiamare programmi esterni che possono farlo.

Qualsiasi codice Ruby per fare ciò in un'applicazione reale sarà probabilmente dolorosamente lento.Vorrei provare a dare la caccia agli strumenti Unix per svolgere il lavoro.Questa è una delle bellezze dell'utilizzo di Mac OS X, ha funzionalità PDF molto veloci integrate.La prossima cosa migliore è probabilmente uno strumento Unix.

In realtà, ho avuto un certo successo con rtex.Se guardi Qui troverai qualche informazione a riguardo.È molto più veloce di qualsiasi libreria Ruby che ho usato e sono abbastanza sicuro che latex abbia una funzione per importare dati PDF da altre fonti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top