ようやくそこそこ綺麗に出力できるようになったのでメモ。
Imagickでpdfを読み込む前に、解像度を設定しておく必要があります。
その解像度を設定するメソッドは、setresolution($x, $y)です。
$imagick = new Imagick(); $imagick->setresolution(144, 144); // ここで解像度設定!! $imagick->readimage($pdf_path); $page_count = $imagick->getimagescene(); // ページ数を取得 for($i = 0; $i <= $page_count; $i++) { $imagick->setimageindex($i); $imagick->setimageformat('png'); $imagick->writeimage(png_image_path($i)); // 連番を作る関数を適当に作る } $imagick->destroy();
これでphpのImageMagick(Imagick)でpdfを画像に変換しても綺麗に出るようになりました。
解像度を上げすぎると、ファイルサイズがでかくなるのでそこだけ注意が必要です。
PDFファイルのページ数を、$imagick->getimagescene()で取得することができません。
いろいろなサイトに同様の方法が記載してありますが、小生の環境(Linux CentOS5、Php5.3.3
imagick(3.1.2) Imagimagick(6.5.4-7 2014-02-10)では、どの複数ページのPDFでも取得できません。どなたかご教授いただけないでしょうか??
$imagick->getimagescene()の代わりに
$imagick->getNumberImages() はいかがでしょうか。