FOP生成PDF中文乱码问题解决
版本:fop2.5
fop目前存在的缺点:
1、不支持水印 --可借助adobe acfobat工具或使用脚本实现
2、不支持文本自动换行 --自实现不确定是否支持,不确认是否有字符宽度计算api
3、中文字体兼容性操作麻烦 --需生成中文字符矩阵,嵌入到配置中
乱码效果:
FOP中文乱码问题解决:
1、下载fop包并解压
2、利用fop包中提供的工具生成中文字符矩阵,这里用“宋体”示例:
命令:
java -cp c:\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:///”前缀,否则解析异常,报:
java.net.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 desired
final FopFactory fopFactory = fopFactoryBuilder.build();
【注】不同版本的api有差异,具体版本请参见apache官网 快速入门-> 配置 FOP:https://xmlgraphics.apache.org/fop/2.5/configuration.html
FOP生成PDF中文乱码问题解决相关推荐
- php生成pdf乱码_php+tcpdf生成pdf: 中文乱码
TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的. 场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然还有许多其它选择,但是这个应 ...
- java生成pdf文件乱码问题解决
原因一:查看下是不是模版的问题,生成的pdf模版,是通过word转来,用最新的word版本生成pdf模版 原因二:往pdf中填充的字体乱码,需要针对填充pdf域进行设置字体和格式
- 使用ubuntu 10.04中的中文乱码问题解决
2019独角兽企业重金招聘Python工程师标准>>> 1.ibus输入法 Ubuntu 系统安装后已经自带了ibus输入法,在英语环境下默认不启动. 配置ibus自动启动可以在ub ...
- mysql导出数据到表格讲解大全(导出数据带表头,导出数据中文乱码问题解决)
方法1 使用sqlyang工具 1.本地准备好一个文件 2.选择数据 3.点击图中所示按钮 ,选择复制所有行到剪贴板 4.一般都选择确定,无须修改 5 打开之前的文件,粘贴保存 方法2 使用mysql ...
- springMVC保存数据到mysql数据库中文乱码问题解决方法
springMVC保存数据到mysql数据库中文乱码问题解决方法 参考文章: (1)springMVC保存数据到mysql数据库中文乱码问题解决方法 (2)https://www.cnblogs.co ...
- java执行cmd命令,返回结果中文乱码问题解决
java执行cmd命令,返回结果中文乱码问题解决 参考文章: (1)java执行cmd命令,返回结果中文乱码问题解决 (2)https://www.cnblogs.com/kwaitfort/p/90 ...
- Zip文件中文乱码问题解决方法(MAC->Windows)
Zip文件中文乱码问题解决方法(MAC->Windows) 参考文章: (1)Zip文件中文乱码问题解决方法(MAC->Windows) (2)https://www.cnblogs.co ...
- python3 库pandas写入csv格式文件出现中文乱码问题解决方法
python3 库pandas写入csv格式文件出现中文乱码问题解决方法 参考文章: (1)python3 库pandas写入csv格式文件出现中文乱码问题解决方法 (2)https://www.cn ...
- centos7 中文乱码问题解决方法
centos7 中文乱码问题解决方法 参考文章: (1)centos7 中文乱码问题解决方法 (2)https://www.cnblogs.com/lywJ/p/10710460.html 备忘一下.
- ubuntu mysql emma_ubuntumysql客户端emma中文乱码问题解决_MySQL
Ubuntu bitsCN.com ubuntu mysql客户端emma中文乱码问题解决 emma默认用apt-get 安装的话,emma是不支持中文的,配置文件或直接修改emma程序源文件(pyt ...
最新文章
- Vue之概述、基本使用、data数据和if条件渲染
- SAP MM A工厂下的PR可以转成B工厂下的PO?
- NumPy来自现有数据的数组
- Linux与jvm内存关系分析
- 《Programming in Lua 3》读书笔记(十二)
- 阿里云CentOS服务器挂载数据盘
- c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
- Java Project项目在Linux下部署步骤及注意事项
- docker启动nginx后挂了_使用docker启动nginx并挂载配置nginx
- DSP学习笔记(三)——TMS320F28335硬件结构
- 20211213软件测试基础达内视频笔记
- linux yum安装jdk
- Foxmail设置方法
- 电池SOC仿真系列-基于GA-BP神经网络的电池SOC估算方法
- Nexus 6p 刷入TWRP和OPENGAPPS
- 内存诊断工程搭建及demo测试
- 【渗透工具】浏览器数据导出工具
- extremecomponents学习总结(转)
- Stata:内生变量的交乘项如何处理?
- 如何使用计算机控制赤道仪,赤道仪及经纬仪的知识和使用方法