1. ホーム
  2. linux

[解決済み] ImageMagickセキュリティポリシー「PDF」による変換のブロック

2022-03-19 16:52:21

質問

Imagemagickのセキュリティポリシーが、pdfからpngへの変換を許可していないようです。他の拡張子の変換はうまくいっているようですが、pdfからの変換はできません。imagemagickをインストールしてから、何も設定を変えていないのですが...。OSが重要であれば、私はArch Linuxを使用しています。

user@machine $ convert -density 300 -depth 8 -quality 90 input.pdf output.png
convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert: no images defined `output.png' @ error/convert.c/ConvertImageCommand/3288.

解決方法は?

Ghostscriptが修正された後もImageMagickの変更が維持されたのは、アプリケーション(特にウェブアプリケーション)はしばしば任意のユーザ提供のファイルをImageMagickに送り、フォーマット制限を必ずしも適切に実施せず、また、(PDFが使用している)PostScriptはサンドボックスで動作するチューリング完全なプログラミング言語なので、サンドボックスに別の穴を開ける可能性は常にあるためです。

ImageMagick がプログラムの実行を必要とするファイルの処理を拒否するように設定し、そのかわりに 意図的に は、Postscriptレンダリングを許可したいのです。

それを実現するのは、次のようなGhostscriptのコマンドだ。

gs -dSAFER -r600 -sDEVICE=pngalpha -o foo.png myfile.pdf

そう、これはImageMagicが呼び出すGhostScriptコマンドのバリエーションなんだ。(ImageMagickの delegates.xml . -o の略記です。 -dBATCH -dNOPAUSE -sOutputFile= )

重要なのは、ImageMagick がロックされたままであること、 中間プログラムを不必要に呼び出さないこと、そしてレンダリングパラメータをよりコントロールしやすくなることです。(例. -r600 はレンダリングするDPIであり -sDEVICE=pngalpha を使用すると、希望のフォーマットに直接レンダリングすることができます)