Xubuntu 12.04 で DocBook V5.0 から日本語 PDF を作成する。
Xubuntu 12.04 で DocBook V5.0 から日本語 PDF を作成してみました。
環境作成
1. Ubuntu ソフトウェアセンターから Eclipse をインストールします。
主な理由は apache ant をインストールすることですが、統合環境としても利用できます。
2. DocBook-XSL を取得します。
http://docbook.sourceforge.net/ より docbook-xsl-ns-1.77.0.zip をダウンロードします。
ダウンロードした docbook-xsl-ns-1.77.0.zip を /opt/docbook-xsl-ns-1.77.0 へ展開します。
3. Apache FOP を取得します。
http://xmlgraphics.apache.org/fop/ より fop-1.0-bin.zip をダウンロードします。
ダウンロードした fop-1.0-bin.zip を /opt/fop-1.0-bin.zip へ展開します。
環境作成に関して
Ubuntu では Ubuntu ソフトウェアセンターからパッケージをダウンロードするのが通常はおすすめなんですが、今回は eclipse 以外はマニュアルでインストールしています。
理由1: jar ファイルが /usr/share/java にまとめてインストールされてしまうため、かえってクラスパスの指定が面倒になるから。
fop を build.xml 経由で実行すると
とエラーが出ます。
理由2: インストールするモジュールがわかりずらい。
理由3: チームで同じ環境を作りにくい。
Windows でも Eclipse 以外のインストールは同じ手順でできるのでマニュアルの方がわかりやすいです。
サンプルファイル
build.xml
apache ant 用のビルドファイルです。このファイルは src にある *.dbk ファイルから build/*.fo ファイルを作成し、さらに *.pdf まで作成してしまうものです。
build.properties
build.xml の環境依存しそうな部分を別ファイルにしました。
docbook-fo.xsl
dbk から fo へ変換するためのスタイルシートです。
src/sample.dbk
最低限必要なことを記述した(と思っている) xml ファイルです。src というフォルダに入れます。
サンプルのビルド
サンプルを保存したディレクトリで
$ ant
で sample.pdf が出来上がります。
以上です。お疲れ様でした。
続きます。 参考サイト
以下のサイトを参考にしました。
http://www.docbook.org
http://docbook.sourceforge.net/
http://docbook.org/tdg5/
http://sagehill.net/book-description.html
http://xmlgraphics.apache.org/fop/
http://cx5software.com/article_docbook/
http://www.kobu.com/index.htm
http://d.hatena.ne.jp/suttanipaata/20110504/1304527992
環境作成
1. Ubuntu ソフトウェアセンターから Eclipse をインストールします。
$ sudo apt-get install eclipse
主な理由は apache ant をインストールすることですが、統合環境としても利用できます。
2. DocBook-XSL を取得します。
http://docbook.sourceforge.net/ より docbook-xsl-ns-1.77.0.zip をダウンロードします。
ダウンロードした docbook-xsl-ns-1.77.0.zip を /opt/docbook-xsl-ns-1.77.0 へ展開します。
3. Apache FOP を取得します。
http://xmlgraphics.apache.org/fop/ より fop-1.0-bin.zip をダウンロードします。
ダウンロードした fop-1.0-bin.zip を /opt/fop-1.0-bin.zip へ展開します。
環境作成に関して
Ubuntu では Ubuntu ソフトウェアセンターからパッケージをダウンロードするのが通常はおすすめなんですが、今回は eclipse 以外はマニュアルでインストールしています。
理由1: jar ファイルが /usr/share/java にまとめてインストールされてしまうため、かえってクラスパスの指定が面倒になるから。
fop を build.xml 経由で実行すると
[fop] SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError. [fop] SLF4J: See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details
とエラーが出ます。
理由2: インストールするモジュールがわかりずらい。
理由3: チームで同じ環境を作りにくい。
Windows でも Eclipse 以外のインストールは同じ手順でできるのでマニュアルの方がわかりやすいです。
サンプルファイル
build.xml
apache ant 用のビルドファイルです。このファイルは src にある *.dbk ファイルから build/*.fo ファイルを作成し、さらに *.pdf まで作成してしまうものです。
<?xml version="1.0" encoding="utf-8"?>
<project name="docbook-ja" default="pdf" basedir=".">
<property file="build.properties" />
<property name="build.dir" value="build" />
<property name="src.dir" value="src" />
<property name="xsl" value="${src.dir}/docbook-fo.xsl" />
<path id="xslt.path">
<fileset dir="${xalan.dir}">
<include name="*.jar" />
</fileset>
<pathelement path="${docbook-xsl-xalan.path}" />
</path>
<taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop">
<classpath>
<fileset dir="${fop.dir}/lib">
<include name="*.jar" />
</fileset>
<fileset dir="${fop.dir}/build">
<include name="*.jar" />
</fileset>
<pathelement path="${docbook-xsl-xalan.path}" />
</classpath>
</taskdef>
<target name="pdf" depends="fo" description="create *.pdf from *.fo files">
<fop format="application/pdf" userconfig="fop.xconf">
<fileset dir="${build.dir}">
<include name="*.fo"/>
</fileset>
</fop>
</target>
<target name="fo" description="create *.fo from *.dbk files">
<xslt style="${xsl}" classpathref="xslt.path"
basedir="${src.dir}" destdir="${build.dir}" includes="*.dbk"
extension=".fo"> <sysproperty
key="org.apache.xerces.xni.parser.XMLParserConfiguration"
value="org.apache.xerces.parsers.XIncludeParserConfiguration" />
</xslt>
</target>
<target name="clean" description="Remove intermeddiate files">
<delete>
<fileset dir="${build.dir}" includes="*.fo" />
<fileset dir="${build.dir}" includes="*.pdf" />
</delete>
</target>
</project>
build.properties
build.xml の環境依存しそうな部分を別ファイルにしました。
fop.dir = /opt/fop-1.0
xalan.dir = ${fop.dir}/lib
docbook-xsl.dir = /opt/docbook-xsl-ns-1.77.0
docbook-xsl-xalan.path = ${docbook-xsl.dir}/extensions/xalan27.jar
docbook-fo.xsl
dbk から fo へ変換するためのスタイルシートです。
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:import href="file:///opt/docbook-xsl-ns-1.77.0/fo/docbook.xsl"/> <xsl:param name="paper.type">A4</xsl:param> <xsl:param name="title.font.family">MS PGothic, TakaoExGothic, TakaoPGothic</xsl:param> <xsl:param name="body.font.family">MS PMincho, TakaoExMincho, TakaoPMincho</xsl:param> <xsl:param name="monospace.font.family">MS UI Gothic, TakaoGothic</xsl:param> <xsl:param name="hyphenate">false</xsl:param> <xsl:param name="fop1.extensions" select="1" /> <xsl:param name="use.extensions" select="1" /> </xsl:stylesheet>
src/sample.dbk
最低限必要なことを記述した(と思っている) xml ファイルです。src というフォルダに入れます。
<?xml version="1.0" encoding="utf-8"?>
<book xmlns="http://docbook.org/ns/docbook"
version="5.0" xml:lang="ja">
<info>
<title>
タイトル
</title>
<author>
<personname>
名前
</personname>
</author>
</info>
<chapter>
<info>
<title>
章見出し
</title>
</info>
<para>
本文
</para>
</chapter>
</book>
サンプルを保存したディレクトリで
$ ant
で sample.pdf が出来上がります。
以上です。お疲れ様でした。
続きます。 参考サイト
以下のサイトを参考にしました。
http://www.docbook.org
http://docbook.sourceforge.net/
http://docbook.org/tdg5/
http://sagehill.net/book-description.html
http://xmlgraphics.apache.org/fop/
http://cx5software.com/article_docbook/
http://www.kobu.com/index.htm
http://d.hatena.ne.jp/suttanipaata/20110504/1304527992
コメント
コメントを投稿