Chienomi

画像PDFに黒塗りを入れる

technique

ドキュメントスキャナで作成したPDFファイルのドキュメント、公開したいが一部データは個人情報であり公開できない…

そんなようなケースに私は遭遇した。まずは単純にPDFエディタを試そうとしたのだが、それはうまく動かなかった。LibreOfficeでもだ。

となれば、「一度画像にバラす」というのが無難な方法だろう。imagemagickでバラすことができる。

$ convert something-pdf-file.pdf out.png

シンプルな話だが、実際にできあがったPNGファイルをみてみるとガタガタで品質はかなりひどい。どうやらxpdf/popperを使ったほうがよさそうだ。

$ pdftoppm something-odf-file.pdf out.ppm

これでppmファイルで出来上がる。ppmファイルはgimpで編集できるので、gimpを使って編集すれば良い。pdftoppmを使って変換した場合、ImageMagickと比べるとかなり品質は良い。そして再編する。

$ convert out*.ppm out.pdf

ここではImageMagickを使う。これによる品質劣化はなさそう?だ。

ちなみに、ImageMagickを使ってppmをjpegにすることはできるが、品質オプションなしだとjpegから再編すると容量は123%程度に膨らんだ(PPM=26MB, JPG=32MB)。-quality 30まで落として再編すると、6MBまで落ちた。品質は、今回は便箋に書かれた文字であるため、このレベルなら問題ないだろう。サイズ縮小においても効果のある手法だ。“-quality 15”ではかなり荒れるが、それでも可読性に問題はない。このバージョンに差し替える予定でいる。ちなみに、2ページのデータはもともと2.4MBのPDFファイルだが、208kBまでの縮小に成功した。

このような場合、mogrifyを使ったほうがてっとりばやい。これはglobを使って一気に変換することを可能にする。例えばmogrify -format jpg -quality 15 *.ppmのようにだ。出力ファイル名を指定しても構わない。その場合、拡張子の前に連番が入る。