PDFBoxを使ってPDFを作成する(その1)

JavaでPDFファイルを作成することになり、いろいろライブラリを見た結果、一番よさげだったApache PDFBoxを使うことにしました。
一応やりたいことはできたものの、困ったことやわからないことがポロポロとあったので、そのあたり書き残しておこうと思います。
ごくごく基本的な使い方(HelloWorld的な)について説明しているページはいくつか見つけたものの、そこから先の細かい使い方を書いてくれているページがあまりなかったので、どこかの誰かの役に立てばいいなと思いつつ。。。

1.ダウンロード

公式サイトのダウンロードページからダウンロードします。

2.HelloWorld

特に難しいことはありません。以下のコードでHelloWorldと出力されます。正確には出力されたPDFファイルが作成されます。ですね。
細かい説明は省きます。
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream cos= new PDPageContentStream(document, page);
cos.beginText();
cos.newLineAtOffset(0f, 0f);
cos.setFont(font, 12);
cos.setLeading(12);
cos.showText("Hello World");
cos.endText();
cos.close();
document.save("helloworld.pdf");
document.close();

※PDPageContentStreamは、1ページにつき1回生成します。
1ページの中に異なるフォントや異なる文字サイズで出力する場合は、
cos.beginText();
から
cos.endText();
までを繰り返します。

3.日本語

必要に応じてフォントをダウンロードしてください。ちなみに今回はIPAフォントを使いました。
そして、
PDFont font = PDType1Font.HELVETICA_BOLD;
の部分を
PDFont font = PDType0Font.load(document, new File("/usr/share/fonts/ipa-gothic/ipag.ttf"));
とすることで、日本語も表示することができます。

4.画像

PDImageXObject ximage = PDImageXObject.createFromFile("photo.jpg", document);
cos.drawImage(ximage, 100, 100, ximage.getWidth(), ximage.getHeight());

で画像が表示できます。

文字の表示にしろ画像の表示にしろ、それぞれ表示位置を指定できるので、1つのページに文章と画像を表示することももちろん可能です。
表示位置は、実際に出力してみて、微調整した方がいいと思います。
また、画像の表示は文字の表示に比べてかなり時間がかかります。(画像のサイズが大きいと特に)

ここまでが基本的な使い方になります。日本語も表示できる、画像も表示できる、よしよし・・・と思ったのも束の間、ちょこちょこと問題が発生するのでした。

続く

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です