iText

一昨日あたりから、Javaで動的にPDFを作成するっていう要件が
あったので調査し始めたんですが、今のところ使えそうなのが


ってところでしょうか。
FOP は会社の同僚が調査した資料があったのでそれを参考に
するとして、
iText は使ったことがないので少し実装してみました。

実装環境 [ J2SDK1.4 , eclipse3.1M4 , Tomcat4.1.27 ]
必要なライブラリー [ itext-1.3.jar , iTextAsian.jar ]

// PDFファイル生成
Document doc = new Document();
try {
    Random rd = new Random();
    int cnt = rd.nextInt(38000);
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition",
    "attachment; filename=" + cnt + "test.pdf");
    PdfWriter.getInstance(doc,response.getOutputStream());
    doc.open();
    
    BaseFont bfChinese
    = BaseFont.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H",
    BaseFont.NOT_EMBEDDED);
    Font fontJapan = new Font(bfChinese, 12, Font.NORMAL);
    String detail[]
    = this.getPDFDEtail((String)request.getSession().getAttribute("detail"));
    Paragraph tmp = new Paragraph(detail[0], fontJapan);
    doc.add(tmp);
    doc.newPage(); // 改ページ
    for(int i=1; i<detail.length; i++) {
        Paragraph p = new Paragraph(detail[i], fontJapan);
        doc.add(p);
        doc.newPage();            
    }
} catch (FileNotFoundException e) {
    // FileNotFoundException
    e.printStackTrace();
} catch (DocumentException e) {
    // DocumentException
    e.printStackTrace();
}
doc.close();

PDFに書き出す内容は、フォームに入力してもらうパターンと
指定されたファイルから読み込むパターンを両方実現出来るように
作成してみました。
iTextAsian.jarがないと日本語出力が出来ないのを小1時間ほど悩みました・・
改ページの区切り文字として「----」をKEYして改ページするような
実装にしてあります。
適当に作成したので、クソコードになってますが参考程度になるかと・・・
フォントにゴシックを指定したい場合は、


BaseFont bfChinese
= BaseFont.createFont("/WINDOWS/Fonts/MSGOTHIC.TTC","UniJIS-UCS2-H",
BaseFont.NOT_EMBEDDED);

上記の様な指定でいけるはずです(WINDOWSの場合)
今回作成した、サンプルコードのダウンロードはこちら