ImageMagick の convert コマンドを用いて画像と PDF を双方向変換する

heroImage

1. はじめに

ImageMagick は,200 種類以上のフォーマットに対応しているコマンドライン群です。本記事では,ImageMagick に同梱されている convert コマンドを用いて画像ファイルを PDF に変換する手順と PDF ファイルから画像ファイルを抽出する手順について記述します。また,本記事内で行っている作業は,以下の環境下で実行したものです。

2. 事前準備

画像ファイルを PDF ファイルに変換する際,not authorized というエラーが出力される場合があります。インターネット上に公開されている記事によると,/etc/ImageMagick-6/policy.xml の 76 行目に記述されている以下のコードを削除,またはコメントアウトすることで回避することが出来ます。また,macOS 版の ImageMagick でも同様の手順でエラーを回避可能です。しかし,policy.xml の場所が Ubuntu とは異なるため,インターネット上に公開されている記事を参考にしてください。

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

3. 画像 ➔ PDF

10 個の PNG ファイルを convert コマンドを用いて PDF に変換する手順を以下に示します。convert コマンドは,正規表現を用いて入力ファイルを選択することが可能です。しかし,正規表現を用いた場合は 10.png が望ましくない位置に設定された PDF ファイルが出力されます。そこで,ls コマンドと sort コマンドを用いて調整しています。

Terminal window
1
$ ls -lh
2
合計 2.1M
3
-rw-r--r-- 1 admin admin 243K 11月 0 00:00 1.png
4
-rw-r--r-- 1 admin admin 208K 11月 0 00:00 10.png
5
-rw-r--r-- 1 admin admin 210K 11月 0 00:00 2.png
6
-rw-r--r-- 1 admin admin 232K 11月 0 00:00 3.png
7
-rw-r--r-- 1 admin admin 219K 11月 0 00:00 4.png
8
-rw-r--r-- 1 admin admin 203K 11月 0 00:00 5.png
9
-rw-r--r-- 1 admin admin 195K 11月 0 00:00 6.png
10
-rw-r--r-- 1 admin admin 218K 11月 0 00:00 7.png
11
-rw-r--r-- 1 admin admin 199K 11月 0 00:00 8.png
12
-rw-r--r-- 1 admin admin 207K 11月 0 00:00 9.png
13
$ convert `ls | sort -n` out.pdf
14
$ ls -lh out.pdf
15
-rw-r--r-- 1 admin admin 2.2M 11月 0 00:01 out.pdf

4. PDF ➔ 画像

PDF ファイルから画像ファイルを抽出する手順を以下に示します。出力された PNG ファイルのファイルサイズが約 3 倍に増加していることがわかります。この結果より,オプション無しで convert コマンドを実行した場合,非可逆な変換が行われていることがわかります。

Terminal window
1
$ convert out.pdf img.png
2
$ ls -lh
3
合計 8.2M
4
-rw-r--r-- 1 admin admin 846K 11月 0 00:02 img-0.png
5
-rw-r--r-- 1 admin admin 743K 11月 0 00:02 img-1.png
6
-rw-r--r-- 1 admin admin 314K 11月 0 00:02 img-2.png
7
-rw-r--r-- 1 admin admin 333K 11月 0 00:02 img-3.png
8
-rw-r--r-- 1 admin admin 275K 11月 0 00:02 img-4.png
9
-rw-r--r-- 1 admin admin 689K 11月 0 00:02 img-5.png
10
-rw-r--r-- 1 admin admin 770K 11月 0 00:02 img-6.png
11
-rw-r--r-- 1 admin admin 708K 11月 0 00:02 img-7.png
12
-rw-r--r-- 1 admin admin 713K 11月 0 00:02 img-8.png
13
-rw-r--r-- 1 admin admin 733K 11月 0 00:02 img-9.png
14
-rw-r--r-- 1 admin admin 2.2M 11月 0 00:01 out.pdf

5. おわりに

ここまで,ImageMagick に同梱されている convert コマンドを用いて画像ファイルを PDF に変換する手順と PDF ファイルから画像ファイルを抽出する手順について記述してきました。4 章の結果より,convert コマンドを用いた変換は不可逆であるということがわかりました。convert コマンドを用いて可逆的な変換が可能か。また,他のコマンドラインツールに関する情報収集などを今後の課題にしたいと思います。