PDFBox

2017/04/06


概要

pdfを作りたい。PDFlibを使おうと思ったが、現在は有償になっているらしい。
他のツールを探すことにしたが、 「今どきのJavaのPDFライブラリ まとめ (2017年版)」(http://weblabo.oscasierra.net/java-pdf-lib-2017/)にこれらのことがまとめられていた。
いろいろ選択肢があるようだが、最も簡単そうに見えたのでApache PDFBoxを選択した。

ダウンロード

つぎのものをダウンロードする。
Apache PDFBoxpdfbox-2.0.5.jar本体
Apache PDFBoxfontbox-2.0.5.jarpdfboxと一緒に必要
Apache Commons Loggingcommons-logging-1.2-bin.tar.gzcommons-logging-1.2.jarが必要
Apache PDFBoxfontbox-2.0.5-src.zipなくてもよいが、exampleにPDFBoxの使用例がある
wget http://ftp.tsukuba.wide.ad.jp/software/apache/pdfbox/2.0.5/pdfbox-2.0.5.jar
wget http://ftp.tsukuba.wide.ad.jp/software/apache/pdfbox/2.0.5/fontbox-2.0.5.jar
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//commons/logging/binaries/commons-logging-1.2-bin.tar.gz
wget http://ftp.tsukuba.wide.ad.jp/software/apache/pdfbox/2.0.5/pdfbox-2.0.5-src.zip
tar xzf commons-logging-1.2-bin.tar.gz
unzip pdfbox-2.0.5-src.zip

Eclipse

Eclipse上でPDFBoxを使うときの注意
プロジェクトの中で3つのjarファイルを「外部JARの追加」でライブラリに追加する。
恒久的に使用する場合は/usr/share/java/lib/,$JAVA_HOME/lib/等の下にコピーするとよい。

外部jarファイル

PDFファイルを作ってみる

Eclipseでサンプルを作ってみる。
差し当たり、このような機能がほしい。
細かい手順は省略する。
  1. EclipseでJavaプロジェクト「pdfApplication」等をつくる。
    3つのjarファイルを「外部JARの追加」ライブラリに追加する。
    後に追加することもできる。
  2. クラスファイルをつくる。
    アプリケーション名は「HelloPdf」等にする。public static void main(String[] args)を忘れずに
  3. HelloPdf.javaを記述
    public static void main(String[] args) まではEclipseが用意するので、この下に追記する。
  4. 実行すると~/workspace/pdfApplicaton/Hellopdf.pdfが作られる。
    HelloPdf1.png HelloPdf2.png

meshPDF

コンテンツの位置合わせが面倒になりそうなので、「位置合わせ用テンプレートmeshPDF.pdf」を用意した。


HelloPdf1.png

かわったこと

  1. A4縦長を指定すると 1ページの大きさは565 x 841 (画素?)
  2. 座標は数学とおなじ、xy座標。xが横軸、yが縦軸。左下が原点(0,0)
  3. 線・図形は絶対座標で指定 PDPageContentStream.moveTo(x,y), lineTo(x,y),...
    文字は相対座標で指定 PDPageContentStream.newLineAtOffset(x,y)

参考:
PDFBox reactor 2.0.5 API
PDFBox サンプル集
PDFBox reactor 2.0.5 APISymfowareについての考察blog 「JavaのPDFライブラリ Apache PDFBoxでHello World」