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

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

Cocoonで自分の作ったXMLをPDF化する

2008-10-09 13:34:00 | Weblog

Cocoonのセットアップについて書いたので、次に、
まず、自分か作ったXMLファイルをCocoonでPDF化する方法について。
前回までの、作業の続きから書きます。




■必要なファイル等

Cocoonで1コンテンツ(1画面)に必要なファイルは3つ
sitemap.xmap 設定ファイル
XMLファイル もともとのコンテンツ(ジェねレート)
xslファイル フォーマット変換(トランスフォーム)

このうち、XMLファイルは、まあ、コンテンツごとにあるとして、XSLファイルは同じスタイルで出すのなら1つでいいし、sitemap.xmapは、コンテンツが入っているフォルダ1つに対して1個でいい
 なお、Cocoonの下に、sitemap.xmapがあって、ここで、fo2pdfのシリアライザを登録したけど、もし、Cocoonの直下から呼び出すなら、この直下のsitemap.xmapを修正するのでもいい。
 でも、今回は、それだとわかりにくので、新たにフォルダを作ります。




■つくりかた

Cocoonのフォルダの下、今まで挙げた例だと、
C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥webapps¥cocoon
の下にmytestというフォルダをつくって、ここに、いろいろ入れていくことにします。

まずは、XMLファイル、今回は、こんなかんじの・・・
<?xml version="1.0"?>
<page>
<title>フォントチェック5</title>
<mincho>明朝体です</mincho>
<gothic>ゴシックです</gothic>
</page>

(上記< >は、本当は半角です)

これを、test.xmlというファイル名で、今作ったmytestフォルダの下に入れます。

つぎは、XSLファイル。
まず、前回使った、page2fo.xslをコピーして、ゴシックを以下のように追加します
  <xsl:template match="pmincho">
    <fo:block font-family="MS-PMincho" font-size="12pt" space-before.optimum="12pt" text-align="left">
      <xsl:apply-templates/>
    </fo:block>
  </xsl:template>

  <xsl:template match="gothic">
    <fo:block font-family="MS-Gothic" font-size="12pt" space-before.optimum="12pt" text-align="left">
      <xsl:apply-templates/>
    </fo:block>
  </xsl:template>

</xsl:stylesheet>

(上記< >は、本当は半角です。赤字が追加部分です)

で、次にsitemap.xmapなんですけど、その前に少し説明




■パイプラインの仕組み

Cocoonでは、1つの画面というか、コンテンツを表示するのに、パイプラインという概念を使います。

こんなかんじ。
http://cocoon.apache.org/2.1/userdocs/concepts/367.daisy.img

つまり

 ジェネレートであるXMLファイル
     ↓
 トランスフォーム(実際はXSLT)で、XMLからFOファイルに変換←XSLに変換方法
     ↓
 シリアライザ(fo2pdf:fop)でfoからPDFに

ってかんじで、ながれていくので、パイプライン
(パイプラインじゃなくって、ベルトコンベヤーじゃないの?というコメントは受け付けません)




■sitemap.xmap

ということで、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 src="test.xml"/>
        <map:transform src="page2fo.xsl"/>
        <map:serialize type="fo2pdf"/>
      </map:match>
    </map:pipeline>
  </map:pipelines>
</map:sitemap>

(上記< >は、本当は半角です)
これを、sitemap.xmapとして、mytestフォルダの下に置きます。




■アクセス
ってことで、そーすると、このようにファイルが置けるはずです。

そしたら、Tomcat起動
ブラウザから
http://127.0.0.1:8080/mytest/test.pdf
で、PDFファイルが見れるはずです。


今回は、かんたんな、XSLでやったので、しょぼいけど、
もっとFOをおぼえて、すんごいXSLを書けば、
なんか、かっこいい帳票でも、出てきそうな雰囲気を、かんじていただけましたあ・・??



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする