Cocoonで動的にデータを作成し、PDFで出力するその3は、JSPを使うケースです。
http://127.0.0.1:8080/cocoon/mytest/test.pdf
と入力すると、
test.jsp
が起動され、そのJSPがXMLファイルを出力し、その内容をPDFにするというものです。
JSPとsitemap.xmapの書き方が変わるだけで、他は同じです。
■まず、JSPを作成します。
まず、XMLファイルを書き出すJSPを作成します。
こんなかんじ。
<%@ page contentType="text/html; charset=utf8" %><?xml version="1.0" encoding="UTF-8"?> <% String title = request.getParameter("title"); String mincho = "明朝体:" + title; String gothic = "ゴシック体:" + title; %> <page> <title><%=title%></title> <mincho><%=mincho%></mincho> <gothic><%=gothic%></gothic> </page> |
(上記< >は、本当は半角)
これを、test.jspとして保存します。
■sitemap.xmapを変更
こんなかんじ
<?xml version="1.0"?> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> <map:pipelines> <map:pipeline> <map:match pattern="test.pdf"> <map:generate type="jsp" src="test.jsp" /> <map:transform src="page2fo.xsl"/> <map:serialize type="fo2pdf"/> </map:match> </map:pipeline> </map:pipelines> </map:sitemap> |
(上記< >は、本当は半角)
今回変わったところは、「map:generate 」の部分。
typeをjspにして、JSPのファイル名を書きます。
■配置・実行
あとは、今までどおり、ここでやった「アクセス」のように、上記test.jspとsitemap.xmapのほかに、page2fo.xslをコピーして、(Tomcatのフォルダ/webapps/cocoonの下の)mytestフォルダに入れます。
そしたら、Tomcatを起動、http://127.0.0.1:8080/cocoon/mytest/test.pdfをアクセスしますが、上記jspでは、titleが引数になっているので、
http://127.0.0.1:8080/cocoon/mytest/test.pdf?title=123
とか入れると、PDFができてきます。
JSPであれば、何でもかけるので、この方法を使えば、まあ、自由に帳票出力が出来ると思います。