S-JIS[2017-09-11] 変更履歴

Apache PDFBox サンプル

PDFBoxでpdfファイルを生成する例。

 


package com.example.pdf;

import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class PdfboxExample1 {

	public static void main(String... args) throws IOException {
		try (PDDocument document = new PDDocument()) {

			// ページの生成
			PDPage page = new PDPage(PDRectangle.A4);
			document.addPage(page);

			// ファイルへの保存
			document.save("D:/temp/pdfbox/example1.pdf");
		}
	}
}

PDFBoxでは、PDFはPDDocumentクラスで扱う。
このクラスはCloseableインターフェースを実装しているので、最後にクローズする必要がある。

PDDocumentにaddPageメソッドでページを追加する。
PDPageのコンストラクターでページの大きさを指定する。→PDRectangle


ページサイズ

PDPageのコンストラクターでページの大きさを指定する。(指定しない場合のデフォルトはLETTER)

A3縦やA4縦といったサイズは定数が定義されている。

import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
		PDPage page = new PDPage(PDRectangle.A4);

A3横やA4横の定数は無いので、自分で指定する。
(縦サイズの幅・高さを取得し、入れ替えて指定すればいい)

		PDRectangle rect = new PDRectangle(PDRectangle.A3.getHeight(), PDRectangle.A3.getWidth());
		PDPage page = new PDPage(rect);

座標体系

PDFBoxでは文字列や線の座標を指定するが、この座標体系は、ページの左下が(0, 0)となる。
また、単位は1/72インチ、すなわち1ポイント(pt)らしい。(1インチは2.54cm)

参考: LEADTOOLSのPDF座標体系

	contentStream.newLineAtOffset(200f, 500f);
	contentStream.showText("Hello World");
	contentStream.moveTo(200f, 200f);
	contentStream.lineTo(200f + 72 / 2.54f, 200f);

座標を引数に取るメソッドでは、XY座標の型はfloat。


PDFBoxへ戻る / 技術メモへ戻る
メールの送信先:ひしだま