あーかいぶすハイディフィニション

ここはもう更新しとらんのじゃ

ImageMagick で PDF を画像に変換する時に ghostscript でハマった

CentOS 6 系に入ってる ghostscript 8.70 だと、convert で pdf から 画像に変換するとき、フォント埋め込み pdf で変換失敗することがあった。

[root@localhost ~]# convert change.pdf after.png
Magick::ImageMagickError (Postscript delegate failed `/tmp/magick-_E4514': No such file or directory @ error/pdf.c/ReadPDFImage/669):

で、なんでだろうなって話をしてて、どうも埋め込みに使用したフォントの種類によってエラーが起きる、ということが判明。

  • ttf フォント:何事も無く変換できる
  • otf フォント:だめ

穀すぞ、みたいな顔して調べたけどさっぱりわからず、見かねた同僚に「変換エラー出てない奴が Ubuntu で ghostscript 9.0.7 だから最新版までいっそ上げてみれば」と言ってくれたので、決断的に作業。

[root@localhost ~]# yum erase ghostscript*
読み込んだプラグイン:downloadonly, fastestmirror
削除処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package ghostscript.x86_64 0:8.70-19.el6 will be 削除
---> Package ghostscript-devel.x86_64 0:8.70-19.el6 will be 削除
---> Package ghostscript-fonts.noarch 0:5.50-23.2.el6 will be 削除
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================================================================================================
 パッケージ                                   アーキテクチャ                    バージョン                               リポジトリー                      容量
================================================================================================================================================================
削除:
 ghostscript                                  x86_64                            8.70-19.el6                              @base                             20 M
 ghostscript-devel                            x86_64                            8.70-19.el6                              @base                             35 k
 ghostscript-fonts                            noarch                            5.50-23.2.el6                            @base                            1.1 M

トランザクションの要約
================================================================================================================================================================
削除                 3 パッケージ

[root@localhost ~]# cd /usr/local/src
[root@localhost ~]# wget http://downloads.ghostscript.com/public/ghostscript-9.15.tar.gz
[root@localhost ~]# tar -zxvf ghostscript-9.15.tar.gz
[root@localhost ~]# cd ghostscript-9.15
[root@localhost ~]# ./configure --prefix=/usr/local
[root@localhost ~]# make
[root@localhost ~]# make install

これで無事 ttf フォントも otf フォントも埋め込んだ pdf が画像に変換できるようになりましたやたー。cifontmap 編集して ghostscript にデフォルトで使えるフォントを上書きさせる、みたいな解決方法っぽいのもウェブ上にあったんだけど、試したら駄目だったので、フォントマップとかじゃなく、ghostscript の PDF 展開部分に拡張があったんすかね?何はともあれ調べても出てこなくてブッチッパしたら治ったので、これで良しとする。