PDFの最初数ページはローマ数字、残りはアラビア数字で、ページ番号を付け直す方法(Java+RomanNombre+itextpdf)
問題
- 書籍を「自炊」したPDFは、ページ番号がアラビア数字(1,2,3,…)で振られる。
- しかし、実際の書籍では、最初の部分(表紙や目次や前書き)などはページ番号がローマ数字(i,ii,iii,iv,…)で振られ、本文に入って改めてアラビア数字(1,2,3,…)になる。
- そのため、PDFビューアでページ番号を指定してジャンプすると、望むページとは違うページが開かれてしまう。
解法
- RomanNombreというツール(kmutoさん作)を使う(要Java,
要itextpdfライブラリ)。
- RomanNombreでは、入力PDFのうち、指定した先頭ページをローマ数字で、残りをアラビア数字でページ番号を振り直し、別のPDFとして出力する。
詳細
- Javaのコンパイル環境を用意する(javac,
javaが使える状態にする)。
- Roman Nombre
Setterを読み、ダウンロード。
RomanNombre.java
を得る。
- itextpdfの最新をダウンロード。
展開して
itextpdf-5.5.9.jar
を得る。バージョン番号は変わるかも。
RomanNombre.java
の先頭を少し修正する。Roman
Nombre Setterに修正方法書いてある。
RomanNombre.java
とitextpdf-5.5.9.jar
を同じディレクトリにおいて以下を実行(コンパイル)。
$ javac -classpath itextpdf-5.5.9.jar RomanNmbl.java
- たとえば、
input.pdf
の先頭2ページをローマ数字にして新たなファイルoutput.pdf
を作るなら、以下を実行。
$ java -classpath itextpdf-5.5.9.jar:. RomanNmbl input.pdf output.pdf 2
例
fermat.pdf
は本文1ページ目はPDFとしては15ページ目であった。
最初の14ページをローマ数字で振り直す(この部分は実際の書籍とはズレるけれど、そこは気にしないことに)
$ java -classpath itextpdf-5.5.9.jar:. RomanNmbl fermat.pdf outfermat.pdf 14
outfermat.pdf
は本文1ページ目がPDFとしても1ページ目になった。
参照
関連