2012年09月08日
_ [computer] PDFの前付用ページラベルを(Acrobatなしで)設定する
GitHub https://github.com/kmuto/roman-nmbl にて公開。
常々困っていたところ、iTextのメソッドを見ていたらできそうな香りを感じ、さっそく作成。Javaのコーディングは正直もう辛いので、エラーハンドリングなどもかなりおざなり。
たとえば、前付がローマ数字ノンブル(いわゆるページ番号)、以降の本文などは1から始まるアラビア数字ノンブル、という構成の分割されているPDFをpdftkで合体すると、PDFのページ情報としてはローマ数字だったところは無視されてPDFの1ページ目がアラビア数字1から始まるようになってしまう。紙面内のじゃなくて、リーダのボックスに表示されるほうね。
これを直すにはAcrobatで調整するしかないというのが定説で、スイスアーミーナイフであるpdftkも、update_infoで一見いじれるように見えながら書き込むコードは実装されていないっぽいという罠。
で、update_infoの情報からlabelとLowercaseRomanをキーワードに探していくと、JavaからのPDF生成でよく使われるiTextライブラリにsetPageLabels()という何やら「ピキーン!」とニュータイプ音がしそうなメソッドを発見。
使い方を最初勘違いしていて変なラベルがついたりクラッシュしたりしてしまったのだけど、ともかく前付部はローマ数字、以降は1リセットしてアラビア数字、という希望の出力ができるようになった。
pdftkで合体してさらにこのツールを使ってというのもだるい感じはあるのでiTextで合体も実装してしまえばいいとは思うんだけど、Javaでオプションを解析したりエラーハンドリングしたりというのを考えるとそれはそれで面倒なので、ひとまずここまで。
iTextのメソッドを見ているとほかにもいろいろ面白げなものがあるので、そのうちまた何か作るかも。