【问题标题】:iTextSharp - Pre filled Chinese characters in PDF do not come visible until textfield is focusediTextSharp - PDF 中预填充的中文字符在文本字段被聚焦之前不可见
【发布时间】:2014-01-29 07:07:16
【问题描述】:

我正在创建带有中文预填充值的 PDF,但是当打开 PDF 时,所有包含中文文本的文本字段都是空的。聚焦文本字段时,中文文本可见,但在取消聚焦字段时再次隐藏。可能是什么问题?

【问题讨论】:

    标签: localization itextsharp chinese-locale


    【解决方案1】:

    请分享更多信息,因为 iText 不生成外观的原因可能不止一个。

    A. 第一个原因在 StackOverflow 问题“AcroForm values missing after flattening”中进行了解释。在这种情况下,PDF 包含一个指示 iText not 生成外观的参数,这可以解释为什么在单击该字段之前您看不到任何值,在这种情况下,查看器将创建它们.

    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. 的情况下,参数是正确的,但您没有提供可用于生成外观的字体。

    【讨论】:

    • 设置 NeedAppearances=True 并减小字体大小解决了问题。谢谢!
    • 好的,请注意,当您依赖查看器生成外观时,并非所有用户都会看到文本:并非所有系统的系统上都有所需的字体。
    • 我遇到了新问题:所以当设置 requiredapperance=true 时,预选的单选按钮选择不再可见,有什么想法吗?
    • 当 Adob​​e Reader 创建外观时,将使用单选按钮和复选框的默认外观。这意味着当按钮或框未被选中时,不会显示任何内容。这很正常。在这种情况下,预计圆形、方形或任何表示按钮的形状都是内容流的一部分。请注意,在评论部分发布新问题是违反 SO 规则的。新问题需要一个……新问题。
    • 我们通过使用 AddSubstitutionFont() 方法而不是 NeedAppearances=True 解决了这个问题。很抱歉在这里发布这个问题,以后会提出新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多