2010-06-04 21 views

Antwort

19

ImageMagick kann das mit PDFs tun. Vermutlich RMagick kann es auch, aber ich bin nicht vertraut damit.

EDIT:

Der Code aus dem Beitrag, den Sie verknüpft:

require 'RMagick' 
pdf = Magick::ImageList.new("doc.pdf") 

pdf ist ein ImageList Objekt, das viele seiner Methoden Array den documentation Delegierten nach. Sie sollten in der Lage sein, über pdf zu iterieren und write aufrufen, um die einzelnen Bilder in Dateien zu schreiben.

+0

Kein Zweifel ... Ich frage mich nur, ob jemand einen Beispielcode hat. – tybro0103

2

Da ich einen Weg nicht finden kann mit PDF-Dateien auf einer Pro-Seite-Basis in RMagick zu beschäftigen, würde ich zuerst Spaltung der PDF in Seiten mit pdftk'sburst Befehl empfehlen, dann mit den einzelnen Seiten in RMagick beschäftigen. Dies ist wahrscheinlich weniger performant als eine All-in-One-Lösung, aber leider bietet sich keine All-in-One-Lösung an.

Es gibt auch PDF::Toolkit für Ruby, die in pdftk einhakt, aber ich habe es nie benutzt.

51

Mit RMagick selbst können Sie Bilder für verschiedene Seiten erstellen.

Oben erhalten Sie ein Array arr [], das einen Eintrag für die entsprechenden Seiten haben wird. Sie, wenn Sie ein Bild (jpg) von 5. Seite generieren möchten, können Sie tun:

im[4].write(pdf_file_name + ".jpg") 

Aber das komplette pdf lädt, so langsam.

Alternativ, wenn Sie Bild der fünften Seite erstellen möchten und nicht wollen, die komplette PDF-Datei zu laden, gehen Sie wie folgt:

require 'RMagick' 
pdf_file_name = "test.pdf[5]" 
im = Magick::Image.read(pdf_file_name) 
im[0].write(pdf_file_name + ".jpg") 
+2

oh dass ich dir mehr als eine Stimme geben konnte :) – baash05

+2

Danke für Tipp auf den Index im Pfad! Funktioniert gut, obwohl es ein schmutziger Hack ist;) – SciPhi

+2

Das ist großartig, aber ich blieb lange stecken, ohne zu wissen, dass ich "brew install ghostscript" erstellen musste, damit der Leser mehr als ein leeres Array zurückgibt. Wenn Sie ein OSX-Benutzer sind, wird es möglicherweise auch nicht für Sie Standard sein. –