ImageMagick - Convertir un pdf de plusieurs pages en gif animé

9

J'ai un fichier PDF de deux pages que je voudrais convertir en fichier GIF animé. Une publication sur TeX StackExchange donne la ligne unique ImageMagick suivante:

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

Si j'essaye ceci sur une boîte de Linux ( convert --versiondonne 6.5.4-7 2012-04-10) j'obtiens ce log:

"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

[ gsest GPL Ghostscript 8.70 (2009-07-31)] et cela fonctionne comme prévu. Mais si j'essaye ceci sur mon mac, en utilisant la suite ImageMagick installée par macports (6.8.0-7 2013-01-04), j'obtiens ce journal:

"/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/gsxest GPL GhostScript 9.06 (2012-08-08)] Cette fois, le fichier GIF résultant n'a qu'un seul cadre, la première page du PDF.

Jusqu'à présent, ma solution de contournement a été d'utiliser pdftk file.pdf burstpour diviser chaque page du PDF en son propre fichier convert [options] pg_*.pdf file.gif. Cela fonctionne bien, mais je préférerais un script d'une ligne.

Les versions mac étant plus récentes, je suppose que c'est une question d'implémentation. La seule différence majeure que je vois entre les deux est -sDEVICE=pnmrawpour la version linux et -sDEVICE=pngalphapour le mac. Puis-je dire convertde transmettre des options à gsx?

Matthew Leingang
la source
OUI ? :), mais pour être honnête, pourquoi ne pas l'essayer!
@Borderline: J'ai essayé d'ajouter -sDEVICE=pnmrawaux convertoptions de ligne de commande et j'ai obtenu une réponse "option non reconnue".
Matthew Leingang
2
Pourquoi ne pas combiner les deux commandes en une seule ligne? pdftk file.pdf burst && convert [options pg_*.pdf file.gif De cette façon, Terminal exécutera la deuxième commande une fois qu'il aura terminé la première commande que vous avez demandée.
Danijel-James W

Réponses:

3

La commande suivante a bien fonctionné pour moi à partir d'un PDF papier sur lequel j'ai travaillé. La seule différence avec votre commande d'origine est la désactivation du canal alpha:

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

J'utilise Version: ImageMagick 6.8.3-3 2013-02-21 Q16 http://www.imagemagick.orget homebrew.

Dan Halperin
la source