[原创]终于搞定中文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区分大小写一直是乱码,搞了好久,希望大家别犯我这种低级错误。