PDFBoxはJavaでPDFを扱えるOSSです。
(コマンドラインからも使えるそうです)
2015年10月現在、最新バージョンは1.8.10。
ライセンスはApache License v2.0。
公式サイトのトップページによると、代表的な機能は以下の通り。
-
テキスト抽出
PDFファイルからテキストを抽出 -
分割&マージ
1つのPDFファイルを複数ファイルに分割したり、複数のファイルをマージしたりできる -
Form
formsからデータを抽出したり、埋めたりできる。 -
Validation
PDF/A-1b標準に準拠しているかチェックできる -
印刷
Java標準の印刷APIを使ってのPDF印刷 -
画像として保存
PDFをPNGやJPEG形式で保存可能。 -
PDF生成
formや画像を埋め込んでのPDF作成が可能 -
署名
電子署名を扱える
インストール
公式サイトからJarをダウンロードするか、Mavenで。
pom.xml
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>1.8.10</version>
</dependency>
Hello World
とりあえずHello Worldしてみます。
HelloWorld.java
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.IOException;
public class HelloWorld {
public static void main(String... args) {
try {
// PDDocumentオブジェクトを生成して、Pageも設定しておく
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
// コンテンツを設定するStreamオブジェクトを生成する
PDPageContentStream contentStream = new PDPageContentStream(document, page);
// フォントとポジションを指定してコンテンツを書き込む
contentStream.beginText();
contentStream.setFont(PDType1Font.HELVETICA, 20);
contentStream.moveTextPositionByAmount(100, 700);
contentStream.drawString("Hello World");
contentStream.endText();
// Streamオブジェクトを閉じる
contentStream.close();
// ファイルを保存して閉じる
document.save("helloWorld.pdf");
document.close();
} catch (IOException e) {
e.printStackTrace();
} catch (COSVisitorException e) {
e.printStackTrace();
}
}
}