PDF ファイル内の文字列を一括置換する
Adobe Acrobat では PDF ファイル内の文字列を一括置換する方法がないようなので、何か他のツールなどはないかと探していたところ、CAM::PDF という CPAN モジュールに付属の changepagestring.pl というスクリプトで出来そう、という情報を発見。
changepagestring.pl - search.cpan.org
http://search.cpan.org/dist/CAM-PDF/bin/changepagestring.pl
検索してみたのですが、実際に使ってみた、といった話があまり見つからなかったので、自分が試した際のメモをまとめてみました。
インストール
- cpan でのインストール
# cpan -i CAM::PDF
- ppm でのインストール
Windows の ActivePerl でも以下のようにインストールできます。
>ppm install CAM::PDF
スクリプトは ActivePerlインストールフォルダ\site\bin 以下にインストールされます。
スクリプトの書式は以下になります。
changepagestring.pl [options] infile.pdf search-regex replace-str [outfile.pdf]
使ってみる
以下のような感じで使います。
# changepagestring.pl -o ./example.pdf 'foo' 'bar' example_2.pdf
Windows の場合は changepagestring.bat の方を使えば良いようです。
>changepagestring.bat -o ./example.pdf "foo" "bar" example_2.pdf
また、Windows では置換対象文字列を囲む記号はシングルクォートではなくダブルクォートでないと上手く動作しないようでした。
スペースを含む文字列を置換したい場合は、スペースをバックスペースでエスケープしてあげる必要がありました。
>changepagestring.bat -o ./example.pdf "hello\ world" "HelloWorld" example_2.pdf
その他のスクリプト
CAM::PDF には他にもいくつかスクリプトが付属しています。
例えば、PDF 内のメタデータを置換するためには、changepdfstring.pl(changepdfstring.bat) が使用できます。
以下のようにすることで、PDF 内に貼られたリンクの URL を書き換える事が出来ます。
>changepdfstring.bat -o ./example.pdf "http://example.com/foo" "http://example.com/bar" ./example2.pdf
changepdfstring.pl - search.cpan.org
http://search.cpan.org/~cdolan/CAM-PDF/bin/changepdfstring.pl
まだ軽く試してみただけですが、今のところは問題なく置換後の PDF は表示できています。
一括置換については他に代替ツールなどが無さそうなので、個人的にこのモジュールはかなり嬉しかったです。
Windows 環境でも ActivePerl で簡単に使えるので、同じように PDF の一括置換でお悩みの方は一度試してみる価値はあるかと思います。