ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Cocoonで動的にデータを作成し、PDFで出力する(その1)

2008-10-10 16:18:37 | Weblog

 Cocoonで動的にデータを作成し、PDFで出力するには、いくつか方法がある。

   1.指定したURLに応じて、ジェネレーターのXMLファイルを変えられる方法を利用する
   2.XSPを利用して、動的にXMLデータを作成し、読み込ませる
   3.ジェネレーターをJSPにして、JSPが動的にXMLデータを作成する。

 まだまだ方法はあると思うが、今回は、とりあえず、1を説明する。




■指定したURLに応じて、ジェネレーターのXMLファイルを変えるとは、

 つまり、

http://127.0.0.1:8080/cocoon/mytest/test1.pdf

と指定すると、test1.xmlファイルを読み込み

http://127.0.0.1:8080/cocoon/mytest/testsaaaN.pdf

と指定すると、testsaaaN.xmlファイルを読み込むように、

指定したpdfファイル名に応じたXMLファイル名を読み込ませる方法




■やりかた

 これは、sitemap.xmapで、ワイルドカード指定すればよい。
 そして、そのワールドカードに対応する部分のXMLファイルを用意する

 以下、具体的な内容について説明する。
 今回は、上記test1.pdfのとき、test1.xml,testsaaaN.pdfのとき、testsaaaN.xml
を読むようにする。




■具体的方法

(1)まず、XMLファイルを用意する
 mytestフォルダに、test1.xml,testsaaaN.xmlのXMLファイルを用意する

(2)sitemap.xmapを用意
 以下のような感じで、*.pdfにし、xmlファイルは{1}.xmlにする
<?xml version="1.0"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  <map:pipelines>
    <map:pipeline>
      <map:match pattern="*.pdf">
        <map:generate src="{1}.xml"/>
        <map:transform src="page2fo.xsl"/>
        <map:serialize type="fo2pdf"/>
      </map:match>
    </map:pipeline>
  </map:pipelines>
</map:sitemap>

(上記< >は、本当は半角)
 このファイルをmytestフォルダの下に、sitemap.xmapとして置く

(3)そのほかは、昨日の設定と同じ
 cocoonの下のsitemap.xmapは同じ。mytestフォルダに、page2fo.xslをおくのも同じ。

(4)あとは、起動して、アクセスしてみましょう。
http://127.0.0.1:8080/cocoon/mytest/test1.pdf

http://127.0.0.1:8080/cocoon/mytest/testsaaaN.pdf
にアクセスします。




■この方法で、動的に生成するには・・・

 cocoonの下では、JSPとかは、このままでは動かせない(マッチしないとでてくる)ので、

  1.違うサーブレットから、このxmlファイルを置くところに、(上記例だとmytestフォルダの下)
    一意になるようなファイル名にして(たとえばセッションIDなどを使って)、XMLファイルを書き出す

  2.そのサーブレットから、上記XMLファイル名に対応するpdfファイルを
    リダイレクトする
    →ほかのサーブレットからだと、フォワードはできない。

 という方法で、できることはできるけど、あんまりかっちょ良くはない。

 どっちかというと、
   ・ジェネレーターをJSPにして
   ・ただ、PDFファイルを呼び出すだけで
 書き出して欲しい。

 この方法は、上記に書いたように、このままでは出来ないが、JSPGeneratorというのがあって、それを使うように設定すれば、簡単に出来る・・・・

 ・・・出来るのだが、次回は、XSPについて、説明する(^^;)


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Strutsは、マッシュアップに... | トップ | ユーザーの55%「SNSへの興味... »
最新の画像もっと見る

Weblog」カテゴリの最新記事