PNGなどに変換して出力するツールです。RailsアプリケーションでPDF出力するために、内部で使えないか試してみました。FOは、印刷などでのレイアウトを指定するためのXML文書型で、直感的にはHTMLとCSSを混ぜたようなものです。FO仕様の最新版は、2006.12.5付W3C勧告のバージョン1.1です。FOに変換することになります。FO文書を用意してみます。FOPの最新版はバージョン0.94です。バイナリ版をダウンロードしてきて展開します。fopコマンドへのシンボリックリンクを適当なところに張るだけでOKです。VMでないといけません。gij版だとFOPを走らせたときにエラーが発生したりしました。速度もSun版のほうが速いです。FO文書を作ってみます。ファイル名をfop_1.foとして保存します。ルート要素はroot。layout-master-setで余白などを指定します。流し込むテキストなどのデータはpage-sequenceで与えます。テキストはblock要素の内容とし、font-sizeなどが指定できます。見栄えに関する属性は、CSS2とほぼ同じです。これをPDFに変換します。fop_1.pdf特にエラーもなく出力されました。表示も問題ありません。日本語フォント日本語を表示するために、TrueTypeフォントを使えるようにします。0.9.4では、フオントメトリクスファイルは不要です。指定すれば、自動的にフォントデータが参照されます。さざなみフォントで試してみます。conf/fop.xconfファイルをひな形にします。しないと参照されません。最初これに気付かず、なぜ修正しても反映されないのか悩みました。fileと書いてますね。/></font></fonts></renderer></renderers></fop>fontタグのmetrics-url属性に相対パスを書くと、実行時のカレントディレクトリが基準になります。font-tripletタグは複数書けますが、別名の指定になります。weight="bold"としたからといって、自動的に太字で表示できるわけではありません。foファイルを更新します。text-align="center">こんにちは。font-weight="bold">こんにちは。フォントがないのでフォント幅normalにfallbackする旨のメッセージが出力されます。文字化けしたりはしません。実用的なサンプル(2007.11.9加筆)実践的なFOファイルとして請求書を作ってみました。外部画像の参照、フォント選択、表、ヘッダ・フッタ、背景色の指定などをおこなっています。日本語部分が真っ白になります。FOの表オブジェクトは、HTMLの表と構造が似ています。表は行の集まりであり、行はセルの集まりです。FOPは、XML文書であるFOデータを与えればいいので、呼び出すほうのプログラミング言語やフレームワークを選びません。手書きでFOファイルを書こうとすると、タグ名(要素名)が長いのが難儀です。Webブラウザほど手軽ではありません。ラフにHTMLで書いて、XSLTでFOに変換して細部を調整するのがいいかもしれません。し、ERBでFOファイルを生成し、それからFOPに掛けることになります。外部リンクXSL-FOによるレイアウト見本テーマごとにFO見本と結果PDFがあります。FOPが対応していないタグ(要素)を使っていますが、FOを書く参考になります。