コンピュータサイエンスを専攻している大学院生です。趣味は,アニメ鑑賞・プログラミング・ライフハックなどです。
ImageMagick は,200 種類以上のフォーマットに対応しているコマンドライン群です。本記事では,ImageMagick に同梱されている convert コマンドを用いて画像ファイルを PDF に変換する手順と PDF ファイルから画像ファイルを抽出する手順について記述します。
画像ファイルを PDF に変換する際,not authorized
というエラーが出力される場合があります。Ubuntu の場合は,/etc/ImageMagick-6/policy.xml
の 76 行目に記述されている以下のコードを削除します。また,macOS 版の ImageMagick でも同様の手順でエラーを回避可能です。しかし,policy.xml
の場所が Ubuntu とは異なるため,ネット記事を参考にしてください。
<policy domain="coder" rights="none" pattern="PDF" />
10 個の PNG ファイルを convert コマンドを用いて PDF に変換する手順を以下に示します。
$ ls -lh
合計 2.1M
-rw-r--r-- 1 admin admin 243K 11月 0 00:00 1.png
-rw-r--r-- 1 admin admin 208K 11月 0 00:00 10.png
-rw-r--r-- 1 admin admin 210K 11月 0 00:00 2.png
-rw-r--r-- 1 admin admin 232K 11月 0 00:00 3.png
-rw-r--r-- 1 admin admin 219K 11月 0 00:00 4.png
-rw-r--r-- 1 admin admin 203K 11月 0 00:00 5.png
-rw-r--r-- 1 admin admin 195K 11月 0 00:00 6.png
-rw-r--r-- 1 admin admin 218K 11月 0 00:00 7.png
-rw-r--r-- 1 admin admin 199K 11月 0 00:00 8.png
-rw-r--r-- 1 admin admin 207K 11月 0 00:00 9.png
$ convert `ls | sort -n` out.pdf
$ ls -lh out.pdf
-rw-r--r-- 1 admin admin 2.2M 11月 0 00:01 out.pdf
convert コマンドは,正規表現を用いて入力ファイルを選択することが可能です。しかし,正規表現を用いた場合は10.png
が望ましくない位置に設定された PDF ファイルが出力されます。そこで,ls コマンドと sort コマンドを用いて調整しています。
PDF ファイルから画像ファイルを抽出する手順を以下に示します。
$ convert out.pdf img.png
$ ls -lh
合計 8.2M
-rw-r--r-- 1 admin admin 846K 11月 0 00:02 img-0.png
-rw-r--r-- 1 admin admin 743K 11月 0 00:02 img-1.png
-rw-r--r-- 1 admin admin 314K 11月 0 00:02 img-2.png
-rw-r--r-- 1 admin admin 333K 11月 0 00:02 img-3.png
-rw-r--r-- 1 admin admin 275K 11月 0 00:02 img-4.png
-rw-r--r-- 1 admin admin 689K 11月 0 00:02 img-5.png
-rw-r--r-- 1 admin admin 770K 11月 0 00:02 img-6.png
-rw-r--r-- 1 admin admin 708K 11月 0 00:02 img-7.png
-rw-r--r-- 1 admin admin 713K 11月 0 00:02 img-8.png
-rw-r--r-- 1 admin admin 733K 11月 0 00:02 img-9.png
-rw-r--r-- 1 admin admin 2.2M 11月 0 00:01 out.pdf
4 章の結果より,convert コマンドを用いた変換は不可逆であるということがわかりました。convert コマンドを用いて可逆的な変換が可能か。また,他のコマンドラインツールに関する情報収集などを今後の課題にしたいと思います。
コンピュータサイエンスを専攻している大学院生です。趣味は,アニメ鑑賞・プログラミング・ライフハックなどです。