さっき、Cocoonのインストールを書いたけど、これでは、日本語が出ない。
なので、日本語を出す設定について、さらにメモメモ。
Cocoon2による日本語PDF作成 設定メモ
http://www.kcat.zaq.ne.jp/jasper/groupware/Cocoon2_PDF.html
を参照してというか、それをなぞって、一部最新バージョンに更新した形で書いてます。
前の記事のインストールが終わったところから書いています。なので、OSなどの環境は、前の記事と同じです。
なお、文中の< > ¥は、全部半角です。
■フォント用のフォントメトリクスファイルを作成
・Cドライブの直下にfop-fontsというフォルダを作りました。
→コマンドラインから mkdir c:¥fop-fonts を実行しましたけど、
すなおに、新規作成でつくっても、たぶんOK
・そしたら、cocoonの下のWEB-INF¥libに移動します
→前の例だと、
C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥webapps¥cocoon¥WEB-INF¥lib
・そこに、フォントメトリクスファイルを作成(TTFReader)するバッチファイルを作成
→さっき移動したcocoon¥WEB-INF¥libに、mkfonts.batというファイルを作成し、以下の内容を書きます。
java -cp fop-0.20.5.jar;xercesImpl-2.9.1.jar;xml-apis-1.3.04.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS Gothic" C:¥WINDOWS¥Fonts¥MSGOTHIC.TTC c:¥fop-fonts¥msgothic.xml java -cp fop-0.20.5.jar;xercesImpl-2.9.1.jar;xml-apis-1.3.04.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS PGothic" C:¥WINDOWS¥Fonts¥MSGOTHIC.TTC c:¥fop-fonts¥mspgothic.xml java -cp fop-0.20.5.jar;xercesImpl-2.9.1.jar;xml-apis-1.3.04.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS UI Gothic" C:¥WINDOWS¥Fonts¥MSGOTHIC.TTC c:¥fop-fonts¥msuigothic.xml java -cp fop-0.20.5.jar;xercesImpl-2.9.1.jar;xml-apis-1.3.04.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS Mincho" C:¥WINDOWS¥Fonts¥MSMINCHO.TTC c:¥fop-fonts¥msmincho.xml java -cp fop-0.20.5.jar;xercesImpl-2.9.1.jar;xml-apis-1.3.04.jar org.apache.fop.fonts.apps.TTFReader -ttcname "MS PMincho" C:¥WINDOWS¥Fonts¥MSMINCHO.TTC c:¥fop-fonts¥mspmincho.xml |
(上記¥は、本当は半角の円マークなので、作成するときは、置換してください。java -cp から.xmlで1行です)
・そのバッチファイルを実行すると、c:¥fop-fontsにファイルが出来るはず。
■FOPのユーザーコンフィグレーションファイルを作成
上記の参照サイトに、この例でやっているコンフィグレーションファイルがおいてあるようです。
config.xml
これをダウンロードしてきて、embed-fileの、C:¥WINNT¥Fontsを、C:¥WINDOWS¥Fontsに置換しました。
それを、c:¥fop-fontsの下に置きました。
■PDFシリアライザーの設定を変更
cocoonの直下にあるsitemap.xmap、つまり、
C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥webapps¥cocoon¥sitemap.xmap
をエディタで開いて、fo2pdfのところを書き換えます。
以下のところを探して、赤字のところを入れてください。
<map:serializer logger="sitemap.serializer.fo2pdf" mime-type="application/pdf" name="fo2pdf" src="org.apache.cocoon.serialization.FOPSerializer"> <user-config>C:/fop-fonts/config.xml</user-config> <!-- This element specifies URL to FOP user configuration file. It can be absolute file URL or relative to the servlet context. Examples: <user-config>file:/C:/cocoon/fop-config.xml</user-config> <user-config>WEB-INF/fop-config.xml</user-config> --> |
(上記< > ¥は、本当は半角なので、作成するときは、置換してください。)
■日本語コンテンツの作成 その1:XMLファイル作成
上記までが(サーブレット)全体設定で、これからが、個々のコンテンツの設定です。
今回は、前の例のHelloのPDFを置き換えることにします。
前回のHelloのPDFは、追っていくと分かるのですが(最終的に
C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥webapps¥cocoon¥samples¥blocks¥fop
にいき、そこのsitemap.xmap中、hello.pdfのところをみると、
XMLファイルは
samples/hello-world/content/hello.xml
スタイルシートは
samples/hello-world/style/xsl/page2fo.xsl
を使っているそうです。
そこで、
C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥webapps¥cocoon¥samples¥hello-world¥content¥hello.xml
の内容を、上記サイトのXMLのサンプルファイル(これ)に置き換えます。
■日本語コンテンツの作成 その2:スタイルシート修正
先ほど書いたように、スタイルシートは
C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥webapps¥cocoon¥samples¥hello-world¥style¥xsl¥page2fo.xsl
にあります。これを書き換えます。書き換えポイントは2つ
(1)fo:rootタグを探してください
→fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"のあとに、language="ja"を追加
(2)xsl:template がならんでいるところに
以下のものを追加
<xsl:template match="mincho"> <fo:block font-family="MS-Mincho" font-size="12pt" space-before.optimum="12pt" text-align="left"> <xsl:apply-templates/></fo:block> </xsl:template> <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> |
(上記< > ¥は、本当は半角なので、作成するときは、置換してください。)
■で、起動する
あとは。前に書いた「5.PDFのHelloWorldをだす。」と同じ。
Cocoonのページを出し、PDFのページにいくと、置き換えた日本語のHelloが見える。