それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

php imagick でページ指定を簡略化して pdf を高速に処理する

ruby で出来たので、php でもできるかなと思って調べてみたら。

<?php
<?php 
$imagick = new Imagick(); 
$imagick->readImage('myfile.pdf[0]'); 
$imagick = $imagick->flattenImages(); 
$imagick->writeImage('pageone.jpg');
?> 

php のマニュアルにバッチリなコードが書いてあった。

でも動かすの大変だった。

php-magick で pdf を処理するには gsが必要なんだが、gs が入っててもコマンドラインオプションがあわなくて起動しなくて、解決方法を探してる間に時間が過ぎてしまった。

apt で入れた php-magick ではpdf が扱えない。

モジュールの依存関係、とくにphp はちょっとめんどくさいのでpecl 経由入れて解決させるしかないと思うけど、apt で使えないのは不便極まりないな。。。

エラー

PHP Fatal error:  Uncaught exception 'ImagickException' with message 'FailedToExecuteCommand `"gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r72x72"  "-sOutputFile=/tmp/magick-31919s74grPtp69Oe%d" "-f/tmp/magick-31919cbojU1OZVN2V" "-f/tmp/magick-31919lAaYk4BJvvgD"' (-1) @ error/delegate.c/ExternalDelegateCommand/461' in /home/takuya/test.php:7
Stack trace:
#0 /home/takuya/test.php(7): Imagick->readimage('out.pdf')
#1 {main}
  thrown in /home/takuya/test.php on line 7

2016-11-10

debianphp のバージョンアップをしたので無事動かすことが出来た。