pdfbox-1.8.12 を使用して PDF からコンテンツを読み取り、XFA を取得しています。フィールド値を見逃すことなく、ほとんどのファイルの XFA を正常に取得できました。
問題は、 error.pdfのようないくつかのファイルにあります。CIN のように値のないフィールドがたくさんありますが、PDF Viewer、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」を検索すると、見つからないでしょう。
これは通常のファイルで、すべてのフィールドが含まれています。
何か案は?私はすべてを試しましたが、読者がその値を見ることができるので、私もできるはずです.
編集 : ファイルをダウンロードする必要があります。ブラウザで表示できない場合があります。