カラーモード『CMYK』のPDF → サムネイル化に失敗

Posted by @kachina_t on Mon, Dec 6, 2010
In Development
Tags development

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を再起動したらバッチ