« 2007年09月07日 | メイン | 2007年09月09日 »
2007年09月08日
X-over Development Conferenceの御礼、XSL-FOの組版機能のご紹介
今日は、いよいよX-over Development Conferenceです。朝から張り切って出かけました。台風の影響もあり、若干、来場者の出足が悪いのではないかと心配していました。しかし、会場に来場された方には熱心に聞いていただけたようで、大変、良かったと思います。ご参加いただきました方々に、篤くお礼を申し上げます。
さて、今日の講演のポイントは、Webベースのシステムでも、組版という考えを盛り込んで、より綺麗なページを印刷できるようにしたい、ということにあります。XSL-FOはそのために十分使える技術と考えています。今日のお話が、XSL-FO普及のきっかけになればこの上ない喜びです。
幸い、XSL-FOの基本的な使い方については、藤島雅宏氏に「バッチ組版のためのXSL-FO指南」を作成していただくこともでき、XSL-FOの基礎を学習していただく準備ができたと思います。
さらに、XSL-FOは、非常にパワフルな機能をもっています。今日のデモでは、やや高度なXSL-FOの機能をご紹介するFOを作ってみました。高度と言いましても、私の理解できているレベルですのであまり大したことはないのですが、ご参考になればと思い、以下にご紹介します。
○今日のデモで使用しましたFOのサンプル:サンプルFO
○このFOをPDFに出力した結果:組版結果PDF
このFOでは、次のような機能を使用しています。
・奇数ページ、偶数ページで用紙レイアウト切替
<fo:page-sequence-master master-name="PM">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd"/>
<fo:conditional-page-master-reference odd-or-even="even"
master-reference="even"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
*レイアウトマスターセットで左右ページを別々に定義して左右ページのレイアウト切り替え。
・章などを奇数ページ起しとする
*force-page-count="even" を使用
・章見出しを奇数ページのヘッダに
<fo:static-content flow-name="OddPageHeader" font-size="10pt" font-family="serif">
<fo:block text-align="right">
<fo:retrieve-marker retrieve-boundary="page-sequence" retrieve-position="first-starting-within-page" retrieve-class-name="Sequence"/>
</fo:block>
</fo:static-content>
*奇数ページのヘッダのみ;fo:retrieve-markerで章のタイトルを取り出して設定。
・表分割時の動的テキスト/小計
<fo:table-footer>
<fo:retrieve-table-marker retrieve-class-name="subtotal" retrieve-position-within-table="last-starting-within-page" />
<fo:retrieve-table-marker retrieve-class-name="continued" retrieve-position-within-table="last-starting-within-page" />
</fo:table-footer>
*fo:retrieve-table-markerによる動的なテーブル・フッタ
・表ヘッダ再表示有無
*Table 3 table-omit-header-at-break="true" を設定
・PDF内部リンク
*<fo:basic-link internal-destination="XX"> による内部リンク
・PDFしおり作成
*<fo:bookmark-tree> による索引作成機能
・索引のページ参照の仕方
*索引のページの結合に関する様々なプロパティの設定
さてXSL-FOにつきましては、お陰様で日本国内での応用例も増えてきています。本日、発表しましたケーススタディにつきましては、別途、ご紹介したいと考えています。これまでの活用事例を研究してさらに良いシステムを作っていきたいものです。
投票をお願いいたします