DocBook文書からPDFを実際に出力してみます。 大まかな流れとしては以下のようになると思います。
DocBook文書をDocBook-XSLを使用してFOへ変換します。
必要なもの:FO変換用のDocBook-XSLの定義ファイル
FOをApache FOPを使用してPDFへ変換します。
以下のようなXSLファイルを作成します。
例 V.3. FO出力用のXSLファイルのサンプル
docbook-pdf.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version='1.0'>
<xsl:import href="../docbook-xsl-1.70.1/fo/docbook.xsl" />
<xsl:param name="chunker.output.encoding" select="'UTF-8'" />
<xsl:param name="fop.extensions" select="1" />
<xsl:param name="paper.type" select="'A4'" />
<xsl:param name="draft.mode" select="'no'" />
<xsl:param name="section.autolabel" select="1" />
<xsl:param name="section.label.includes.component.label" select="1" />
<xsl:param name="hyphenate">false</xsl:param>
<xsl:param name="chapter.autolabel" select="'I'"/>
<xsl:param name="callout.graphics.extension" select="'.gif'"/>
<xsl:param name="title.font.family" select="'MSGothic'" />
<xsl:param name="body.font.family" select="'MSMincho'" />
<xsl:param name="sans.font.family" select="'MSGothic'" />
<xsl:param name="monospace.font.family" select="'MSMincho'" />
</xsl:stylesheet>
![]() |
インポートするxslファイルを指定します。 |
![]() |
FOP を使用する場合(0.20.5またはそれ以前のバージョン)は |
![]() |
出力する用紙サイズの設定をします。 |
![]() |
ドラフトモードで作成するかどうかのパラメータ。 |
![]() |
節の自動附番を行うかどうかのフラグ。デフォルトは |
![]() |
番号のつけ方で
Chapter 3. Using a mouse
1. Basic mouse actions sect1
1.1 Left button sect2
1.2 Right button sect2
1.2.1 Context menus sect3
2. Selecting sect1
2.1 Click and drag
2.2 Double click
|
![]() |
[ERROR] Couldn't find hyphenation pattern ja
[ERROR] Error building hyphenation tree for language ja
|
![]() |
章の番号の付け方の定義
|
![]() |
calloutで使用する画像の形式。デフォルトは png だが,FOPの場合はエラーが発生するので、gifにした。 |
![]() |
このフォント名は FOP のユーザー・コンフィグレーション・ファイルで定義したフォント名を指定します。 フォント名指定を誤ると、FOP がフォントを見つけられず、作成される PDF では、該当箇所が "#" と表示されてしまいます。 |
PDF生成用のbuild.xmlファイルと
プロパティファイルbuild.propertiesを作成します。
build.properties docbook.home=../docbook-xml-4.5CR3 fop.home=../fop-0.20.5 docbook.dtd=${docbook.home}/docbookx.dtd docbook.public.id=-//OASIS//DTD DocBook XML V4.5//EN lib.dir=../lib xsl.dir=../docbook-xsl-1.70.1 src.dir=${basedir}/contents dest.dir=${basedir}/pdf source=helloworld.xml
例 V.4. PDF出力用のbuild.xmlファイルサンプル
build.xml
<project name="helloworld-pdf.sample" basedir="." default="all">
<property file="build.properties" />
<taskdef name="fop"
classname="org.apache.fop.tools.anttasks.Fop">
<classpath>
<pathelement location="${fop.home}/build/fop.jar"/>
<pathelement location="${fop.home}/lib/avalon-framework-cvs-20020806.jar"/>
<pathelement location="${fop.home}/lib/batik.jar"/>
</classpath>
</taskdef>
<target name="clean">
<delete dir="${dest.dir}"/>
<mkdir dir="${dest.dir}"/>
</target>
<target name="all">
<antcall target="clean"/>
<antcall target="pdf"/>
</target>
<target name="pdf">
<copydir dest="${dest.dir}/images"
src="${xsl.dir}/images"/>
<xmlvalidate warn="false">
<xmlcatalog>
<dtd publicId="${docbook.public.id}"
location="${docbook.dtd}" />
</xmlcatalog>
<fileset dir="${src.dir}">
<include name="${source}" />
</fileset>
</xmlvalidate>
<xslt basedir="${src.dir}"
destdir="${dest.dir}"
style="${basedir}/docbook-pdf.xsl"
extension=".fo"
includes="helloworld.xml">
<classpath>
<pathelement location="${lib.dir}/xalan.jar" />
</classpath>
<xmlcatalog>
<dtd publicId="${docbook.public.id}" location="${docbook.dtd}" />
</xmlcatalog>
</xslt>
<fop format="application/pdf"
basedir="${dest.dir}"
outdir="${dest.dir}"
messagelevel="debug"
userconfig="${fop.home}/conf/userconfig.xml">
<fileset dir="${dest.dir}">
<include name="*.fo"/>
</fileset>
</fop>
</target>
</project>
![]() |
Apache FOPにはAnt用のタスク定義が行えるクラスが付属しているので 定義します。 |
![]() |
DocBook-XSLスタイルシートを使用してDocBook文書から FOへ変換する処理を記述しています。 |
![]() |
Apache FOPを使用してFOファイルからPDFへ変換する処理を記述しています。 |
変換対象のDocBook文書は項IV.3. 「DocBook文書の修正」で作成した文書を使います。
Ant実行後にhelloworld.pdf が作成されます。