【问题标题】:Two fields (out of 18) in a PDF form don't appear after filling and flattening with iText使用 iText 填充和展平后,PDF 表单中的两个字段(共 18 个)不出现
【发布时间】:2014-04-15 16:22:19
【问题描述】:

我正在使用最新版本的 iText (5.5.0) 来填写 pdf 表单并将其展平。

由于某种原因,当我使用 fdf 填写表格时,除了“ç”之类的特殊字符外,一切正常。但是当我使用 xfdf 时,会出现特殊字符但两个字段没有('comment' 和 'datelicFormatted')

-> 参见 https://upl.cases.lu/?action=d&id=82085749396826225834 获取模板、xpdf 和结果

该表单是通过转换 word 文档并使用 acrobat 10 添加文本字段而创建的。

真正奇怪的部分是当我要求不要展平它时:字​​段包含正确的值,它们在展平时似乎消失了。

感谢您提供的任何帮助。

【问题讨论】:

  • 顺便说一句。通过测试此页面上的解决方案:itext-general.2136553.n4.nabble.com/… 我注意到 com.itextpdf.text.pdf.AcroFields.regenerateField 方法存在问题:如果字段的值太长或有换行符(不确定究竟是什么) ,它失败了,因为显示参数被设置为值。
  • 我检查了表单,首先引起我注意的是,两个缺失的字段是唯一使用 ArialUnicodeMS 定义的字段,而其他字段使用 Helvetica。不过,我还不确定出了什么问题。
  • 我找到了两个缺失字段的文本变为空字符串的确切位置。字体确实是罪魁祸首。现在我必须找出到底出了什么问题。
  • 我写了一个hack来解决这个问题;这个 hack 可能会也可能不会被添加到下一个版本中。我在 iText Software 的付费支持系统上创建了一张票,供核心开发人员查看黑客(并接受或拒绝它)。问题的本质是什么:iText查看文档中的字体,找到两个有问题的字段的ArialUnicodeMS,然后在字体中搜索需要的字符,在字体中没有找到(可能是表格的原因,这个仍有待测试)和未找到的字符消失。
  • 不确定是不是这个原因。显然这是一个 adobe acrobat 10 问题:我找到了解决方法。创建表单时,acrobat 会自动在它认为应该有一些的地方创建文本字段 - > acrobat 似乎以外观创建它们并且它们在展平后工作。当您手动创建新的文本字段时,您最终会遇到我遇到的问题。 iText 似乎正确地展平并且遗漏了没有外观的字段(这些字段甚至没有被打印出来)。我必须就此联系adobe。要出现特殊字符,必须将字体定义为 Arial Unicode MS

标签: java pdf itext


【解决方案1】:

您的模板确实使用了 Arial Unicode MS 字体,只有通过一些额外的资源(CMAP UniKS-UTF16-H)才能被 iText 正确解释。普通的 iText JARS 在设计上不包含此类资源。但是还有一个 iText JAR - itext-asia.jar 包含 CMAPs 资源。所以只需将 itext-asia.jar 添加到您的类路径中,有问题的字段将被正确展平。你可以在http://sourceforge.net/projects/itext/files/extrajars/extrajars-2.3.zip/download下载itext-asia.jar

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2014-01-03
    • 2018-03-29
    • 2014-08-21
    • 1970-01-01
    相关资源
    最近更新 更多