3.3 サンプルプログラム(1-2) - サーブレットでPDFを生成
ソースサンプル
<biz-Stream_home>/sample/java/Sample1_Servlet.java
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(); } }