Entry

FOP を使ってみる(その1)

2005年03月19日

数年前にいぢったものの,日本語対応が怪しくて挫折した Apache FOP を,もう一度いぢってみることにしました。FOP は Java で書かれた Apache project の XSL-FO プロセッサです。

XSL-FO というのは,XSL の片割れ(XSL = XSLT + XSL-FO)で,相方と比べてあまり人気のない方のこと……。XML は文書(データ)の論理構造だけをマークアップする目的で設計されていて,「見た目」は XSL で処理するという建前になっています。XSLT(eXtensible Styleshee Language Transformations)が「XML を見た目(組版)用に変換する」のに対して,XSL-FO(eXtensible Stylesheet Language Formatting Object)は実際に組版するためのスタイルシートというわけです。具体的に,用紙の大きさやマージンの取り方を指定する言語が XSL-FO というわけ。随分知られている規格なので,あらためて説明するまでもありませんね。

FOP を使うと,XSL-FO ファイル(データ)を PDF 形式のファイルに変換できます。市販のプロセッサ には,Antenna House の XML Formatter なんてのがあるけれど,FOP はフリーです。PDF を作れるということは,XHTML なんかも XML ですから,ウェブページを PDF にするなんてこともできるわけですね。うまくいけばの話ですが……。

FOP のインストール

FOP を使うための手順は,次のような感じになります。

  • FOP 等々をインストール
  • フォントメトリックファイルを作る
  • userconfig.xml をいぢって,フォントを登録する
  • XSL-FO ファイルを用意する
  • FOP で PDF に変換

まずは,必要なモノをインストールしちゃいましょう。以下のモノが必要です。ここでは,例によって Ports からインストールしました。

  • JDK(java/jdk14) - いわずもがな……
  • FOP 0.20.5(textproc/fop) - XSL-FO processer

JDK は FreeBSD の Ports に各種揃っているけれど,適当なモノを選べばいいと思います。強いて挙げると,XML を使うので JDK 1.4 以降がいいんじゃないでしょうか。

フォントメトリックファイルを作る

次に,フォントメトリックファイルを作ります。これは,その名の通りメトリック情報(文字の幅や高さ)を記録したファイルです。実はこのファイル,欧文の基本フォント(Helvetica 等)を使うときには不要です。ここでは日本語を使いたいので,(MS にはナイショで)MS Gothic を登録することにします。

メトリックファイルを作るプログラムは,FOP に添付してある TTFReader なるものです。Ports でインストールすると,FOP(fop.jar)が ${PREFIX}/share/fop/build 以下にインストールされるけれど,ここの CLASSPATH は通っていないので,適宜 CLASSPATH を通しておきましょう。ここでは,

# cp /usr/local/share/fop/build/fop.jar ${JAVA_HOME}/jre/lib/ext/

としておきました。あまり意味は無いんですけど……(長々と CLASSPATH を書くのが面倒だっただけ)。TTFReader は Xerces 等々も参照するようだけれど,うちの JDK は 1.4 なので JDK 同梱のライブラリを使いました。これを使わない場合は,xerces.jar 等への CLASSPATH も通しておく必要があります。Xerces 等は Ports から FOP を導入すると付いてきます(${PREFIX}/share/fop/lib 以下)。

さて,それでは,TTFReader を使ってみましょう。msgothic.ttc が /usr/X11R6/lib/X11/fonts/truetype/msgothic.ttc にある場合,次のようにしてメトリックファイルを作ります(‘\’は1行)。

% java org.apache.fop.fonts.apps.TTFReader -ttcname "MS Gothic" \
    /usr/X11R6/lib/X11/fonts/truetype/msgothic.ttc msgothic.xml 
TTF Reader v1.1.1

Reading /usr/X11R6/lib/X11/fonts/truetype/msgothic.ttc...

This is a TrueType collection file with 3 fonts
Containing the following fonts: 
* MS Gothic
MS PGothic
MS UI Gothic
Number of glyphs in font: 20458
Postscript format 3
Creating xml font file...

Creating CID encoded metrics
Writing xml font file msgothic.xml...

This font contains no embedding license restrictions

出力の7行目から9行目を見てみると,TTC ファイルの中身を解析しているのが分かります。どうやら `*' マークが付いているフォント(MS Gothic)のメトリック情報を作ったようですね。TTC ファイルは複数の TrueType フォントをまとめているので,残りのフォント(`MS PGothic',`MS UI Gothic')のメトリック情報も作っておきましょう。フォント名は,-ttcname で選択できます。

今日はここまで

まだ何もやってない感じもするんですけれど,とりあえず今日はここまでにしておきます。次回は,userconfig.xml を作って実際に FOP を使ってみようと思います。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN