3.16 サンプルプログラム(11) - PDFを生成しAmazon S3へ出力するサンプル
概要
このサンプルプログラムでは、生成したPDFファイルを Amazon S3 へ出力します。
この機能を利用するためには、AWS SDK とクラウドストレージ接続用のプロパティファイルが必要です。
これらはインストールメディアに同梱されていますので下記をご確認ください。
- 「ライブラリ共通ガイド」のインストール手順に従って biz-Streamライブラリを展開します。
- 「2.4.3 インストール後のフォルダ構成」に格納されている下記のファイルを、biz-Streamライブラリと併せてアプリケーションが認識できる場所へ配置してください。
ファイル 格納場所 AWS SDK <biz-Stream_home>/cloud_storage/AmazonS3/配下のライブラリ一式 クラウドストレージ接続用プロパティファイル <biz-Stream_home>/cloud_storage/AmazonS3/cloud_storage.propertiesファイル - Amazon S3のバケットへ接続するための設定は、cloud_storage.properties または API で指定することができます。詳細はクラウドストレージ出力ガイドの「1.3.4 AmazonS3OutputStream クラス」を参照してください。
- Amazon S3への出力を必要としないユーザはAWS SDKを配置をする作業は不要です。
サンプル構成
項目 | ファイルパス |
---|---|
ページレイアウトサンプル |
<biz-Stream_home>/sample/java/Sample1.xml
![]() |
ソースサンプル |
<biz-Stream_home>/sample/cloud/AmazonS3/AmazonS3Sample1.java
![]() |
出力結果サンプル |
<biz-Stream_home>/sample/java/Sample1.pdf
![]() |
ソースサンプル
import java.io.FileNotFoundException; import java.io.IOException; import java.util.Hashtable; import com.brainsellers.pdf.PDFRuntimeException; import com.brainsellers.pdf.cloud.AmazonS3OutputStream; import com.brainsellers.xml.JaxpXML; import com.brainsellers.xml.common.XMLSuper; import com.brainsellers.xml.page.PDFEngine; public class AmazonS3Sample1 { public static void main(String args[]) { new AmazonS3Sample1(args); System.exit(0); } public AmazonS3Sample1(String args[]) { try { // (1) Amazon S3への格納設定を行う // ・下記のようなAPI指定の他にcloud_storage.propertiesファイルでの指定が可能 // ・特にアクセスキーとシークレットキーはセキュリティ上cloud_storage.propertiesファイルにて設定すること // ・APIとpropertiesファイルと両方指定している場合はAPI指定が優先される // ・ファイルパスはAPIでの指定が必須 AmazonS3OutputStream s3 = new AmazonS3OutputStream(); // s3.setAccessKey("xxx"); // アクセスキー (API指定は非推奨) // s3.setSecretKey("xxx"); // シークレットキー (API指定は非推奨) // s3.setServiceEndpoint("s3.amazonaws.com"); // サービスエンドポイント // s3.setRegion("ap-northeast-1"); // リージョン // s3.setBucketName("BucketName"); // バケット名 (バケットは事前に作成しておくこと) // s3.setProxyHost("proxy"); // プロキシホスト名 // s3.setProxyPort(8080); // プロキシポート番号 s3.setFilePath("Sample/AmazonS3Sample1.pdf"); // バケット内のファイルパス (必須) // (2) PDFをAmazon S3へ出力する宣言を行う PDFEngine engine = new PDFEngine(s3); // (3) 入力はファイル名で指定、出力は(2)のPDFエンジンを指定する XMLSuper xml = new JaxpXML("${base-dir}/sample/java/Sample1.xml", engine); // (4) レイアウト情報(XML)の解析を行う xml.parse(); // (5) PDF表示時に全体表示で表示する xml.setAutoResize(); int roopNum = 1; // int roopNum = 3; //複数ページ出力時の例 for (int i = 0; i < roopNum; i++) { // 2ページ目以降は改ページを行なう if (i != 0) { xml.newPage(); } // (6) ページ毎の設定は毎ページ設定する // <Layout>タグの幅と高さをページサイズとして使用する xml.setPageSize(); // レイアウト情報(XML)に渡すデータのセットを行う // ("レイアウト情報(XML)のName属性で指定された名前","データ内容")をセットする Integer exNo = i + 1; Hashtable<String, String> ht = new Hashtable<String, String>(); ht.put("title", "biz-Stream v5"); ht.put("company", "ブレインセラーズ・ドットコム株式会社"); ht.put("address", "東京都千代田区九段北XX-XX-XX"); ht.put("phone", "TEL.XX-XXXX-XXXX" + " 内線:" + exNo.toString()); ht.put("fax", "FAX.XX-XXXX-XXXX"); // (7) データのセットおよび座標計算を行った後、PDFを生成する xml.toPDF(ht); // (8) 1ページ毎に使用したオブジェクトを解放する xml.flush(); } // (9) PDFをAmazon S3へ出力する xml.close(); } catch (PDFRuntimeException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
生成するPDF
