Sun, August 31, 2008
PDFのしおり(ブックマーク)を解析する
iText にはPDFの"しおり(ブックマーク)"を解析する機能があります。(これは便利)
ここでは、 iTextを簡単に使うために、jythonを使用します。
コード bookmark.py
import sys
import java.lang as lang
import java.io as io
import java.util as util
import com.lowagie.text as itext
import com.lowagie.text.pdf as pdf
infile=sys.argv[1]
fin=io.FileInputStream(infile)
r=pdf.PdfReader(fin)
list=pdf.SimpleBookmark.getBookmark(r);
for map in list :
title=""
page=""
for key in map.keySet() :
if key=="Title":
title= map.get(key)
if key=="Page":
p=map.get(key)
st=util.StringTokenizer(p," ")
if st.hasMoreTokens() :
page=st.nextToken()
print title+" (P."+page+"-"
r.close()
fin.close()
実行結果のサンプル
http://velocity.apache.org/docbook/releases/1.0/から DocBook-Framework-1.0.pdf をダウンロードしてテストしてみました。
$ export CLASSPATH=iText-2.1.3.jar;jython bookmark.py DocBook-Framework-1.0.pdf
DocBook Framework (DBF) (P.1-
Table of Contents (P.2-
1.?Preface (P.3-
2.?Introduction (P.4-
3.?Using the Framework (P.6-
4.?Developer information (P.11-
5.?Acknowledgements (P.14-
実行方法
- 上記コードを bookmark.py というファイル名に保存します。
- 実行に必要なiText-2.1.3.jar ライブラリを iTextのサイト からダウンロードしておきます。
- しおり情報を調べたいPDFファイルを用意しておきます。 (ここでは、DocBook-Framework-1.0.pdf とします。)
これら全部をカレントディレクトリに配置したら、以下のようにして実行。
$ export CLASSPATH=iText-2.1.3.jar;jython bookmark.py DocBook-Framework-1.0.pdf
結果は、標準出力されます。
実行環境
Java 1.4.2 で作動テストしています。
関連エントリ
PDF文書をiTextを使って処理する...