JavaでPDFファイルを出力する(iTextライブラリ)【テキスト自由配置編】
前回は「iText」を使用して、文字列が1つだけ表示されるPDFを作成した。
ただ、文字が表示される位置は、PDFの左上に固定されていた。
今回は、文字列を自由な位置に配置する方法を紹介する。
ポイントは、「PdfWriter」より「PdfContentByte」を取得し、「PdfContentByte」オブジェクトに対して、表示座標を設定することである。
(座標は左下が原点となる)
<ソースコード>
package jp.co.smp.pdf.action; import java.io.FileOutputStream; import java.io.IOException; import org.seasar.struts.annotation.Execute; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfWriter; public class IndexAction { @Execute(validator = false) public String index() { return "index.jsp"; } @Execute(validator = false) public String createPdf() throws DocumentException, IOException{ //文書オブジェクトを生成 Document doc = new Document(PageSize.A4, 50, 50, 50, 50); //出力先(アウトプットストリーム)の生成 FileOutputStream fos = new FileOutputStream("C:\\temp\\test.pdf"); //アウトプットストリームをPDFWriterに設定 PdfWriter pdfwriter = PdfWriter.getInstance(doc, fos); //フォントの設定 //Font font = new Font(BaseFont.createFont("HeiseiKakuGo-W5", // "UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED),15,Font.BOLD); BaseFont baseFont = BaseFont.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED); //文章オブジェクト オープン doc.open(); //↓↓↓↓↓ 今回変更部分 ↓↓↓↓↓ //PdfContentByteの取得 PdfContentByte pdfContentByte = pdfwriter.getDirectContent(); //テキストの開始 pdfContentByte.beginText(); //フォントとサイズの設定 pdfContentByte.setFontAndSize(baseFont, 17); //表示位置の設定 pdfContentByte.setTextMatrix(300, 300); //表示する文字列の設定 pdfContentByte.showText("テキストの位置を自由に配置する"); //テキストの終了 pdfContentByte.endText(); // //PDF文章に文字列を追加 // doc.add(new Paragraph("PDF作成", font)); //↑↑↑↑↑ 今回変更部分 ↑↑↑↑↑ //文章オブジェクト クローズ doc.close(); //PDFWriter クローズ pdfwriter.close(); return null; } }
[解説]
- 「PdfContentByte#beginText」でテキストの開始を宣言する。
- 「PdfContentByte#setFontAndSize」でフォントを設定する。
- 「PdfContentByte#setTextMatrix」で表示する座標を設定する。(左下が原点)
- 「PdfContentByte#showText」で表示する文字列を設定する。
- 「PdfContentByte#endText」でテキストの終了を宣言する。
<実行結果>
実行すると、フォルダ「C:\temp」に「test.pdf」が作成される。
<関連記事>
JavaでPDFファイルを出力する(iTextライブラリ)【準備編】
JavaでPDFファイルを出力する(iTextライブラリ)【出力編】
JavaでPDFファイルを出力する(iTextライブラリ)【テキスト自由配置編】
JavaでPDFファイルを出力する(iTextライブラリ)【画像配置編】
JavaでPDFファイルを出力する(iTextライブラリ)【図形配置編】
JavaでPDFファイルを出力する(iTextライブラリ)【図形配置編2】
JavaでPDFファイルを出力する(iTextライブラリ)【表配置編】
<お勧め書籍>