biz-Streamマニュアル PDF出力ガイド 第3章 サンプルプログラム 3.16 サンプルプログラム(11) - PDFを生成しAmazon S3へ出力するサンプル

3.16 サンプルプログラム(11) - PDFを生成しAmazon S3へ出力するサンプル

概要

このサンプルプログラムでは、生成したPDFファイルを Amazon S3 へ出力します。
この機能を利用するためには、AWS SDK とクラウドストレージ接続用のプロパティファイルが必要です。 これらはインストールメディアに同梱されていますので下記をご確認ください。

  1. ライブラリ共通ガイド」のインストール手順に従って biz-Streamライブラリを展開します。
  2. 2.4.3 インストール後のフォルダ構成」に格納されている下記のファイルを、biz-Streamライブラリと併せてアプリケーションが認識できる場所へ配置してください。
    ファイル 格納場所
    AWS SDK <biz-Stream_home>/cloud_storage/AmazonS3/配下のライブラリ一式
    クラウドストレージ接続用プロパティファイル <biz-Stream_home>/cloud_storage/AmazonS3/cloud_storage.propertiesファイル
  3. Amazon S3のバケットへ接続するための設定は、cloud_storage.properties または API で指定することができます。詳細はクラウドストレージ出力ガイドの「1.3.4 AmazonS3OutputStream クラス」を参照してください。

  • Amazon S3への出力を必要としないユーザはAWS SDKを配置をする作業は不要です。


サンプル構成

項目 ファイルパス
ページレイアウトサンプル <biz-Stream_home>/sample/java/Sample1.xml サンプル1
ソースサンプル <biz-Stream_home>/sample/cloud/AmazonS3/AmazonS3Sample1.java サンプル1
出力結果サンプル <biz-Stream_home>/sample/java/Sample1.pdf サンプル1


ソースサンプル

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

サンプル9-1