No.420


【ImageMagick】ImageMagickでPDFを扱う設定

デフォルトの設定だと取り扱いできないことに注意

 デフォルトの設定だと、PHPのImagick(ImageMagick)でPDFファイルを利用しようとすると下記のエラーが出てしまう。

attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.

 これはImageMagickのセキュリティポリシーが原因。

 ポリシー設定ファイルにはいろいろ定義があるけど、ひとまずPDF関連のものだけ許可すればOK。


ポリシーファイルの変更

 下記のポリシーファイル中の

/etc/ImageMagick-6/policy.xml

 下記のPDFに何もさせない定義を

<policy domain="coder" rights="none" pattern="PDF" />

 次のように読み書き可能な定義に直してやればよい。

<policy domain="coder" rights="read|write" pattern="PDF" />

 Dockerfileとかshellなどで行いたい場合は、sedでやってしまうのが楽。

sed -i -e 's/<policy domain="coder" rights="none" pattern="PDF" \/>/<policy domain="coder" rights="read|write" pattern="PDF" \/>/g' /etc/ImageMagick-6/policy.xml

補足

 PDFの読み書きを行うにはghostscriptパッケージが入っていないとだめなので、これもインストールしておこう。

CentOS

yum install ghostscript

Ubuntu

apt-get install ghostscript