biz-StreamマニュアルPDF出力ガイド第3章 サンプルプログラム3.3 サンプルプログラム(1-2) - サーブレットでPDFを生成

3.3 サンプルプログラム(1-2) - サーブレットでPDFを生成

概要

本プログラムは『3.2 サンプルプログラム(1-1) - ページレイアウトでPDFを生成』をサーブレットでストリーム出力するものです。


ソースサンプル

<biz-Stream_home>/sample/java/Sample1_Servlet.java サンプル1


import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Hashtable;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

public class Sample1_Servlet extends HttpServlet {

	// HTTP Get リクエストの処理
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// (1) PDFの出力先として使用する
		ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();

		// レイアウト情報(XML)に渡すデータのセットを行う
		// ("レイアウト情報(XML)のName属性で指定された名前","データ内容")をセットする
		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 内線:1");
		ht.put("fax", "FAX.XX-XXXX-XXXX");

		// (2) 入出力先を指定する
		// 入力はファイル名で指定する
		// 出力はByteArrayOutputStreamを指定する
		XMLSuper xml = new JaxpXML("${base-dir}/sample/java/Sample1.xml", pdfStream);

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

			// (4) ページサイズの設定を行う
			xml.setPageSize();

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

		} catch (Exception ex) {
			throw new ServletException(ex);
		}

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

		// (7) コンテンツタイプを設定する
		response.setContentType("application/pdf");
		response.setContentLength(pdfStream.size());

		// (8) PDFをストリームに書き出す
		DataOutputStream out_res = new DataOutputStream(response.getOutputStream());
		out_res.write(pdfStream.toByteArray());
		out_res.close();
	}
}