biz-Streamマニュアル PDF出力ガイド 第2章 biz-Streamを使ったアプリケーション開発の基本編 2.2 レイアウトファイルとデータの連携

2.2 レイアウトファイルとデータの連携

biz-Streamライブラリで PDFを生成するためには、「ひな型であるレイアウトファイル」と「ひな型に流し込む(差し込む)データ」の両方が必要であることを解説しました。

次に、「レイアウトファイル」と「データ」の連携について、サンプルを例に解説します。

以下のサンプルは、biz-Streamライブラリで PDFを生成するサンプルの中で一番シンプルなもので、Hashtableで設定したデータ(会社名・住所など)を流し込むものです。
レイアウトサンプルの横書きテキスト(Labelタグ)の Name要素と Hashtableに登録したデータの名称が合致していることを確認できます。 このように、『レイアウトファイルとデータの連携は、レイアウトタグのname要素をキーとする。』ことで実現されます。 name要素には英数字以外に日本語で指定することもできます。



サンプルプログラム(<biz-Stream_home>/sample/java/Sample1.java Sample1.java


import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Hashtable;

import com.brainsellers.pdf.PDFRuntimeException;
import com.brainsellers.xml.JaxpXML;
import com.brainsellers.xml.common.XMLSuper;

public class Sample1 {

	public static void main(String args[]) {
		new Sample1(args);
		System.exit(0);
	}

	public Sample1(String args[]) {
		try {
			// (1) 入出力共にファイル名で指定する
			XMLSuper xml = new JaxpXML("${base-dir}/sample/java/Sample1.xml",
					"${base-dir}/sample/java/Sample1.pdf");

			// (2) レイアウト情報(XML)の解析を行う
			xml.parse();

			// (3) PDF表示時に全体表示で表示する
			xml.setAutoResize();

			int roopNum = 1;
			// int roopNum = 3; //複数ページ出力時の例

			for (int i = 0; i < roopNum; i++) {
				// 2ページ目以降は改ページを行なう
				if (i != 0) {
					xml.newPage();
				}

				// (4) ページ毎の設定は毎ページ設定する
				// <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");

				// (5) データのセットおよび座標計算を行った後、PDFを生成する
				xml.toPDF(ht);

				// (6) 1ページ毎に使用したオブジェクトを解放する
				xml.flush();
			}

			// (7) PDFを出力する
			xml.close();

		} catch (PDFRuntimeException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

サンプルレイアウト(<biz-Stream_home>/sample/java/Sample1.xml Sample1.java

<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file created by biz-Stream Designer -->
<!-- biz-Stream Copyright BrainSellers.com Corp. -->
<Layout Name="Sample1" Width="210mm" Height="297mm" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:bs="http://www.brainsellers.com/schema" xmlns:svg="http://www.brainsellers.com/schema" xmlns:form="http://www.brainsellers.com/schema" xmlns:pdf="http://www.brainsellers.com/schema" version="5.0.0">
    <Label Name="title" Width="179.917" Height="19.756" X="19.756" Y="250.786" Horizon="left" Vertical="bottom" Vector="horizon" Font="MSGothic" FontSize="48" FontStyle="PLAIN" Narrow="size">biz-Stream 5.0.0</Label>
    <Label Name="company" Width="94.192" Height="17.639" X="57.503" Y="197.517" Horizon="center" Vertical="bottom" Vector="horizon" Font="MSGothic" FontSize="48" FontStyle="PLAIN" Narrow="horizon">A4縦</Label>
    <Label Name="page" Width="30.339" Height="14.817" X="93.838" Y="14.072" Horizon="center" Vertical="bottom" Vector="horizon" Font="MSGothic" FontSize="32" FontStyle="PLAIN" Narrow="horizon">page</Label>
    <Label Name="address" Width="94.897" Height="15.522" X="56.091" Y="172.822" Horizon="center" Vertical="bottom" Vector="horizon" Font="MSGothic" FontSize="24" FontStyle="PLAIN" Narrow="horizon">address</Label>
    <Label Name="phone" Width="94.897" Height="20.461" X="57.503" Y="142.483" Horizon="center" Vertical="bottom" Vector="horizon" Font="MSGothic" FontSize="24" FontStyle="PLAIN" Narrow="horizon">phone</Label>
    <Label Name="fax" Width="94.192" Height="17.639" X="58.914" Y="113.203" Horizon="center" Vertical="bottom" Vector="horizon" Font="MSGothic" FontColor="0,0,0" FontSize="24" FontStyle="PLAIN" Narrow="none">fax</Label>
</Layout>