【问题标题】:acroform field values is not working in icepdfacroform 字段值在 icepdf 中不起作用
【发布时间】:2015-02-23 22:53:12
【问题描述】:

我正在开发一个项目,该项目应读取包含由 Java 代码填充的值的 pdf 文件/表单。

form.setField("permitnumber", p.getApplicationorno());
            form.setField("amountpaid", p.getAmount_app());
            form.setField("estimatedfeet", "56");
            form.setField("receiptnumber", "123415");
            form.setField("validity", "5");

现在我的问题是,在 pdf 表单字段上设置的值在 Adob​​e PDF Reader 上完美运行,但在 ICEPdf Viewer 上却不行。我在这里缺少什么?为什么 ICEPdf 无法显示 PDF 表单中的值?

【问题讨论】:

  • 您使用哪个 PDF 库来填写值?你能分享一个示例 PDF 吗?
  • 我正在使用 iText 填写 PDF 中的值...
  • 取决于源文档和您的代码 iText 是否创建表单字段外观。你的里程数是多少?
  • 我从 OpenOffice Draw 应用程序创建了文档...导出为交互式 PDF...问题中提到了填写值的代码:form.setField("fieldname", "value ");
  • Ooo 有创建 PDF 的历史,其中 NeedsAppearances 设置为 true。你能提供一个样本PDF吗?

标签: java pdf itextpdf icepdf


【解决方案1】:

使用 iText 设置字段值时,如果 af 是您的 AcroFields 实例,请尝试这样做

af.setGenerateAppearances(true);

在设置值之前。


PDF 规范ISO 32000-1 定义了一个NeedAppearances 标志,参见。表 218 - 交互式表单字典中的条目。如果设置为 true,PDF 查看器知道它必须为表单域创建外观流。

iText 解释该标志,并且仅在该标志不是 true 时创建外观流(如果 true,则查看者应重新创建此类外观反正)。

至少用于创建将该标志设置为 true 的 PDF 表单。如果 true,Adobe Reader 会尊重该标志并创建外观。可能您的 PDF 查看器不尊重该标志,可能它总是希望外观已经存在于文档中。

使用setGenerateAppearances(true),您可以强制生成外观流。如果上述假设是正确的,这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2019-08-29
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多