版本: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中文乱码问题解决相关推荐

  1. php生成pdf乱码_php+tcpdf生成pdf: 中文乱码

    TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的. 场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然还有许多其它选择,但是这个应 ...

  2. java生成pdf文件乱码问题解决

    原因一:查看下是不是模版的问题,生成的pdf模版,是通过word转来,用最新的word版本生成pdf模版 原因二:往pdf中填充的字体乱码,需要针对填充pdf域进行设置字体和格式

  3. 使用ubuntu 10.04中的中文乱码问题解决

    2019独角兽企业重金招聘Python工程师标准>>> 1.ibus输入法 Ubuntu 系统安装后已经自带了ibus输入法,在英语环境下默认不启动. 配置ibus自动启动可以在ub ...

  4. mysql导出数据到表格讲解大全(导出数据带表头,导出数据中文乱码问题解决)

    方法1 使用sqlyang工具 1.本地准备好一个文件 2.选择数据 3.点击图中所示按钮 ,选择复制所有行到剪贴板 4.一般都选择确定,无须修改 5 打开之前的文件,粘贴保存 方法2 使用mysql ...

  5. springMVC保存数据到mysql数据库中文乱码问题解决方法

    springMVC保存数据到mysql数据库中文乱码问题解决方法 参考文章: (1)springMVC保存数据到mysql数据库中文乱码问题解决方法 (2)https://www.cnblogs.co ...

  6. java执行cmd命令,返回结果中文乱码问题解决

    java执行cmd命令,返回结果中文乱码问题解决 参考文章: (1)java执行cmd命令,返回结果中文乱码问题解决 (2)https://www.cnblogs.com/kwaitfort/p/90 ...

  7. Zip文件中文乱码问题解决方法(MAC->Windows)

    Zip文件中文乱码问题解决方法(MAC->Windows) 参考文章: (1)Zip文件中文乱码问题解决方法(MAC->Windows) (2)https://www.cnblogs.co ...

  8. python3 库pandas写入csv格式文件出现中文乱码问题解决方法

    python3 库pandas写入csv格式文件出现中文乱码问题解决方法 参考文章: (1)python3 库pandas写入csv格式文件出现中文乱码问题解决方法 (2)https://www.cn ...

  9. centos7 中文乱码问题解决方法

    centos7 中文乱码问题解决方法 参考文章: (1)centos7 中文乱码问题解决方法 (2)https://www.cnblogs.com/lywJ/p/10710460.html 备忘一下.

  10. ubuntu mysql emma_ubuntumysql客户端emma中文乱码问题解决_MySQL

    Ubuntu bitsCN.com ubuntu mysql客户端emma中文乱码问题解决 emma默认用apt-get 安装的话,emma是不支持中文的,配置文件或直接修改emma程序源文件(pyt ...

最新文章

  1. Vue之概述、基本使用、data数据和if条件渲染
  2. SAP MM A工厂下的PR可以转成B工厂下的PO?
  3. NumPy来自现有数据的数组
  4. Linux与jvm内存关系分析
  5. 《Programming in Lua 3》读书笔记(十二)
  6. 阿里云CentOS服务器挂载数据盘
  7. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
  8. Java Project项目在Linux下部署步骤及注意事项
  9. docker启动nginx后挂了_使用docker启动nginx并挂载配置nginx
  10. DSP学习笔记(三)——TMS320F28335硬件结构
  11. 20211213软件测试基础达内视频笔记
  12. linux yum安装jdk
  13. Foxmail设置方法
  14. 电池SOC仿真系列-基于GA-BP神经网络的电池SOC估算方法
  15. Nexus 6p 刷入TWRP和OPENGAPPS
  16. 内存诊断工程搭建及demo测试
  17. 【渗透工具】浏览器数据导出工具
  18. extremecomponents学习总结(转)
  19. Stata:内生变量的交乘项如何处理?
  20. 如何使用计算机控制赤道仪,赤道仪及经纬仪的知识和使用方法

热门文章

  1. rn在java中什么意思,RN150中RN是什么意思
  2. 如何更换阿里云邮箱绑定手机号
  3. 西湖论剑2021 MISC部分(LSB,取证)
  4. 使用新浪微博开发者平台的第一步---注册
  5. formula的java用法_java-@Formula无法在休眠状态下与对象一起使用
  6. System mem和AGP mem和video mem
  7. vue项目中获取今天,昨天,明天时间方法
  8. matlab自定义colormap保存不,matlab自定义colormap
  9. Java Email-----使用Java程序实现收发电子邮件
  10. 最详BF算法和KMP算法