iTextを使ってPDFフォームに値を埋め込む方法

まず、PDFを作ってそれに対してフォームを埋め込んでおきます。(要Acrobat Professional)
それをフォーマットとし、iTextを使ってフォームの内容を埋め込んで、新たなPDFとして出力します。

PdfReader reader = new PdfReader("template.pdf");
PdfStamper stamper= new PdfStamper(reader, new FileOutputStream("output.pdf"));
AcroFields form = stamper.getAcroFields();

form.setField("name", "名無しのごんべ");
form.setField("address", "東京都○○区");

stamper.setFormFlattening(true);
stamper.close();

必要となってくるjarは、

日本語フォント使うためには、

  • iTextAsian.jar

また、PDFにパスワードによるセキュリティを設定している場合には、暗号化がらみでBouncy CastleのJarが必要になるようです。

  • bcprov-jdk14-135.jar

すべてSourceForgeから入手できます。

(itext-x.x.x.jar以外は、extrajarsのリンクから取得できます)


Acrobatを使うことにより、細かいデザインも事前に調整できるし、フォントなんかも、Acrobatを使ってフォームに対して事前に設定しておけるので、プログラム上でやるのは単にフォームに対するキーと値の設定のみになって、かなり楽になります。
帳票をデザインする人と、プログラマが別って場合にも、やりやすいのではないでしょうか。


Acrobat Professionalがあるならば、、動的にPDFの帳票を作る際、これが一番楽そうな気がします。
なければ、iReport+JasperReportsになるのかなと。