ImageMagick - Konwertuj pdf na wiele stron na animowany gif

9

Mam dwustronicowy plik PDF, który chciałbym przekonwertować na animowany plik GIF. Post TeX Stack Exchange Network daje następujące ImageMagick jedno-liner:

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

Jeśli spróbuję tego na Linuksie ( convert --versiondaje 6.5.4-7 2012-04-10), otrzymam ten dziennik:

"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

[ gsto GPL Ghostscript 8.70 (2009-07-31)] i działa zgodnie z oczekiwaniami. Ale jeśli wypróbuję to na moim komputerze Mac, używając pakietu ImageMagick zainstalowanego przez Macports (6.8.0-7 2013-01-04), otrzymam ten dziennik:

"/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/gsxto GPL GhostScript 9.06 (2012-08-08)] Tym razem wynikowy plik GIF ma tylko jedną ramkę, pierwszą stronę pliku PDF.

Moim dotychczasowym obejściem było pdftk file.pdf burstrozdzielenie każdej strony pliku PDF na własny plik convert [options] pg_*.pdf file.gif. Działa to dobrze, ale wolałbym skrypt jednowierszowy.

Wydaje się, że wersje Mac są nowsze, to kwestia implementacji. Jedyną zasadniczą różnicą, którą widzę między nimi, jest -sDEVICE=pnmrawwersja Linux i -sDEVICE=pngalphaMac. Czy mogę powiedzieć, convertaby przekazać opcje gsx?

Matthew Leingang
źródło
TAK ? :), ale szczerze mówiąc, dlaczego tego nie wypróbujesz!
@Borderline: Próbowałem dodać -sDEVICE=pnmrawdo convertopcji wiersza polecenia i otrzymałem odpowiedź „nierozpoznana opcja”.
Matthew Leingang
2
Dlaczego nie połączyć obu poleceń w jedno wierszowe polecenie? pdftk file.pdf burst && convert [options pg_*.pdf file.gif W ten sposób Terminal uruchomi drugie polecenie po wykonaniu pierwszego żądanego polecenia.
Danijel-James W

Odpowiedzi:

3

Poniższe polecenie działało dla mnie dobrze z papierowego pliku PDF, nad którym pracowałem. Jedyną różnicą w stosunku do oryginalnego polecenia jest dezaktywacja kanału alfa:

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

Używam Version: ImageMagick 6.8.3-3 2013-02-21 Q16 http://www.imagemagick.orgi homebrew.

Dan Halperin
źródło