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
コメント
コメントを投稿