PDFBox 2.0.24加载AR PL Zenkai Uni Font报无效字符码错误如何解决
问题原因
这个报错是因为AR PL Zenkai Uni Font(对应你用到的ukai.ttf)的TTF文件cmap表存在非标准编码定义,PDFBox 2.0.24版本内置的fontbox组件对cmap表的校验逻辑过于严格,无法兼容这类非完全符合规范的开源字体。
解决方案
方案1:升级PDFBox版本(优先推荐)
该问题是2.0.24及更早版本的已知兼容问题,官方在2.0.25及后续版本中放宽了对应校验逻辑,新增了对这类非规范字体的兼容处理。升级版本后原有加载代码无需修改即可正常运行。
方案2:替换兼容字体
如果暂时无法升级PDFBox版本,可以换用规范度更高的同类型开源中文字体,比如思源宋体、Noto Sans CJK SC等,这类字体不会触发PDFBox的校验报错。
方案3:修复流使用规范(补充优化)
你当前的代码直接传入FileInputStream未做资源释放处理,建议用try-with-resources优化流逻辑,避免资源泄露,参考代码如下:
try (InputStream fontStream = new FileInputStream("font/ukai.ttf")) { PDType0Font customFont = PDType0Font.load(document, fontStream, false); } catch (IOException e) { // 按需处理字体加载异常 }
内容的提问来源于stack exchange,提问作者Tiero
相关产品推荐
相关产品推荐

