终于搞定中文docbook转换成PDF

1、下载libxslt工具

链接:在 Windows上使用DocBook写帮助文档

解压到:D:\GnuWin32\docbook\libxslt

 

2、下载fop 0.95

链接:http://apache.freelamp.com/xmlgraphics/fop/binaries/fop-0.95-bin.tar.gz
解压到:D:\GnuWin32\docbook\fop-0.95

 

3、下载docbook-xsl

链接:http://nchc.dl.sourceforge.net/project/docbook/docbook-xsl-ns/1.75.2/docbook-xsl-ns-1.75.2.zip
解压到:D:\GnuWin32\docbook\docbook-xsl

 

4、下载offo-hiphenation

链接:http://nchc.dl.sourceforge.net/project/offo/offo-hyphenation-utf8/0.1/offo-hyphenation-fop-stable-utf8.zip
解压到:D:\GnuWin32\docbook\fop-0.95\lib

 

5、生成字体描述文件和配置文件

新建D:\GnuWin32\docbook\fop-0.95\conf\TTFReader.zh-CN.bat,将将如下脚本拷入其中:

:: Step 1. 生成字体文件

set TTFReader=java -cp ..\build\fop.jar;..\lib\avalon-framework-4.2.0.jar;..\lib\batik-all-1.7.jar;..\lib\commons-logging-1.0.4.jar;..\lib\commons-io-1.3.1.jar;..\lib\serializer-2.7.0.jar;..\lib\xalan-2.7.0.jar;..\lib\xercesImpl-2.7.1.jar;..\lib\xml-apis-1.3.04.jar;..\lib\xml-apis-ext-1.3.04.jar;..\lib\xmlgraphics-commons-1.3.1.jar org.apache.fop.fonts.apps.TTFReader 



%TTFReader% C:\WINDOWS\Fonts\simhei.ttf %cd%\simhei.xml

%TTFReader% -ttcname "SimSun" C:\WINDOWS\Fonts\simsun.ttc %cd%\simsun.xml



:: Step 2. 生成配置文件

(

echo ^<?xml version=^"1.0^"?^>

echo ^<fop version=^"1.0^"^>

echo   ^<base^>.^</base^>

echo   ^<renderers^>

echo     ^<renderer mime=^"application/pdf^"^>

echo       ^<filterList^>

echo         ^<value^>flate^</value^>

echo       ^</filterList^>

echo       ^<fonts^>

echo         ^<font metrics-url=^"file:///%cd%\simhei.xml^" kerning=^"yes^" embed-url=^"file:///c:\windows\fonts\simhei.ttf^"^>

echo           ^<font-triplet name=^"simhei^" style=^"normal^" weight=^"normal^" /^>

echo           ^<font-triplet name=^"simhei^" style=^"normal^" weight=^"bold^" /^>

echo           ^<font-triplet name=^"simhei^" style=^"italic^" weight=^"normal^" /^>

echo           ^<font-triplet name=^"simhei^" style=^"italic^" weight=^"bold^" /^>

echo         ^</font^>

echo         ^<font metrics-url=^"file:///%cd%\simsun.xml^" kerning=^"yes^" embed-url=^"file:///c:\windows\fonts\simsun.ttc^"^>

echo           ^<font-triplet name=^"simsun^" style=^"normal^" weight=^"normal^" /^>

echo           ^<font-triplet name=^"simsun^" style=^"normal^" weight=^"bold^" /^>

echo           ^<font-triplet name=^"simsun^" style=^"italic^" weight=^"normal^" /^>

echo           ^<font-triplet name=^"simsun^" style=^"italic^" weight=^"bold^" /^>

echo         ^</font^>

echo       ^</fonts^>

echo     ^</renderer^>

echo   ^</renderers^>

echo ^</fop^>

) ^> %cd%\user.config

运行D:\GnuWin32\docbook\fop-0.95\conf\TTFReader.zh-CN.bat脚本,将在D:\GnuWin32\docbook\fop-0.95\conf目录下生成字体描述文件simsun.xml和simhei.xml,并且生成配置文件fop.zh-CN.conf

 

6、新建D:\GnuWin32\docbook\docbook-xsl\fo\docbook.zh-CN.xsl文件,内容如下:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 

                xmlns:fo="http://www.w3.org/1999/XSL/Format" 

				xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" 

				exclude-result-prefixes="doc" 

				version="1.0">

	<xsl:import href="docbook.xsl"/>

	<xsl:param name="body.font.family">simsun,serif</xsl:param>

	<xsl:param name="body.font.size">12</xsl:param>

	<xsl:param name="monospace.font.family">simsun,serif</xsl:param>

	<xsl:param name="title.font.family">simsun,serif</xsl:param>

	<xsl:param name="page.margin.inner">2cm</xsl:param>

	<xsl:param name="page.margin.outer">2cm</xsl:param>

	<xsl:param name="hyphenate">false</xsl:param>

	<xsl:param name="paper.type" select="'A4'"/>

	<xsl:param name="draft.mode" select="'no'"/>

</xsl:stylesheet>

 

7、现在就可以进行转换了,示例脚本如下:

PATH %PATH%;D:\GnuWin32\docbook\libxslt\bin;D:\Program Files\HTML Help Workshop

set FOP_PATH=D:\GnuWin32\docbook\fop-0.95



::set file=%1

set file=book

set cmd1=xsltproc --xinclude --output %file%.fo %cd%\..\docbook-xsl\fo\docbook.zh-CN.xsl %file%.xml 

set cmd2=%FOP_PATH%\fop -c %FOP_PATH%\conf\fop.zh-CN.conf -fo %file%.fo -pdf %file%.pdf



@echo Building FO file

%cmd1%

@echo Building PDF

%cmd2%

@echo Cleaning up

del %file%.fo

@echo Done

 

7、后记

在我尝试的过程中,在网上搜索了很久,但是一个细节没注意:我在docbook.zh-CN.xsl和fop.zh-CN.conf两个文件中分别用SimSun和simsun,由于fop区分大小写一直是乱码,搞了好久,希望大家别犯我这种低级错误。

你可能感兴趣的:(pdf)