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。