Tôi có một tệp PDF hai trang mà tôi muốn chuyển đổi thành tệp GIF hoạt hình. Một bài đăng trên TeX StackExchange cung cấp cho ImageMagick một lớp lót sau:
convert -verbose -delay 50 -loop 0 -density 300 file.pdf file.gif
Nếu tôi thử điều này trên một hộp linux ( convert --version
đưa ra 6.5.4-7 2012-04-10) tôi sẽ nhận được nhật ký này:
"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
là GPL Ghostscript 8.70 (2009-07-31)] và nó hoạt động như mong đợi. Nhưng nếu tôi thử điều này trên máy mac của mình, sử dụng bộ ImageMagick được cài đặt bởi macports (6.8.0-7 2013-01-04), tôi nhận được nhật ký này:
"/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
là GPL GhostScript 9.06 (2012-08-08)] Lần này, tệp GIF kết quả chỉ có một khung, trang đầu tiên của PDF.
Cách giải quyết của tôi cho đến nay là sử dụng pdftk file.pdf burst
để tách từng trang PDF thành tệp riêng của mình convert [options] pg_*.pdf file.gif
. Điều này hoạt động tốt, nhưng tôi thích một kịch bản một dòng.
Các phiên bản mac gần đây hơn, tôi đoán đó là vấn đề thực hiện. Sự khác biệt lớn duy nhất tôi thấy giữa hai là -sDEVICE=pnmraw
cho phiên bản linux và -sDEVICE=pngalpha
mac. Tôi có thể nói convert
để vượt qua các tùy chọn để gsx
?
-sDEVICE=pnmraw
vào các convert
tùy chọn dòng lệnh và nhận được phản hồi "tùy chọn không nhận dạng".
pdftk file.pdf burst && convert [options pg_*.pdf file.gif
Bằng cách này, Terminal sẽ chạy lệnh thứ hai sau khi hoàn thành lệnh đầu tiên bạn yêu cầu.