当前位置: 首页 > 知识库问答 >
问题:

XFA缺少填充字段?

苗康平
2023-03-14

我正在使用pdfbox-1.8.12从PDF中读取内容以获取XFA。我已经能够成功地为大多数文件获取XFA,而没有遗漏任何字段值。

问题在于一些文件,如错误。pdf。我有许多字段没有像CIN这样的值,但当我在任何PDF查看器、foxit或Acrobat中打开文件时,它会显示该字段。

    public static byte[] getParsableXFAForm(File file) {
    if (file == null)
        return null;
    PDDocument doc;
    PDDocumentCatalog catalog;
    PDAcroForm acroForm;
    PDXFA xfa;
    try {
        doc = PDDocument.load(file);
        catalog = doc.getDocumentCatalog();
        acroForm = catalog.getAcroForm();
        xfa = acroForm.getXFA();
        byte[] xfaBytes = xfa.getBytes();
        doc.close();
        return xfaBytes;
    } catch (IOException e) {
        // handle IOException
        // happens when the file is corrupt.
        System.out.println("IOException");
        return null;
    }
}

然后将字节[]转换为字符串。

这是此文件的xfa,如果您在此搜索“U72300DL1996PLC075672”,它将丢失。

这是一个普通文件,提供所有字段。

有什么想法吗?我什么都试过了,但我的猜测是,既然读者能看到这个价值,我也应该能看到。

编辑:您必须下载文件,您可能无法在浏览器中查看它们。

共有1个答案

罗昱
2023-03-14

表单中有多个XFA内容条目,表示表单在应用不同签名之前的不同状态。当您使用时

<代码>PDDocument。加载(文件)

PDF按顺序进行解析,不会提取最新的XFA内容。如果您将其更改为

<代码>PDDocument。loadNonSeq(文件,null)

将使用外部参照信息,并提取包含您要查找的信息的最新XFA。

请注意,对于PDFBox 1.8。x应始终使用PDDocument。loadNonSeq,以便按照规范解析PDF,即遵循外部参照信息<代码>PDDocument。加载只能用于处理具有(外部参照相关)分析错误的文件,其中顺序分析可能是一种倒退。

对于PDFBox 2。x<代码>PDDocument。加载外部参照后面的分析,例如“PDDocument”。1.8中的loadNonSeq,如果出现错误,则会在后台进行顺序解析。

 类似资料:
  • 我有一个基于XFA的pdf表单,我们需要使用java来填充它。你能建议最好的方法吗。我能够使用iText为pdf生成xfa xml。 我有从上面的代码生成的Pdf和Xfa XML。你能不能建议我如何继续下去,因为我似乎没有主意了。我试图检查XFA文档,但似乎不对。我没有xml,pdf非常复杂,因为它有许多字段,是一个动态XFA pdf表单。 您的帮助和建议将受到衷心的感谢。

  • 我正在尝试使用PDFTK填充pdf文档。脚本工作良好,它填充输入的形式,但我没有得到特殊字符[波兰字符集:UTF-8或ISO-8859-2]。 脚本:https://github.com/mikehaertl/php-pdftk 奇怪的是,当我点击字段时,生成的pdf实际上有波兰字符。 我所做的: 向pdf文件添加字体(选中且文件有字体) 在pdf文件中使用默认字体(Arial)创建字段 将脚本(

  • 问题内容: 我是Python和Pandas的新手,所以可能有一个我看不到的简单解决方案。 我有一些看起来像这样的不连续数据集: 我现在正在寻找一种解决方案,以实现以下目标: 问题是,A中的间隙因数据集的位置和长度而异… 问题答案: 和是你的朋友。 首先将A列移至索引: 然后使用新索引重新索引,此处使用nans填充缺少的数据。我们使用对象是因为我们可以命名它。这将在下一步中使用。 最后使用将索引移回

  • 问题内容: 天哪,它必须是如此简单,但我正在为“填写缺失的数据”问题而苦苦挣扎。 我有一个表,该表具有以下带有一些插入数据的列。 我想要的这张表是从2014年起的全部月份的付款值。 我尝试在select中使用IFNULL,但失败如此严重…而且stackoverflow的搜索结果通常会结合两个或多个表来处理信息。解决这个问题的最快,最好的解决方案是什么? 问题答案: 对于缺少的月份,您可以对所有月份

  • 问题内容: 我有要查询的模型(称为“活动”)(使用Mongoose)。他们的架构如下所示: 当我询问他们,我填充,,,和字段(所有引用)。在那之后,我也深入了这个领域。这是我的查询代码: 这已经是一个相对复杂的查询,但是我需要做更多。如果它碰到了声明的一部分,我 还 需要确保的字段等于字符串。我尝试使用,但是由于必须先填充事件,因此无法查询其任何字段。我还需要在其他多个查询中实现相同的目标。 如我

  • 问题内容: 我所做的: 我有一个模块 然后我有另一个课 我得到的是: 该作品不错,但字段为空。如果您编辑个人资料,则可以使用来向字段添加条目,但是我需要自动填写。 我的期望: 我希望打开个人资料时,每个设置为的记录都将在字段中可见。当我创建记录并将值设置为可以说时,该记录必须在字段中的配置文件中可见。如何实现呢? 问题答案: user_rel_ids =字段.many2many(comodel_n