環境:ubuntu 20.04
複数の画像を一つのPDFに変換するため以下のように実行。
[書式]
convert 入力ファイル 出力ファイル.PDF
[サンプル]
$ convert IMG_*.JPG 21_0415_Pict.PDF
すると以下のようなエラーメッセージ。
convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
結構有名なトラブルのようで解決事例のページが多数ヒット。
参照サイト
ask ubuntu
imagemagick - convert not allowed [duplicate]
https://askubuntu.com/questions/1127260/imagemagick-convert-not-allowed
imagemagickのセキュリティ対策が原因。
対処方法は設定ファイルの一部を書き換え。
設定ファイルのパス。
/etc/ImageMagick-6/policy.xml
$ cd /etc/ImageMagick-6/
設定ファイルのあるディレクトリに移動。
$ sudo cp -a policy.xml{,.org}
でオリジナルファイルのコピーを作成。
$ sudo gedit policy.xml
root権限でエディター起動。(使用するエディターは何でもいい)
設定ファイルの最後の方に <!-- disable ghostscript format types -->という項目があり、ghostscript系のフォーマットが無効化されている。
<!-- disable ghostscript format types -->
<policy domain="coder" rights="none" pattern="PS" />
<policy domain="coder" rights="none" pattern="PS2" />
<policy domain="coder" rights="none" pattern="PS3" />
<policy domain="coder" rights="none" pattern="EPS" />
<policy domain="coder" rights="none" pattern="PDF" />
<policy domain="coder" rights="none" pattern="XPS" />
参照したサイトではPDFの設定行の書き換えオススメしていました。
<policy domain="coder" rights="none" pattern="PDF" />
↓
<policy domain="coder" rights="read|write" pattern="PDF" />
追加
@ error/cache.c/OpenPixelCache/4083
このエラーの対処方法も同じ設定ファイルで可能なようなので一緒に編集。
キャッシュが足りないようなのでメモリの設定を変更。
オリジナル
<policy domain="resource" name="memory" value="256MiB"/>
<policy domain="resource" name="map" value="512MiB"/>
変更後
<policy domain="resource" name="memory" value="2048MiB"/>
<policy domain="resource" name="map" value="4096MiB"/>