1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > FOP生成PDF中文乱码问题解决

FOP生成PDF中文乱码问题解决

时间:2020-09-20 22:27:00

相关推荐

FOP生成PDF中文乱码问题解决

版本:fop2.5

fop目前存在的缺点:

1、不支持水印 --可借助adobe acfobat工具或使用脚本实现

2、不支持文本自动换行 --自实现不确定是否支持,不确认是否有字符宽度计算api

3、中文字体兼容性操作麻烦 --需生成中文字符矩阵,嵌入到配置中

乱码效果:

FOP中文乱码问题解决:

1、下载fop包并解压

2、利用fop包中提供的工具生成中文字符矩阵,这里用“宋体”示例:

命令:

java -cpc:\fop\build\fop.jar;c:\fop\lib\commons-logging-1.0.4.jar;c:\fop\lib\commons-io-1.3.1.jar;c:\fop\lib\xmlgraphics-commons-2.4.jar org.apache.fop.fonts.apps.TTFReader -ttcname "simsun" c:\windows\fonts\simsun.ttc simsun.xml

生成的文件示例:

3、fop配置文件中添加字体配置, 可参考conf/fop.xconf配置文件

1)此处仅使用pdf生成,去掉配置中其他文件类型渲染配置

2)关闭pdf文件渲染下的字体自动扫描配置 --字体扫描加载比较慢,也比教占用资源

<!-- auto-detect fonts --><auto-detect/>

3)添加需嵌入的字体,配置如下

<!--新宋体//--><font metrics-url="file:///E:/IdeaProjects/fop-2.5/simsun.xml" kerning="yes" embed-url="file:///C:/Windows/Fonts/simsun.ttc"><font-triplet name="simsun" style="normal" weight="normal" /><font-triplet name="simsun2" style="normal" weight="bold" /><font-triplet name="simsun3" style="italic" weight="normal" /><font-triplet name="simsun4" style="italic" weight="bold" /></font>

【注】xml中url使用磁盘全路径需加上“file:///”前缀,否则解析异常,报:

.MalformedURLException: unknown protocol: e

4、Fop配置文件加载方式:

DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();Configuration cfg = cfgBuilder.buildFromFile(new File("E:/IdeaProjects/fop-2.5/fop.xml"));FopFactoryBuilder fopFactoryBuilder = new FopFactoryBuilder(new File(".").toURI()).setConfiguration(cfg);// configure fopFactory as desiredfinal FopFactory fopFactory = fopFactoryBuilder.build();

【注】不同版本的api有差异,具体版本请参见apache官网 快速入门-> 配置 FOP:/fop/2.5/configuration.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。