ImageMagick - Перетворіть багатосторінковий PDF у анімований gif


9

У мене є двосторінковий PDF-файл, який я хотів би перетворити в анімований GIF-файл. Пост на TeX StackExchange дає наступне ImageMagick однострочнікі:

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

Якщо я спробую це на вікні linux ( 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у версії linux та -sDEVICE=pngalphamac. Чи можу я сказати, convertщоб передавати варіанти gsx?


ТАК ? :), якщо чесно, чому ви просто не пробуєте це!

@Borderline: Я спробував додати -sDEVICE=pnmrawдо параметрів convertкомандного рядка і отримав відповідь "нерозпізнаний варіант".
Метью Лейнганг

2
Чому б не об'єднати обидві команди в одну командну лінію? pdftk file.pdf burst && convert [options pg_*.pdf file.gif Таким чином, Terminal запустить другу команду після того, як виконає першу команду, яку ви просили.
Danijel-James W

Відповіді:


3

Наступна команда добре працювала для мене з паперового PDF, над яким я працював. Єдина відмінність від вашої оригінальної команди - це відключення альфа-каналу:

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

Я використовую Version: ImageMagick 6.8.3-3 2013-02-21 Q16 http://www.imagemagick.orgі домашнє пиво.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.