imagickを使ってpdfを画像に変換する

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を全て変換することもできそうですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です