ImageMagick - Konvertieren Sie mehrseitiges PDF in animiertes GIF

9

Ich habe eine zweiseitige PDF-Datei, die ich in eine animierte GIF-Datei konvertieren möchte. Ein Beitrag auf dem TeX StackExchange enthält den folgenden ImageMagick-Einzeiler:

convert -verbose -delay 50 -loop 0 -density 300 file.pdf file.gif

Wenn ich dies auf einer Linux-Box versuche ( convert --versiongibt 6.5.4-7 2012-04-10), erhalte ich dieses Protokoll:

"gs" -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=0 "-sDEVICE=pnmraw" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r300x300"  "-sOutputFile=/tmp/magick-XX30a4nG" "-f/tmp/magick-XX690OkA" "-f/tmp/magick-XX3GCKhu"
/tmp/magick-XX30a4nG[0] PNM 1512x1134 1512x1134+0+0 8-bit DirectClass 9.811mb
/tmp/magick-XX30a4nG[1] PNM 1512x1134 1512x1134+0+0 8-bit DirectClass 9.811mb
file.pdf[0] PDF 1512x1134 1512x1134+0+0 16-bit DirectClass 9.811mb
file.pdf[0] PDF 1512x1134 1512x1134+0+0 16-bit DirectClass 9.811mb
file.pdf=>file-linux.gif[0] PDF 1512x1134 1512x1134+0+0 16-bit Palette PseudoClass 111c 2.620u 0:03

[ gsist GPL Ghostscript 8.70 (2009-07-31)] und es funktioniert wie erwartet. Wenn ich dies jedoch auf meinem Mac mit der von macports (6.8.0-7 2013-01-04) installierten ImageMagick-Suite versuche, wird folgendes Protokoll angezeigt:

"/opt/local/bin/gsx" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r300x300"  "-sOutputFile=/var/folders/kf/t7750q1w8xjcjy0059bpyx180000gq/T/magick-15750GLLaATgky5I1" "-f/var/folders/kf/t7750q1w8xjcjy0059bpyx180000gq/T/magick-15750ljasKifrwJcW" "-f/var/folders/kf/t7750q1w8xjcjy0059bpyx180000gq/T/magick-15750w8mj9AZrkJA8"
/var/folders/kf/t7750q1w8xjcjy0059bpyx180000gq/T/magick-15750GLLaATgky5I1 PNG 1512x1134 1512x1134+0+0 8-bit sRGB 64.5KB 0.050u 0:00.049
file.pdf PDF 1512x1134 1512x1134+0+0 16-bit sRGB 64.5KB 0.000u 0:00.000
file.pdf=>file.gif PDF 1512x1134 1512x1134+0+0 16-bit Palette sRGB 106c 0.410u 0:00.409

[ /opt/local/bin/gsxist GPL GhostScript 9.06 (2012-08-08)] Diesmal hat die resultierende GIF-Datei nur einen Frame, die erste Seite der PDF.

Meine bisherige pdftk file.pdf burstProblemumgehung bestand darin, jede Seite der PDF-Datei in eine eigene Datei aufzuteilen convert [options] pg_*.pdf file.gif. Das funktioniert gut, aber ich würde ein einzeiliges Skript bevorzugen.

Da die Mac-Versionen neuer sind, ist es vermutlich eine Frage der Implementierung. Der einzige große Unterschied, den ich zwischen den beiden sehe, ist -sDEVICE=pnmrawfür die Linux-Version und -sDEVICE=pngalphafür den Mac. Kann ich sagen convert, an welche Optionen Optionen übergeben werden sollen gsx?

Matthew Leingang
quelle
JA ? :), aber um ehrlich zu sein, warum probierst du es nicht einfach aus?
@Borderline: Ich habe versucht -sDEVICE=pnmraw, die convertBefehlszeilenoptionen zu erweitern, und habe die Antwort " Nicht erkannte Option" erhalten.
Matthew Leingang
2
Warum nicht beide Befehle in einem einzigen Zeilenbefehl kombinieren? pdftk file.pdf burst && convert [options pg_*.pdf file.gif Auf diese Weise führt Terminal den zweiten Befehl aus, sobald der erste von Ihnen angeforderte Befehl ausgeführt wurde.
Danijel-James W

Antworten:

3

Der folgende Befehl funktionierte gut für mich aus einem Papier-PDF, an dem ich gearbeitet habe. Der einzige Unterschied zu Ihrem ursprünglichen Befehl besteht darin, den Alphakanal zu deaktivieren:

convert -alpha deactivate -verbose -delay 50 -loop 0 -density 300 paper.pdf file.gif

Ich benutze Version: ImageMagick 6.8.3-3 2013-02-21 Q16 http://www.imagemagick.orgund Homebrew.

Dan Halperin
quelle