当前位置: 首页 > 工具软件 > FOP > 使用案例 >

java fop_XSL-FO 和FOP相关技术详解(转载)

乌修筠
2023-12-01

最近调查了一个新鲜东东。XSL-FO和FOP,用来将FO文件生成PDF文件,觉得它是个不错的东东,所以记下来,与大家分享。

相关术语:

XSL-FO(XML Stylesheet Language-Formatting Objects)

XSL-T(XSL Transformations)

FOP (Formatting Objects Processor)

英文教程:

FOP下载地址:

注意:fop.jar要放在你的CLASSPATH中。

命令格式:

-------------------------------------------------------------------

至于XSL-FO的起源,特点和作用我就不多啰嗦了,祥细说明在网上到处都是,自已去看吧。我只想来点实用的。在这里只要了解一点,XSL-FO他只是描述了页面展现给用户的时候它应该是什么样子的就行了。

1:直接将fo文件通过FOP命令转换成pdf文件。

格式: fop test.fo test.pdf

2:将xml+xslt(样式表文件)转换成pdf文件。

格式:fop -xsl test.xsl -xml test.xml -pdf test.pdf

--------------------------------------------------------------------

对双字节(中/日文)的支持:

--------------------------------------------------------------------

这里我只介绍日文的例子,中文照着做就行了。

实现步骤:

1.使用批处理生成字体文件(XML)

java -cp build\fop.jar;lib\avalon-framework-cvs-20020806.jar; org.apache.fop.fonts.apps.TTFReader -ttcname "MS Gothic" C:\WINNT\Fonts\MSGOTHIC.TTC msgothic.xml

注意:TTC文件和TTF文件的生成方式不同。

上面给出的是TTC字体文件的例子。

TTF命令格式是:

java -cp build\fop.jar;lib\avalon-framework-cvs-20020806.jar; org.apache.fop.fonts.apps.TTFReader C:\WINNT\Fonts\Cyberbit.ttf msmincho.xml

上面只用到了fop.jar和avalon-framework-cvs-20020806.jar,这因为我的FOP Ver是0.20.5,如果小于这个版本则要加上其他的包,这个在网上的教程没有说,

结果我用他们给出的命令格式狂试,结果就是出错,最后还是在apache网上找到了正解,

擦汗....

2.将生成的字体文件注册到fop。

修改下面的配置文件conf/userconfig.xml

增加下面的内容:

3.利用FOP再次生成PDF文件(FOP命令格式有变)

修改你的FOP.BAT批处理文件,将最后一行

java -cp "%LOCALCLASSPATH%" org.apache.fop.apps.Fop %1 %2 %3 %4 %5 %6 %7 %8

修改成

java -cp "%LOCALCLASSPATH%" org.apache.fop.apps.Fop -c conf/userconfig.xml %1 %2 %3 %4 %5 %6 %7 %8

也就是增加了-c conf/userconfig.xml参数。

网上很多地方这一点也没说到,害得我注册好字体后怎么试都不成功,生成的PDF就是不能正常显示日文。后来想想修改后的配置文件没有用到,到网上查了一下才知道那里要修改一下,增加-c参数,我狂晕~~~~~。

要验证你的日文是否被正确显示,针对FO文件需要修改以下地方有:

原:

line-height="30pt">

Hello~kaegunテスト

现:

line-height="30pt">

Hello~kaegunテスト

如果你是用XML+XSLT的方式成生PDF,则要修改xsl文件

原:

font-family="serif"

line-height="24pt"

space-after.optimum="15pt"

background-color="blue"

color="white"

text-align="center"

padding-top="3pt">

现:

font-family="Gothic"

line-height="24pt"

space-after.optimum="15pt"

background-color="blue"

color="white"

text-align="center"

padding-top="3pt">

经过上述操作后,用新的批处理命令即可生成能正确显示日文的PDF文件了。

 类似资料: