LoginSignup
9
12

More than 5 years have passed since last update.

ImagickでPDF複数ページ画像化でハマった点

Posted at

PDFを画像化するかーという時にお世話になったこのサイト
http://ameblo.jp/linking/entry-10997312536.html

PDFが画像1枚ならこのサイトの情報だけで2014年現在も問題ないんですが、
ここにきて初めて複数ページのPDFの画像変換をやることになりまして
このサイトの通りにコーディングしたところ、Exception Errorになりました。

set ImageIndex method is deprecated and its use should be avoided

なんじゃろなーと思いながら上記エラーメッセージで検索するもよくわからない。
そしてようやくマニュアルに返る事を思いつきます。

このメソッドは非推奨です。
このメソッドは非推奨です。
このメソッドは非推奨です。

ほう。じゃあ代わりに紹介されているsetIteratorIndexでも使ってみますか?

$im = new imagick();
$im->setResolution(144,144);
$im->readimage($file_path . '/' . $pdf_name);
$page_count = $im->getImageScene();

for($i = 0; $i <= $page_count-1; $i++) {
    $im->setIteratorIndex($i);
    $im->setImageFormat('jpeg');
    $im->writeimage($file_path.'/'.$image_name . $i . $extension);
}

$im->destroy();

$jpg = array();
for($i = 0; $i <= $page_count - 1; $i++) {
    $jpg[] = 'data:image/png;base64,' . base64_encode(file_get_contents($file_path . '/'  . $image_name . $i . $extension));
    unlink($file_path.'/'.$image_name . $i . $extension);
}
$this->view->jpgs = $jpg;

上々ね。
というわけで気持ちよくなったついでにSmarty側のコードも。

{foreach item=jpg from=$jpgs}
    <img src="{$jpg}" alt="file" class="image-view"><br />
{/foreach}

View側は別におもしろくなかった。
それではお疲れ様でした。よい開発ライフを。

9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12