我正在使用 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。
这是此文件的 xfa,如果您在其中搜索“U72300DL1996PLC075672”,它将丢失。
这是一个普通文件,提供所有字段。
有任何想法吗?我已经尝试了一切,但我的猜测是,既然读者可以看到这个价值,我应该也可以。
编辑:您必须下载文件,您可能无法在浏览器中查看它们。