PHPのImagick(ImageMagick)を使ってPDFファイルを画像に変換することができます。
$imagick = new Imagick();
$imagick->readimage($pdf_file_name);
for ($i = 0; $i < $imagick->getImageScene(); $i++) {
$imagick->setIteratorIndex($i);
$imagick->setImageFormat('jpeg');
$imagick->writeimage($image_file_path . '-page' . $i . '.jpg);
}
これ、結構リソース使うんですよね。ページ数の多いPDFを変換しようとしたら、memory_limitやmax_execution_timeに引っかかって…という経験ありませんか?
特定ページだけを画像化したい場合限定(1ページ目だけ変換したいとかありますよね?)ですが、次のコードでサクッとできます。
$imagick = new Imagick();
$imagick->readImage($pdf_file_name . '[0]');
$imagick->setImageFormat('jpg');
$imagick->writeimage($image_file_path . '.jpg');
参考: Convert pdf to image with imagemagick in php
readImage()に渡すファイル名の後に”[]で囲ってページ番号(0スタート)をくっつけて渡す”。という微妙な感じですが、ImageMagickのやり方を忠実に再現しているということですかね。
応用すれば、リソース消費を抑えつつページ数の多いPDFを全て変換することもできそうですね。
こんなことが出来るんですね。
ちょうど仕事で必要だったので助かりました。
試してみます。