🧙

[ImageMagick] PDF ファイルの各ページを左右反転した PNG 画像に変換する

2024/12/05に公開

講演会や動画撮影で使うプロンプターという機器があります。底面のモニターに映された像をガラスに投影させることで、話し手はまっすぐ前を見て原稿を読むことができます。

しかし、ひとつ注意すべき点があります。モニターには左右反転(鏡像反転)した映像を表示する必要がある、ということです。反転機能付きのプロンプターもありますが、かなり高価です。

そこで、あらかじめ左右反転した原稿を用意することを考えましょう。

原稿は PDF 形式で用意されているとします。これを PNG 形式のファイル群に変換します。


まず、無料のオープンソースソフトウェアである ImageMagick をあなたの PC にインストールしてください。インストール手順の説明は省略します。

続いて、ImageMagick の policy.xml を書き換えます。Linux の場合は、/etc/ImageMagick-6 または /etc/ImageMagick-7 の下にあります。そこに移動して、sudo vim policy.xml で開いてください。そして、

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

という行を探して、次のように書き換えてください。

<policy domain="coder" rights="read | write" pattern="PDF" />

ここまでが準備作業です。


カレントディレクトリに speech_script.pdf というファイルがあるとします。

まず、mkdir -p speech_script コマンドで speech_script ディレクトリを作成してください。

そして、次のコマンドを実行してください。

convert speech_script.pdf -background white -alpha remove -alpha off -flop \
  speech_script/page-%03d.png

これで、白背景の左右反転された画像群が speech_script ディレクトリの下に作られます。ファイル名は、page-000.png, page-001.png, ... となります。

PDF ファイルのページ数が 1000 を超える場合は、コマンドの %03d の部分を %04d としてください。


さらに画像の白黒を反転させる(黒背景に白の文字で表示させる)には、次のコマンドを実行してください。

convert speech_script.pdf -background black -alpha remove -alpha off -flop \
  --negate -quiet speech_script/page-%03d.png
-quiet オプションを付ける理由

私の環境では -negate オプションを付けると次のような警告が出力されます。

convert-im6.q16: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG

これは単なる警告に過ぎず、正しく白黒反転された画像が作られています。そこで -quiet オプションを付けて警告表示を抑制することにしました。

Discussion