分享
 
 
 

DocBook文件转换环境设定(下)

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

安装Formatter

使用XSL转换文件时,如果要转换成打印文件格式(如PDF、PostScript 等)时,通常必须分成两个步骤,先用XSLT processor将文件转换成 formatting objects,再用formatter将formatting objects转换成 打印文件。FOP是Apache计画所发展的一个formatter,可以把Formatting Object格式的文件转换成可打印文件,如PDF、PostScript等格式。

使用FOP同样需要有Java执行环境。下面以FOP 0.20.3版为例,示范 FOP的安装步骤:

1.从http://xml.apache.org 下载FOP 0.20.3版:

$ wget http://xml.apache.org/dist/fop/Fop-0.20.3-bin.tar.gz

2.将FOP套件解压缩:

$ tar zxvf Fop-0.20.3-bin.tar.gz

3.将所有以jar为附文件名的档案拷贝到Java的library目录下:

$ cp Fop-0.20.3/build/*.jar /usr/java/jdk1.3.1/lib

$ cp Fop-0.20.3/lib/*.jar /usr/javaj/jdk1.3.1/lib

4.将conf及hyph目录拷贝到适当的目录下(这两个目录在中文化时 才用的到):

$ mkdir -p /usr/local/share/fop

$ cp -a Fop-0.20.3/conf /usr/local/share/fop

$ cp -a Fop-0.20.3/hyph /usr/local/share/fop

FOP安装好之后,就可以将FO格式的文件转换成PDF了。不过和xalan 一样,执行FOP需要指定许多个CLASS PATH,所以还是得先写一个

shell script把程序包装起来。下面为shell script的范例,读者 可以依据自己的环境做修改:

#!/bin/sh

# fop.sh -- wrapper of apache fop

# JAVA 解译器的安装路径

JAVA=/usr/java/jdk1.3.1/bin/java

# JAVA library 的安装路径

JAVA_LIB=/usr/java/jdk1.3.1/lib

# 所有的类别路径

JAR=”fop.jar \

logkit-1.0b4.jar\

sax.jar xerces.jar\

avalon-framework-4.0.jar\

batik.jar xalan.jar\

jimi-1.0.jar\

xalanj1compat.jar”

for i in $JAR

do

CLASSPATH=”$CLASSPATH:$JAVA_LIB/$i”

done

export CLASSPATH

echo CLASSPATH=$CLASSPATH

# 执行

$JAVA $FOP_OPTS org.apache.fop.apps.Fop “$@”

将以上的shell script存成fop.sh,为了执行方便,可以拷贝到 /usr/local/bin。

中文化环境设定

如已完成前述安装作业,即已经把DocBook的文件转换环境建立起 来了。而如果要处理中文文件,还有一些设定要修改,此部份包括

DocBook XSL Stylesheet及FOP的中文字形,以下将针对这两个部份 分别说明。

DocBook XSL Stylesheet的中文化

DocBook XSL Stylesheet在转换成FO时所指定的字形只有英文字 形,如果不修改就直接套用在中文文件上,则所有的中文字最后都

将被取代成“#”字号输出。修改stylesheet时,为了保持DocBook 的完整起见,必须另外建立一个XSL档来继承原来的docbook.xsl,

并且修改部份的定义。假设取名为bg5docbook.xsl,其内容如下:

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'>

bkai

12

bkai

3.8cm

2.54cm

在bg5docbook.xsl中,使用xsl:import指令以继承docbook.xsl的 设定,并且修改了三个部份的设定,字形及字体大小、纸张大小、

以及边框大小。在中文化中,最重要的是设定字形,其余的可视需 \要而设定。在上例中,将文件的body及title字形设定为楷书(bkai), 纸张大小设定为A4,边框则设定为左边(内边)3.8公分,右边(外 边)2.54公分。最后一个变量设定,是为了修正页码显示的问题, 当DocBook中的字体大小超过10pt时,页码就会消失,原因是页码的 显示区域太小,formatter将页码显示的动作忽略了。该变量的预设 值为12pt,最大只能放10pt的页码。要个问题只需将显示区域设大一点就可以了,如上例设定为20pt。

DocBook在文件区域化的选项里,繁体中文文件的区域化属性为zh_tw, 但是FOP所认得的区域化属性为zh,如果FOP无法正确辨认出区域化 属性,则输出的中文文件的断行会出现问题,这是因为FOP将连续的 中文字当作是不可分割的单位之故。本文的作法是将DocBook XSL

Stylesheet内的common目录下的zh_tw.xml做修改,直将把第二行language=“zh_tw”改成language=“zh”即可。

FOP的中文化

在前一节中,DocBook已指定输出的字形为楷书,但是FOP本身并 没有附中文字形,使用者必须自己加入中文字形。加入字形要做两

件事情,第一是产生matrics檔,第二是在userconfig.xml档案中加 入字形信息。

FOP套件中提供一个TTFReader的程序,TTFReader可以从ttf字形 档产生matrics檔。为了执行上的便利,首先要将TTFReader包装在

shell script程序中,下列为包装范例:

#!/bin/sh

#

# ttfreader.sh

#

JAVALIB=”/usr/java/jdk1.3.1/lib”

CLASSPATH=”$JAVALIB/fop.jar:$JAVALIB/xerces.jar”

export JAVALIB CLASSPATH

java org.apache.fop.fonts.apps.TTFReader “$@”

将档案存成ttfreader.sh,并拷贝到/usr/local/bin,就可以用 来建立matrics檔了。假设系统中已经有文鼎楷书字形存放于

/usr/share/fonts/zh_TW/TrueType/bkai00mp.ttf目录下,下列的 指令可以产生matrics文件:

$ ttfreader.sh -fn arphic_kai /usr/share/fonts/zh_TW/TrueType

/bkai00mp.ttf/usr/local/share/fop/conf/bkai.xml

执行完后,在/usr/local/share/fop/conf/目录下会多出一个

bkai.xml的档案,bkai.xml就是文鼎楷书的matrics档。

接着要编辑/usr/local/share/fop/conf/userconfig.xml档案,将

下列的设定加入到userconfig.xml档案中:

embed-file=“/usr/share/fonts/zh_TW/TrueType/bkai00mp.ttf”>

embed-file=“/usr/share/fonts/zh_TW/TrueType/bkai00mp.ttf”>

embed-file=“/usr/share/fonts/zh_TW/TrueType/bkai00mp.ttf”>

编辑好userconfig.xml文件之后,FOP就可以使用文鼎楷书字形了。

试试中文的DocBook文件:

“http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd”>

这是一个中文的DocBook文件,供测试之用,看看中文字有 没有出现?断行有没有断得很混乱。如果没有 大 问题,那就恭喜你了!

将上列的文字存成test.xml,然后使用下列的指令将文件转成fo檔:

$ xalan.sh -in test.xml -xsl /usr/share/sgml/docbook/docbook-xsl-1.48

/fo/bg5docbook.xsl-out test.fo

产生fo档之后,再使用fop转成pdf檔:

$ fop.sh -c /usr/local/share/fop/conf/userconfig.xml-fo

test.fo -pdf test.pdf

产生test.pdf之后,再以acrobat reader开启,检查看看中文字 有没有出现,再看看断行有没有断得乱七八糟。

结语

本篇文章介绍了如何安装及设定DocBook 文件转换环境,并提供 简单的范例供读者参考。因为每个人的操作系统环境不尽相同,在 设定时可能有部份必须修改,如JAVA程序安装的路径等。

至于如何编辑DocBook文件,读者必须另外研读参考资料,例如, 中心吕学祥先生所撰写之“使用Emacs编辑XML”文章

(http://www.sinica.edu.tw/~lu)以及,O'Reilly出版社出版的 “DocBook:The Definitive Guide”,这本书除了到书店购买以外,

读者也可以直接从http://docbook.org网站免费下载。(全文完)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有