У меня есть двухстраничный PDF-файл, который я хочу преобразовать в анимированный GIF-файл. Пост на TeX StackExchange дает следующее ImageMagick Однострочник:
convert -verbose -delay 50 -loop 0 -density 300 file.pdf file.gif
Если я попробую это на linux box ( convert --version
выдает 6.5.4-7 2012-04-10), я получаю этот журнал:
"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
[ gs
это GPL Ghostscript 8.70 (2009-07-31)], и он работает как ожидалось. Но если я попробую это на своем Mac, используя пакет ImageMagick, установленный macports (6.8.0-7 2013-01-04), я получу этот журнал:
"/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/gsx
это GPL GhostScript 9.06 (2012-08-08)] На этот раз полученный GIF-файл содержит только один кадр - первую страницу PDF.
До сих пор мой обходной путь заключался в том, pdftk file.pdf burst
чтобы разделить каждую страницу PDF на отдельный файл convert [options] pg_*.pdf file.gif
. Это прекрасно работает, но я бы предпочел однострочный скрипт.
Версии Mac более свежие, я думаю, это вопрос реализации. Единственное существенное различие, которое я вижу между ними, -sDEVICE=pnmraw
касается версии -sDEVICE=pngalpha
для Linux и для Mac. Могу ли я сказать, convert
чтобы передать параметры gsx
?
-sDEVICE=pnmraw
параметры convert
командной строки и получил ответ «нераспознанная опция».
pdftk file.pdf burst && convert [options pg_*.pdf file.gif
Таким образом, Терминал запустит вторую команду после завершения первой запрошенной вами команды.