SSブログ

iTextを使ってPDF作成 - 注釈 - [プログラミング]

PDFデータには、注釈を付けることが出来ます。

(PDFファイルを作成するためのJava用ライブラリ)「iText」にも、注釈を付けるクラスが用意されています。

import java.io.*;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;

public class Sample
{
    static public void main(String[] args)
    {
        BufferedReader in = null;

        final Document doc = new Document();
        try {
            final PdfWriter writer =
                PdfWriter.getInstance(doc, new FileOutputStream("sample.pdf"));

            doc.open();

            PdfAnnotation a = PdfAnnotation.createText(
                        writer,
                        new Rectangle(100, 100, 200, 200),
                        "タイトル",
                        "内容",
                        true,
                        null);

            writer.addAnnotation(a);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }

        doc.close();
    }
}

PdfAnnotation#createText()の6番目の引数はアイコンの指定で、次のものが指定できます。

  • "Comment"
  • "Help"
  • "Insert"
  • "Key"
  • "NewParagraph"
  • "Note"
  • "Paragraph"

nullを指定したり、上記以外のものを指定すると、"Note"になります。

本文の位置に合わせて注釈を出力したい場合は、振り仮名の場合と同様にタグ機能を利用して座標を取得することになりそうです。

ただ、本文の近くに注釈を出力すると、アイコンが鬱陶しいので、PdfAnnotation#createText()の5番目の引数をfalseにして、
a.setFlags(PdfAnnotation.FLAGS_TOGGLENOVIEW | PdfAnnotation.FLAGS_NOVIEW);
とするといいかも。
マウスカーソルを注釈のある場所へ移動すると、注釈が表示されるようになります。

ここで1つ不思議な現象が。注釈に指定する座標を new Rectangle(x1, y1, x2, y2) としたとして、用紙が縦なら x1 < x2, y1 < y2、用紙が横なら x1 > x2, y1 > y2となるように指定しないと、注釈の出力位置がずれます。

[船] 今日の二冊
御手洗パロディ・サイト事件〈上〉

御手洗パロディ・サイト事件〈上〉

  • 作者: 島田 荘司
  • 出版社/メーカー: 南雲堂
  • 発売日: 2000/04
  • メディア: 新書

タグ:Java iText
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。