例によって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コマンドの箇所を絶対パスに書き換えてやるだけで完了。便利。
タグ: ImageMagick, PDF
具体的にImageMagick-6.4.6/config/delegates.xmlのどこをどのように書き換えればいいのでしょうか?
ImageMagick • View topic – manually set delegate path to gs (ghostscript)
を読んでもいまいちよくわかりません。
こんにちわ。
基本的にはgsコマンドを呼んでいる個所をすべて書き換えてしまえばいいと思います。何箇所かあるので。
> command='”gs” ~
などとなっている場所を
> command='”/新しいパス/gs” ~
にしてやるだけです。
[…] ImageMagickのPDF変換用gsコマンドを差し替える […]