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 就不会乱码了!!

以上仅是小编本人在开发中遇到问题的解决方案。如果不合适,可以留言,共同探讨!!

posted @ 2018-10-15 11:15  chbyiming  阅读(11539)  评论(0编辑  收藏  举报