Java ライブラリ Apache PDFBox で PDF を操作しよう (第3回:画像の表示)

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 本連載では Java で PDF を操作できる Apache PDFBox について解説します。 前回は PDF に文字を表示する方法について概要を解説しました。 今回は画像を PDF に表示する方法について解説します。

画像を表示してみよう

 それではさっそく PDF に画像を埋め込んで表示してみましょう。 本稿はお仕事でご覧になっている方が多いと思いますので、今回は帳票を想定して、別稿「Java ライブラリ Barcode4J でバーコードを生成しよう」で作成したバーコード画像を埋め込んでみようと思います。

ITF-14 バーコードのサンプル

 プログラムの全体は次のようになります。

package sample.pdfbox;

import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

public class Main {
  public static void main(String args[]) {
    try {
      // 空のドキュメントオブジェクトを作成します
      PDDocument document = new PDDocument();

      // 新しいページのオブジェクトを作成します
      PDPage page = new PDPage();
      document.addPage(page);

      // 画像オブジェクトを作成する
      PDImageXObject image = PDImageXObject.createFromFile("barcode.png", document);

      // 出力用のストリームを開いて画像を描写する
      PDPageContentStream contentStream = new PDPageContentStream(document, page);
      contentStream.drawImage(image, 150, 350, image.getWidth(), image.getHeight());

      // ストリームを閉じる
      contentStream.close();

      // ドキュメントを保存します
      document.save("image.pdf");
      document.close();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}

ソースコードの解説

 PDImageXObject クラスの createFromFile メソッドにファイル名を指定することで、画像オブジェクトを作成できます。

PDImageXObject image = PDImageXObject.createFromFile("barcode.png", document);

読み込んだ画像をページに埋め込むには、drawImage メソッドに画像オブジェクトを指定します。 第二・第三引数は画像の表示位置を、第四・第五引数は画像の大きさを指定します。

// 第一引数 : 画像オブジェクト
// 第二引数 : 表示位置 (横)
// 第三引数 : 表示位置 (縦)
// 第四引数 : 表示する画像の幅
// 第五引数 : 表示する画像の高さ
contentStream.drawImage(image, 150, 350, image.getWidth(), image.getHeight());

PDFBox 出力サンプル  このプログラムを実行すると、image.pdf というファイル名の右図のような PDF が出力されます。(クリックで拡大) 埋め込んだバーコードがページの左下に表示されているのがわかります。

おわりに

 今回は PDFBox を利用して文字を PDF に表示する方法について解説しました。 次回は罫線を表示する方法について解説したいと思います。

>> Java ライブラリ Apache PDFBox で PDF を操作しよう (第4回:罫線の表示)

Java環境構築へ戻る

Javaのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca