Java
pdfBox
More than 3 years have passed since last update.

http://pdfbox.apache.org/

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();
}

}
}