问题背景
K8S上使用pdfbox将pdf转png,出现中文汉字乱码
pdf文件
转换乱码的文件
原因分析
通过查看日志发现异常信息为
Using fallback LiberationSans-Regular for CID-keyed font AdobeKaitiStd-Regular
去匹配字体时没有匹配上,使用了默认的字体,但是默认的字体不支持中文,导致乱码
解决方案
1.在服务运行环境上安装相对应的字体
对外界依赖过高,需要外部人员配合,不方便未采用
2.重写pdfbox代码,对字体匹配处理实现采用
重写org.apache.pdfbox.pdmodel.font.FontMapperImpl
排查下来,服务器中不支持的字体太多,安装字体并不会解决所有适配字体问题
经过源码的分析:源码做了适配最终兜底字体策略,只需要调整支持中文的最终兜底字体即可!
将支持的字体放在项目的resource下,替换实现加载兜底的字体。
解决后转化的图片