LoginSignup
23
32

More than 5 years have passed since last update.

Apache PDFBox

Last updated at Posted at 2015-10-08

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

    }
}
23
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
32