コマンドは以下の通り。
convert -quality 75 -density 600 -geometry 858x1215 1375856384.pdf 1375856384.jpg
エラーの内容は以下の通り。
**** Warning: can't process font stream, loading font by the name. **** Error reading a content stream. The page may be incomplete. Error: /typecheck in --run-- Operand stack: --dict:16/16(L)-- 1.0 1.0 --dict:16/16(L)-- 1 10 HiraKakuPro-W6 8.5 --dict:5/5(L)-- --dict:5/5(L)-- HiraKakuPro-W6 --dict:10/12(ro)(G)-- --nostringval-- CIDFontObject --dict:7/7(L)-- --dict:7/7(L)-- 12 Adobe-Japan1 Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1894 1 3 %oparray_pop 1893 1 3 %oparray_pop 1877 1 3 %oparray_pop --nostringval-- --nostringval-- 2 1 1 --nostringval-- %for_pos_int_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- %array_continue --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- Dictionary stack: --dict:1161/1684(ro)(G)-- --dict:1/20(G)-- --dict:82/200(L)-- --dict:82/200(L)-- --dict:108/127(ro)(G)-- --dict:291/300(ro)(G)-- --dict:23/30(L)-- --dict:6/8(L)-- --dict:25/40(L)-- --dict:20/25(L)-- --dict:5/5(L)-- --dict:10/15(L)-- Current allocation mode is local Last OS error: 2 GPL Ghostscript 9.04: Unrecoverable error, exit code 1 convert: Postscript delegate failed `/hogehoge/1375856384.pdf': そのようなファイルやディレクトリはありません @ pdf.c/ReadPDFImage/611. convert: missing an image filename `/hogehoge/1375856384-000001.jpg' @ convert.c/ConvertImageCommand/2806.
他のpdf画像では全く問題なく変換されているので、そのpdfに問題があるかと思い、色々調べてみました。
とりあえずエラーの内容としては 「Ghostscript 9.04: Unrecoverable error」と書かれていたので、
Ghostscrip周りを調べてみたら、以下のようなサイトがあった。
http://bugs.ghostscript.com/show_bug.cgi?id=692499
Ghostscriptのバグっぽい内容の記述があるのですが、
英語で書いてあってよくわからず、とりあえず一番最後にアップグレードしろと書かれていたので、
ローカルサーバで試してみた。
現状入っていたGhostscriptのバージョンが8.15と大分古かったので、一気に最新版である9.07にアップデート。
最初はyumからアップデートしようとしたが、なかったのでrpmを探してみたが、
md5のチェックサムが一致しないと。。。 リビルドの仕方がよくわからなかったので、ソースだけ抜き出してインストールするはめに。
どうやらconfigureオプションに「--disable-compile-inits」と記述をしておかないとインストール後に設定変更できなくなるらしいです。
実際に指定したオプションは以下の通り。
./configure --disable-compile-inits --with-x --with-drivers=ALL --without-luratech --with-libiconv=gnu
で、makeしてmake installしたら入った。
gs -v
Ghostscriptのバージョンを確認し9.07に変わっていることを確認。
同じコマンドを実行。
問題なく変換出来た。
この時点で最初の8.15で変換出来るかどうか試しておけばよかったと激しく後悔。
とはいえもう遅いので、とりあえずバージョンを9.05に落としてみた。
こちらもソースから落としてきて、同様のconfigureオプションを指定しインストール。
バージョンが変わったことを確認して同じコマンドを実行。
変換出来てしまった・・・。
こうなってくると問題はImageMagickの方かもということで、ImageMagickをアップデート。
現状自分のローカルサーバに入っているImageMagickのバージョンは6.2.8。
検証、本番サーバに入っているImageMagickのバージョンは6.5.5-6。
なので、とりあえず検証サーバと同じバージョンにアップデート。
こちらもソースからインストール。configureオプションは特に指定していません。
convert -version
バージョンが変わっているかを確認。
そして変換!
エラー。
再現出来ました。
やはりImageMagickのバージョンのせいらしい。
ImageMagickを最新のバージョン(6.8.6-8)にアップデートしてみる。
変換→エラー。
どうやら最新のバージョンでも変換出来ないらしい。
バージョンを一番最初にインストールされていたバージョンに落とすしか対応方法は無さそうな・・・。
ちなみに変換出来なかった原因はpdfファイルの中に編集可能なテキストエリアがあったため、変換出来なかったっぽいです。その部分を削除し変換コマンドをかけたら問題のバージョンでも問題なく変換出来ました。
結果的に対応不要となりましたが、本当に対応が必要になった時にダウングレードして対応出来るのかは引き続き調べてみる。