iText PDF 生成pdf中文不显示
小编参与的项目中有生成 pdf,经过一番查找之后,确定要使用 iText PDF
iText PDF maven 配置(springboot)
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency> <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>core-renderer</artifactId> <version>R8</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency> <dependency> <groupId>com.itextpdf.tool</groupId> <artifactId>xmlworker</artifactId> <version>5.5.13</version> </dependency>
iText PDF 生成 pdf 需要借助 html 模板
需要动态生成的部分要用占位符(${aa})
小编在这里遇到了问题,由于 html 模板和动态参数都含中文(在 Windows 系统中测试没有问题),在 linux 服务器下测试就遇到了问题,所有的中文都消失了!!
百度好久都说要修改 linux 的系统的默认编码、中文字体等等。。。
偶然间,想起 tomcat 中文乱码,是在 java 的 jre/lib/fonts/ 下放入 Windows 的字体,然后解决!!(结果还是不行、、、、)
好了,不套路了。直接上解决方案
1.模板,在模板的 body 里写入 style 定义 font-family(这里需要注意!!要使用字体的对应英文名称,不要使用:微软雅黑、华文中宋等等)
<body style="font-size:12.0pt; font-family:SimSun">
小编也不知道什么时候保存了一份 字体对应英文
2.在 linux 系统的字体库中添加自己用到的字体库,小编建议,在 fonts 目录下新建一个自己字体名字的目录,如下图:
/usr/share/fonts/
这样比较方便自己管理,避免与系统字体库产生冲突
以上两点做到之后,再导出 pdf 就不会乱码了!!
以上仅是小编本人在开发中遇到问题的解决方案。如果不合适,可以留言,共同探讨!!