场景:
使用Aspose.Word将word文档转换成pdf。
本地Windows开发环境,pdf文件正常。
但是将程序部署到CentOS的服务器上,pdf的中文就都是乱码了。
解决思路:
- 运行jetty服务时,指定
java -Dfile.encoding=UTF-8
或GBK
参数都无效。 - 添加日志输出,发现读取出来的Word纯文本内容,中文也还是正常的,那么就只剩最后转pdf的原因了。
想到pdf是一种为打印设计的文档格式,可能跟字体相关。而且转出来的pdf中文都是空心方框,不是单纯的乱码,很有可能是缺少字体渲染不出来造成的。 - 服务器上用
fc-list
命令查看字体,果然没有中文字体 - 接下来将本机Windows的字体上传到CentOS服务器上。
具体操作:
将Windows上字体文件C:\Windows\Fonts
目录,复制到CentOS的/usr/share/fonts
目录
运行sudo fc-cache -f -v
命令刷新字体缓存
原文链接:https://www.jianshu.com/p/d7d779f7cf88