PDFをAS3のHTMLLoaderやStageWebViewで表示しても、BitmapDataとして取得できない。ので、サーバー上のPHPで変換することにした。
ImageMagickというソフトウェアを使うと良い、ということがわかった。PHPではIMagickという名前で使えるとのこと。
さくらインターネットのレンタルサーバーを使って実行するには、まず、php.iniにextension=imagick.soを追加する。
そんで、以下のコードをpdf2png.phpとか名前をつけてアップーロード。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php // PDFをpng,jpgに変換する。 // pdf2png.php?filename=http://www.tokyo-odaiba.net/map/pdf/map.pdf&resolution=72&format=jpg // 参考 // http://php.net/manual/ja/book.imagick.php $filename = isset($_GET["filename"])?$_GET["filename"]:"http://www.tokyo-odaiba.net/map/pdf/map.pdf"; $resolution = isset($_GET["resolution"])?$_GET["resolution"]:96; $format = isset($_GET["format"])?$_GET["format"]:'png'; // 小文字に変換 $format = mb_strtolower($format); if($format == 'jpg'){ $format = 'jpeg'; } $image = new Imagick(); // pdf,epsの場合は解像度を指定できる。 $image->setResolution($resolution,$resolution); $image->readImage($filename); $image->setImageFormat($format); //$image->resizeImage(2048,2048,4,1,true);//アンチエイリアスをかける // 画像を出力 header("Content-Type: image/".$format); echo $image; // destroy()は非推奨なのでclear() $image->clear(); ?> |
引数をつけると、pdfの指定や解像度、フォーマットの指定ができる。
ただ、pdfが複数ページの場合の処理をやろうとしたが、できなかった。次回への宿題。