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