2008-12-01 17 views
39

Ich versuche, Python verwenden, um eine mehrseitige PDF in eine Reihe von JPEGs zu konvertieren. Ich kann das PDF mit den verfügbaren Tools leicht in einzelne Seiten aufteilen, aber ich konnte nichts finden, was PDFs in Bilder umwandeln könnte.Konvertieren einer PDF in eine Reihe von Bildern mit Python

PIL funktioniert nicht, da es keine PDFs lesen kann. Die zwei Optionen, die ich gefunden habe, verwenden entweder GhostScript oder ImageMagick durch die Shell. Dies ist keine praktikable Option für mich, da dieses Programm plattformübergreifend sein muss, und ich kann nicht sicher sein, dass eines dieser Programme auf den Rechnern verfügbar sein wird, auf denen es installiert und verwendet wird.

Gibt es irgendwelche Python-Bibliotheken, die das können?

+0

Haben Sie jemals eine Lösung gefunden? Ich habe es geschafft, zur Arbeit zu kommen, aber ich kann ImageMagick nicht dazu bringen, Seiten zu respektieren. – stormlifter

+0

Hoffe das hilft - [http://stackoverflow.com/questions/34129995/pdf-to-raw-image] (http://stackoverflow.com/questions/34129995/pdf-to-raw-image) –

Antwort

17

ImageMagick hat Python bindings.

+0

I Ich möchte gerne die ImageMagick-Bibliothek in Ihr Projekt einbinden - stellen Sie einfach sicher, dass Sie die Lizenzbedingungen gelesen haben, damit Sie die passenden Dateien in Ihre Readme-Datei schreiben können. – Coderer

+13

Pflege, um zu erläutern, welche Bindungen nützlich sein könnten? –

4

Sie können die Ghostscript-Abhängigkeit nicht vermeiden. Selbst Imagemagick setzt Ghostscript für seine PDF-Lesefunktionen ein. Der Grund dafür liegt in der Komplexität des PDF-Formats: Ein PDF enthält nicht nur Bitmap-Informationen, sondern vor allem Vektorformen, Folien etc. Außerdem ist es sehr komplex herauszufinden, welche dieser Objekte auf welcher Seite erscheinen.

So ist das korrekte Rendern einer PDF-Seite für eine reine Python-Bibliothek eindeutig nicht möglich.

Die gute Nachricht ist, dass Ghostscript auf vielen Windows- und Linux-Systemen vorinstalliert ist, da es auch von all diesen PDF-Druckern (außer Adobe Acrobat) benötigt wird.

1

Wenn Sie Linux verwenden, wird in einigen Versionen das Befehlszeilenprogramm 'pdftopbm' mitgeliefert. Check out netpbm

4

Hier ist, was für mich gearbeitet, um den Python ghost Modul (installiert von '$ pip installiert ghost'):

import ghostscript 

def pdf2jpeg(pdf_input_path, jpeg_output_path): 
    args = ["pdf2jpeg", # actual value doesn't matter 
      "-dNOPAUSE", 
      "-sDEVICE=jpeg", 
      "-r144", 
      "-sOutputFile=" + jpeg_output_path, 
      pdf_input_path] 
    ghostscript.Ghostscript(*args) 

ich auch Ghostscript 9.18 installierte auf meinem Computer und es hätte wahrscheinlich anders nicht funktioniert.

+0

Dies scheint das neue Bild zu erstellen, und ich kann die PDF-Miniaturansicht sehen, aber aus irgendeinem Grund schließt es nicht die Datei des neuen JPEG erstellt. Ich habe diese Ausgabe von Python '##### 246643328 c_void_p (246643328L)' irgendwelche Ideen? – Jed

+0

können Sie helfen, mein Problem in diesem Fall zu lösen? https://stackoverflow.com/questions/44448552/python-ghostscript-not-closing-output-file – Jed

+1

Ghostscript scheint keine Unterstützung für Python3 zu haben – unlockme

Verwandte Themen