我正在使用中文预填充值创建PDF但在打开PDF时,包含中文文本的所有文本字段都是空的。当聚焦文本字段时,中文文本可见但在未聚焦字段时再次隐藏。可能是什么问题?
答案 0 :(得分:2)
请分享更多信息,因为iText不会产生外观可能有多个原因。
A。 StackOverflow问题“AcroForm values missing after flattening”中解释了第一个原因。在这种情况下,PDF包含一个参数,指示iText 不生成外观,这可以解释为什么在单击该字段之前看不到任何值,在这种情况下,查看器将创建它们
B. 第二个原因在my book的第8.3.3节(标题为“文本字段和字体”)中进行了解释。在这种情况下,PDF中的参数不会阻止创建字段外观,但iText无法这样做,因为您没有提供知道如何显示中文字符的字体。
参见本书的图8.3和8.4。
在图8.3中,您看到中文文本未显示在上方窗口中。通过修复表单(使用两种不同的策略),中文文本显示在下面的两个窗口中。请注意,在中间窗口的情况下,中文文本不会出现在所有查看器中。
在图8.4中,您会看到韩文文本不会显示在上方窗口中,也不会显示在第三个窗口中。在所有其他窗口中,使用不同的策略来解决此问题:
在SO的答案中讨论所有不同的策略会引导我们走得太远。相反,请查看TextFontFields示例(对于C#版本,请查看ported examples)。我的猜测是,如果您使用的字体将在文档中嵌入一个子集(在示例中使用AddSubstitutionFont()
),您将从arialuni.ttf
方法中受益最多。
如果是 A。,这种现象也与其他语言有关。对于 B。,参数是正确的,但您没有提供可用于生成外观的字体。