まず、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になるのかなと。