我正在尝试从位于此处的 PDF中提取嵌入文件:
Catalog / AF[0] / EF / F
AF
是一个数组- 第一个条目是文件规范字典
EF
是字典F
应该是嵌入式文件流
使用 PDFBox 我可以做到这一点:
PDFParser parser = new PDFParser(is);
parser.parse();
PDDocument document = parser.getPDDocument();
PDDocumentCatalog catalog = document.getDocumentCatalog();
PDDocumentNameDictionary namesDictionary = new PDDocumentNameDictionary(catalog);
PDEmbeddedFilesNameTreeNode embeddedFiles = namesDictionary.getEmbeddedFiles();
List<PDNameTreeNode> kids = embeddedFiles.getKids();
PDEmbeddedFilesNameTreeNode node = (PDEmbeddedFilesNameTreeNode) kids.get(0);
COSDictionary cosDictionary = node.getCOSDictionary();
COSArray a = (COSArray) cosDictionary.getDictionaryObject(COSName.NAMES);
COSDictionary d = (COSDictionary) a.getObject(1);
COSDictionary ef = (COSDictionary) d.getDictionaryObject(COSName.EF);
COSDictionary f = (COSDictionary) ef.getDictionaryObject(COSName.F);
System.out.println(f);
输出(格式化以获得更好的可读性):
COSDictionary{(COSName{Length}:COSInt{1433})
(COSName{Filter}:COSName{FlateDecode})
(COSName{Type}:COSName{EmbeddedFile})
(COSName{Subtype}:COSName{text/xml})
(COSName{Params}:COSDictionary{
(COSName{Size}:COSInt{12030})
(COSName{ModDate}:COSString{D:20130628111510+02'00'})
}
)
}
这是我迄今为止所期望的。但是这个嵌入的 XML 文件的字节在哪里呢?我怎样才能访问它们?