‘ImageMagick’ タグのついている投稿

ImageMagickのPDF変換用gsコマンドを差し替える

例によってRedHat EL4にて、yumでconvertを入れたものの、バージョンが6.4.6と古く、Powerpointで作成したPDFがエラーになる。

エラー内容はこんな感じ。

$ convert -channel RGB ./test.pdf ./test.jpg

   **** This file has a corrupted %%EOF marker, or garbage after the %%EOF.
   **** The file was produced by Microsoft? PowerPoint? 2010:
   **** please notify the author of this software
   **** that the file does not conform to Adobe's published PDF
   **** specification.  Processing of the file will continue normally.

Error: /rangecheck in --.buildshading2--
Operand stack:
   --dict:8/8(L)--   --dict:3/5(L)--   --nostringval--   false   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --dict:3/4(L)--   --nostringval--   --dict:5/5(L)--
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   1   3   %oparray_pop   --nostringval--   2   1   2   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   1   %stopped_push   --nostringval--   --nostringval--   --nostringval--   1   %stopped_push   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--   --nostringval--   --nostringval--   3   10   %oparray_pop   --nostringval--   --nostringval--   false   1   %stopped_push   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1069/1123(ro)(G)--   --dict:0/20(G)--   --dict:93/200(L)--   --dict:93/200(L)--   --dict:97/127(ro)(G)--   --dict:229/230(ro)(G)--   --dict:19/24(L)--   --dict:4/6(L)--   --dict:19/20(L)--   --dict:3/5(L)--
Current allocation mode is local
GNU Ghostscript 7.07: Unrecoverable error, exit code 1
convert: Postscript delegate failed `./test.pdf': No such file or directory @ pdf.c/ReadPDFImage/612.
convert: missing an image filename `./test.jpg' @ convert.c/ConvertImageCommand/2710.

で、見る限り、GhostScriptのエラーのようなので、gsのバージョンを調べてみると、

$ gs -v

GNU Ghostscript 7.07 (2003-05-17)

Copyright (C) 2003 artofcode LLC, Benicia, CA.  All rights reserved.

というわけで、GhostScriptのコマンドの最新版を別にインストールして対応。その際、元のgsコマンドを入れ替えるわけにいかなかったので、ImageMagickから読み込むgsコマンドのファイルだけを指定できないかと思ったら、ImageMagickはXMLでコマンドを定義していたんですね。

ImageMagick • View topic – manually set delegate path to gs (ghostscript)

各種コマンドのオプションがImageMagick-6.4.6/config/delegates.xmlに記述されています。

gsコマンドの箇所を絶対パスに書き換えてやるだけで完了。便利。