ImageMagick - Konversi pdf multi halaman ke animasi gif

9

Saya memiliki file PDF dua halaman yang ingin saya konversi menjadi file GIF animasi. Sebuah posting di TeX StackExchange memberikan satu-liner ImageMagick berikut:

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

Jika saya mencoba ini pada kotak linux ( convert --versionmemberikan 6.5.4-7 2012-04-10) saya mendapatkan log ini:

"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

[ gsadalah GPL Ghostscript 8.70 (2009-07-31)] dan berfungsi seperti yang diharapkan. Tetapi jika saya mencoba ini di mac saya, menggunakan ImageMagick suite yang diinstal oleh macports (6.8.0-7 2013-01-04), saya mendapatkan log ini:

"/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/gsxis GPL GhostScript 9.06 (2012-08-08)] Kali ini file GIF yang dihasilkan hanya memiliki satu frame, halaman pertama dari PDF.

Solusi saya sejauh ini telah digunakan pdftk file.pdf burstuntuk membagi setiap halaman PDF ke file sendiri, lalu convert [options] pg_*.pdf file.gif. Ini berfungsi dengan baik, tapi saya lebih suka skrip satu baris.

Versi mac menjadi lebih baru, saya kira ini masalah implementasi. Satu-satunya perbedaan utama yang saya lihat antara keduanya adalah -sDEVICE=pnmrawuntuk versi linux dan -sDEVICE=pngalphauntuk mac. Dapatkah saya memberi tahu convertuntuk meneruskan opsi gsx?

Matthew Leingang
sumber
IYA ? :), tapi jujur ​​saja, kenapa kamu tidak mencobanya saja!
@ Perbatasan: Saya mencoba menambahkan -sDEVICE=pnmrawke convertopsi baris perintah dan mendapat respons "opsi yang tidak dikenal".
Matthew Leingang
2
Mengapa tidak menggabungkan kedua perintah menjadi satu perintah baris? pdftk file.pdf burst && convert [options pg_*.pdf file.gif Dengan cara ini, Terminal akan menjalankan perintah kedua setelah menyelesaikan perintah pertama yang Anda minta.
Danijel-James W

Jawaban:

3

Perintah berikut ini bekerja dengan baik untuk saya dari kertas PDF yang telah saya kerjakan. Satu-satunya perbedaan dari perintah asli Anda adalah menonaktifkan saluran alpha:

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

Saya menggunakan Version: ImageMagick 6.8.3-3 2013-02-21 Q16 http://www.imagemagick.orgdan homebrew.

Dan Halperin
sumber