ImageMagickを使って、PDFファイルからJpegのサムネイルを作ってるのだけど
PDFのカラーモードが『RGB』の場合は問題ないのだけど、『CMYK』の場合はreadImage()でエラーになる。
開発で使ってる環境は
↓こんな感じ
- CentOS 5.4
- PHP 5.3.2
example.php
$filePath = '/tmp/foo.pdf';
$type = 'jpeg';$maxH = 125;
$maxW = 175;
$image = new imagick();
$image->readImage($filePath);
$image->setImageFormat($type);
$image->thumbnailImage($maxW, $maxH, true);
$result = $image->writeImage($thumnailPath);$image->destroy();
apache:error.log
ESP Ghostscript 815.02: Unrecoverable error, exit code 1
[Mon Dec 06 16:11:18 2010] [error] [client xxx.xxx.xxx.xxx] Postscript delegate failed `/tmp/magick-XXPtZKJQ': /magick-XXQBr4Ok.cache @ error/pdf.c/ReadPDFImage/638, referer: http://dev.kachina.local/example.php
んで、いろいろ調べてみたらimagickでPDFを読み込む時に、『ghostscript』ってのを使ってて CentOS5.4のyumリポジトリから提供されてる最新が『8.15』なのさ。 こいつが『8.71』以前だと、この現象が発生することが判明。
回避策は、バージョンを上げちゃうこと。
回避策
まずは、バージョンの確認・バックアップ取得
[root@devsrv ~]# gs -v
ESP Ghostscript 8.15.2 (2006-04-19)
Copyright (C) 2004 artofcode LLC, Benicia, CA. All rights reserved.
[root@devsrv ~]# mv /usr/bin/gs /usr/bin/gs_8.15.2
んでもって、ghostscript-8.71のダウンロード・インストール
[root@devsrv ~]# cd /usr/local/src/
[root@devsrv src]# wget http://ghostscript.com/releases/ghostscript-8.71.tar.gz
[root@devsrv src]# tar xvzf ghostscript-8.71.tar.gz
[root@devsrv src]# cd ghostscript-8.71
[root@devsrv ghostscript-8.71]# ./configure
[root@devsrv ghostscript-8.71]# make
[root@devsrv ghostscript-8.71]# make install
[root@devsrv ghostscript-8.71]# ln -s /usr/local/bin/gs /usr/bin/gs
最後に更新バージョンの確認
[root@devsrv ~]# gs -v
GPL Ghostscript 8.71 (2010-02-10)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
これで、apacheを再起動したらバッチ