填写表格时,PDFBox嵌入字体不起作用

问题描述

我用 field.setValue 填写表格。但是,即使PDF文档中嵌入了字体,我仍然收到错误”,该字体的编码中不存在“ WinAnsiEncoding” ,无论它是哪种字体。请注意,这是针对中文或俄语字符的情况。

解决方法

您的PDF文档可能已嵌入字体,但显然已嵌入 Encoding WinAnsiEncoding

WinAnsiEncoding 本质上包含拉丁语15个字符,因此旨在用于“西欧”语言(请参见Wikipedia article on this),尤其是对于西里尔字母也不用于CJK语言。

如果要使用PDFBox将中文或俄语字符填写到表单字段中,则必须

  • 要么预先使用适当的编码将字体嵌入PDF中
  • 或在设置表单字段值之前立即用PDFBox替换嵌入字体,例如,参见this answer