XFA 缺少填充字段?
XFA missing filled fields?
我正在使用 pdfbox-1.8.12 从 PDF 中读取内容以获取 XFA。
我已经能够成功地为大多数文件获取 XFA,而不会遗漏任何字段值。
问题出在某些文件上,例如 error.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;
}
}
然后将 byte[] 转换为 String。
This 是此文件的 xfa,如果您在此搜索 'U72300DL1996PLC075672',它会丢失。
这是一个 normal 文件,它提供了所有字段。
有什么想法吗?我什么都试过了,但我的猜测是既然读者能看到那个值,我应该也能看到。
编辑:
您将必须下载文件,您可能无法在浏览器中查看它们。
表单中有多个 XFA 内容条目,代表表单在应用不同签名之前的不同状态。当您使用
PDDocument.load(file)
按顺序解析 PDF,未提取最新的 XFA 内容。如果将其更改为
PDDocument.loadNonSeq(file,null)
使用外部参照信息并提取包含您要查找的信息的最新 XFA。
请注意,对于 PDFBox 1.8.x,应始终使用 PDDocument.loadNonSeq
以便根据规范解析 PDF,即遵循外部参照信息。 PDDocument.load
应该 仅 用于处理具有(外部参照相关)解析错误的文件,其中顺序解析可以作为后备。
对于 PDFBox 2.x PDDocument.load
在外部参照之后进行解析,即像 1.8 中的“PDDocument.loadNonSeq”,并且在出现错误的情况下在幕后完成顺序解析。
我正在使用 pdfbox-1.8.12 从 PDF 中读取内容以获取 XFA。 我已经能够成功地为大多数文件获取 XFA,而不会遗漏任何字段值。
问题出在某些文件上,例如 error.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;
}
}
然后将 byte[] 转换为 String。
This 是此文件的 xfa,如果您在此搜索 'U72300DL1996PLC075672',它会丢失。
这是一个 normal 文件,它提供了所有字段。
有什么想法吗?我什么都试过了,但我的猜测是既然读者能看到那个值,我应该也能看到。
编辑: 您将必须下载文件,您可能无法在浏览器中查看它们。
表单中有多个 XFA 内容条目,代表表单在应用不同签名之前的不同状态。当您使用
PDDocument.load(file)
按顺序解析 PDF,未提取最新的 XFA 内容。如果将其更改为
PDDocument.loadNonSeq(file,null)
使用外部参照信息并提取包含您要查找的信息的最新 XFA。
请注意,对于 PDFBox 1.8.x,应始终使用 PDDocument.loadNonSeq
以便根据规范解析 PDF,即遵循外部参照信息。 PDDocument.load
应该 仅 用于处理具有(外部参照相关)解析错误的文件,其中顺序解析可以作为后备。
对于 PDFBox 2.x PDDocument.load
在外部参照之后进行解析,即像 1.8 中的“PDDocument.loadNonSeq”,并且在出现错误的情况下在幕后完成顺序解析。