Symfoware

Symfowareについての考察blog

JavaのPDFライブラリ Apache PDFBoxでHello World

以前から気になっていたPDFライブラリ「Apache PDFBox」
Apache PDFBox

ライセンスが「Apache License v2.0」なのがいいですね。
使い方を調べてみます。


ライブラリの取得



Downloads
こちらから、「pdfbox-1.8.9.jar」をダウンロードしました。

625_01.png

ダウンロードしたjarをビルドパスに含めておきます。


また、Apache Commons Loggingに依存していますので、
http://commons.apache.org/proper/commons-logging/download_logging.cgi
こちらから「commons-logging-1.2-bin.zip」をダウンロード。

commons-logging-1.2.jarもビルドパスに含めておきます。





空のPDF生成



Document Creation
こちらを参考にプログラムを進めていきます。

まず、空白のPDFファイルを出力してみます。


  1. package com.fc2.blog68.symfoware;
  2. import java.io.IOException;
  3. import org.apache.pdfbox.exceptions.COSVisitorException;
  4. import org.apache.pdfbox.pdmodel.PDDocument;
  5. import org.apache.pdfbox.pdmodel.PDPage;
  6. public class MainProccess {
  7.     public static void main(String[] args) {
  8.         // Create a new empty document
  9.         PDDocument document = new PDDocument();
  10.         // Create a new blank page and add it to the document
  11.         PDPage blankPage = new PDPage();
  12.         document.addPage( blankPage );
  13.         try {
  14.             // Save the newly created document
  15.             document.save("BlankPage.pdf");
  16.             
  17.             // finally make sure that the document is properly
  18.             // closed.
  19.             document.close();
  20.             
  21.         } catch (COSVisitorException | IOException e) {
  22.             e.printStackTrace();
  23.         }
  24.         
  25.     }
  26. }



まっさらなPDFが出力出来ました。

625_02.png





Hello World



PDFにHello Worldを出力してみます。

フォントを使用する場合には、fontbox-1.8.9.jarが必要です。

Downloads
こちらから、「fontbox-1.8.9.jar」をダウンロードし、ビルドパスに含めておきます。

このjarがない場合は、こんなエラーが発生しました。


Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/fontbox/afm/AFMParser




  1. package com.fc2.blog68.symfoware;
  2. import java.io.IOException;
  3. import org.apache.pdfbox.exceptions.COSVisitorException;
  4. import org.apache.pdfbox.pdmodel.PDDocument;
  5. import org.apache.pdfbox.pdmodel.PDPage;
  6. import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
  7. import org.apache.pdfbox.pdmodel.font.PDFont;
  8. import org.apache.pdfbox.pdmodel.font.PDType1Font;
  9. public class MainProccess {
  10.     public static void main(String[] args) {
  11.         // Create a new empty document
  12.         PDDocument document = new PDDocument();
  13.         PDPage page = new PDPage();
  14.         document.addPage( page );
  15.         
  16.         // Create a new font object selecting one of the PDF base fonts
  17.         PDFont font = PDType1Font.HELVETICA_BOLD;
  18.         
  19.         try {
  20.             
  21.             // Start a new content stream which will "hold" the to be created content
  22.             PDPageContentStream contentStream = new PDPageContentStream(document, page);
  23.             
  24.             contentStream.beginText();
  25.             contentStream.setFont( font, 12 );
  26.             contentStream.moveTextPositionByAmount( 100, 700 );
  27.             contentStream.drawString( "Hello World" );
  28.             contentStream.endText();
  29.             // Make sure that the content stream is closed:
  30.             contentStream.close();
  31.             
  32.             // Save the newly created document
  33.             document.save("HelloWorld.pdf");
  34.             
  35.             // finally make sure that the document is properly
  36.             // closed.
  37.             document.close();
  38.             
  39.         } catch (COSVisitorException | IOException e) {
  40.             e.printStackTrace();
  41.         }
  42.         
  43.     }
  44. }




Hello Worldが出力出来ました。

625_03.png


続きです。
Apache PDFBoxで改ページ

関連記事

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

  1. 2015/07/16(木) 22:25:11|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Apache PDFBoxで改ページ | ホーム | Mono xbuild(MSBuild)でプログラムのコンパイルを実行する>>

コメント

コメントの投稿


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

トラックバック

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