- 论坛徽章:
- 0
|
xsl-fo,fop的简介,以及中文字体处理
项目需要在评估pdf生成技术,目前知道的有apache的fop和以前使用过的itext。
xsl-fo简介
fop是基于w3c标准的xsl-fo格式处理,xsl-fo是xsl技术的一部分,xml文档的格式化包含两部分,转换和格式化输出。xsl针对这两部分也推出两套标准,xslt和xsl-fo。如果xml只是转换为html这类格式,使用xslt即可,如果要转换到pdf等格式,需要使用xsl-fo。
xsl-fo其实也只是定义了一大堆format object,例如页面,表格等等,但没有限定使用什么方式显示,你可以转换成pdf,svg,甚至gui控件(fop有一种输出方式就是awt)。所以从xml文件到pdf的流程是:
xslt fop
xml---------->xsl-fo------------>pdf
fop使用:
网上下载fop最新的包,我下载的是fop0.20.5,解开。目录下有基本命令fop.bat(windows),fop.sh(unix),直接输入可以看到帮助。很简单,没什么好说的。examples/fo下有很多现成的fo文件,演示了fo中的各种格式,可以选择自己感兴趣的看看。
中文处理:
中文是开发人员心中永远的痛。同样,fop缺省生成的pdf没法显示中文。需要经过一番处理:
字体注册:选择自己要用的字体(例如simsun.ttc),使用fop的TTFReader转换,
java -cp buildfop.jar;libavalon-framework.jar;libxml-apis.jar;libxercesImpl.jar;libxalan.jar org.apache.fop.fonts.apps.TTFReader -ttcname "SimSun" simsun.ttc fontsimsun.xml
编辑自己要用的config文件,cp conf/userconfig.xml myconfig.xml,增加simsun字体
在fo文件中指定使用的字体,下面的文件是改编自examples/embedding/xml/fo/helloworld.fo
你好!
使用fop转换:
fop -c myconfig.xml helloworld_zh.fo -pdf output.pdf
用acrobat reader打开可以看到中文了:),linux下的xpdf也没有问题
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4200/showart_31762.html |
|