Symfoware

Symfowareについての考察blog

PDFライブラリ Apache PDFBoxで画像をPDFに埋め込む

PDFBox 2.0系のスナップショットで色々試してみています。
Apache PDFBoxで日本語の出力とフォントの埋め込み
PDFライブラリ Apache PDFBoxで線の描画と矩形の塗りつぶし

今回は画像をPDFに埋め込んでみます。



サンプル



PDImageXObjectに画像をロード。
drawImageで画像をPDFに出力します。


  1. package com.fc2.blog68.symfoware;
  2. import org.apache.pdfbox.pdmodel.PDDocument;
  3. import org.apache.pdfbox.pdmodel.PDPage;
  4. import org.apache.pdfbox.pdmodel.PDPageContentStream;
  5. import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
  6. public class MainProccess {
  7.     public static void main(String... args) throws Exception {
  8.         PDDocument doc = new PDDocument();
  9.         // 新しいページを追加
  10.         PDPage page = new PDPage();
  11.         doc.addPage(page);
  12.         
  13.         // 出力用のストリームを開く
  14.         PDPageContentStream contents = new PDPageContentStream(doc, page);
  15.         
  16.         // PDF貼付け用のオブジェクトを作成
  17.         PDImageXObject pdImage = PDImageXObject.createFromFile("cc2.jpg", doc);
  18.         
  19.         // 座標と幅、高さを指定 元画像が大きいので半分に縮小
  20.         float scale = 0.5f;
  21.         contents.drawImage(pdImage, 20, 350, pdImage.getWidth()*scale, pdImage.getHeight()*scale);
  22.         
  23.         // 例として、1/4に縮小したものも貼り付け
  24.         scale = 0.25f;
  25.         contents.drawImage(pdImage, 20, 100, pdImage.getWidth()*scale, pdImage.getHeight()*scale);
  26.         
  27.         // ストリームを閉じる
  28.         contents.close();
  29.         // pdfファイルを出力
  30.         doc.save("sample.pdf");
  31.         doc.close();
  32.     }
  33. }




意外とお手軽でした。

634_01.png


サンプル画像はこちらからお借りしています。
【90枚】コードギアス C.C.の壁紙ギャラリー



続きます
Apache PDFBox 用紙サイズの指定と用紙の向き(Landscape,Portrait)
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/08/03(月) 23:02:04|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PHP 5.6 + CodeIgniter 3 + ThinreportsでPDF帳票を出力する | ホーム | PDFライブラリ Apache PDFBoxで線の描画と矩形の塗りつぶし>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1779-ef9bd77d
この記事にトラックバックする(FC2ブログユーザー)