Ich verwende derzeit ImageMagick, um PDFs in JPEG-Rasterbilder zu konvertieren. Es ist schmerzhaft langsam und verbraucht viel Speicher.
Der Befehl, den ich benutzte, war:
convert -geometry 1024x768 -density 200 -colorspace RGB foo.pdf bar%02d.jpg
Ich denke, dass es langsam ist, weil es Ghostscript verwendet. Aber es muss einen schnelleren Weg geben, dies auf einer Linux-Box zu tun.
Hat jemand eine bessere Lösung gefunden?
pdf
imagemagick
ghostscript
mat3001
quelle
quelle
Antworten:
Die direkte Verwendung von Ghostscript (anstelle des
convert
Befehls von ImageMagick , der Ghostscript indirekt aufruft) ist in der Tat schneller. Außerdem erhalten Sie mehr Kontrolle über die Konvertierungsparameter. Versuchenwo
-o
: bestimmt den Ausgabepfad + den Dateinamen (und speichert die Verwendung von-dBATCH -dNOPAUSE
)-dJPEGQ
: Setzt die JPEG-Qualität auf 95%-r
: Setzt die Auflösung auf 600 dpi-g
: Legt die Bildgröße auf 4960 x 7016 Pixel fest-sDEVICE
: Legt die Ausgabe als JPEG festDieser Befehl wird wahrscheinlich immer noch zu langsam für Sie sein und Dateien erstellen, die größer als erwartet sind. Versuchen Sie dies für kleinere Dateigrößen und eine schnellere Ausführung (was wahrscheinlich der Ausgabequalität Ihrer Befehlszeile nahe kommt
convert
):oder auch
(Dies ergibt eine Auflösung von 72 dpi, oft gut genug für die meisten Bildschirme und für die meisten Webanwendungen).
quelle
Übrigens ist einer der Gründe, warum ImageMagick so viel langsamer ist, dass es Ghostscript zweimal aufruft. PDF => PNG wird nicht auf einmal konvertiert, sondern es werden zwei verschiedene Schritte ausgeführt:
PDF => PostScript
Konvertierung.PostScript => PNG
Konvertierung verwendet.Sie können die detaillierten Einstellungen der "Delegaten" von ImageMagick (die externen Programme, die ImageMagick verwendet, wie z. B. Ghostscript) durch Eingabe eingeben
(Auf meinem System ist das eine Liste von 32 verschiedenen Befehlen.) Um zu sehen, welche Befehle zum Konvertieren in PNG verwendet werden, verwenden Sie Folgendes:
Ok, das war für Linux. Wenn Sie unter Windows arbeiten, versuchen Sie Folgendes:
Sie werden feststellen, dass IM PNG nur über PS- oder EPS-Eingaben erzeugt. Wie erhält IM (E) PS aus Ihrem PDF? Einfach:
Ah! Es verwendet Ghostscript, um eine PDF => PS-Konvertierung durchzuführen, und verwendet Ghostscript erneut, um eine PS => PNG-Konvertierung durchzuführen. Funktioniert, ist aber nicht der effizienteste Weg, wenn Sie wissen, dass Ghostscript PDF => PNG auf einmal ausführen kann . Und schneller. Und in viel besserer Qualität.
Über IMs Umgang mit der PDF-Konvertierung in Bilder über den Ghostscript-Delegaten sollten Sie in erster Linie zwei Dinge wissen:
-density 600
einenconvert
Parameter hinzuzufügen , der Ghostscript anweist, eine Auflösung von 600 dpi für die Bildausgabe zu verwenden.PDF => PS
und dannPS => PNG
ein echter Fehler. Weil Sie nie gewinnen und die Qualität im ersten Schritt behalten, aber sehr oft etwas verlieren. Gründe dafür:(Umrechnung in die entgegengesetzte Richtung, dafür
PS => PDF
ist das nicht so kritisch ....)Aus diesem Grund hatte ich vorgeschlagen, dass Sie Ihre PDF-Dateien mit Ghostscript auf einmal in PNG (oder JPEG) konvertieren. Und verwenden Sie die neueste Version 8.71 (bald verfügbar : 9.00) von Ghostscript ...
quelle
Das Programm
pdftoppm
aus dem Poppler-Paket kann auch JPEGs erstellen, und für mich ist es ungefähr doppelt so schnell wiegs
oben beschrieben:quelle
Nach meiner Erfahrung ist MuPDF viel schneller als Ghostscript. Es ist ein viel neueres Projekt ohne viel Cruft in gs. Versuchen Sie, ob es für Ihren Anwendungsfall passt!
mudraw -w 1024 -h 768 -r 200 -c rgb -o bar%d.png foo.pdf
Wenn Sie eine ältere Linux-Distribution haben und mupdf-tools aus dem Repository installiert haben, wird diese
mudraw
möglicherweise weiterhin aufgerufenpdfdraw
Sie müssen dann das PNG in JPEG konvertieren, indem Sie beispielsweise imagemagick verwenden. Aber es wird immer noch schneller als Ghostscript sein.
quelle