我有大量 pdf 文档,其中附有 xml 文件。我想提取那些附加的 xml 文件并读取它们。如何使用 .net 以编程方式执行此操作?
iTextSharp 也非常有能力提取附件...尽管您可能必须使用低级对象来执行此操作。
有两种方法可以在 PDF 中嵌入文件:
- 在文件注释中
- 在文档级别“EmbeddedFiles”。
一旦您拥有来自任一来源的文件规范字典,文件本身将成为标记为“EF”(嵌入文件)的字典中的流。
因此,要在文档级别列出所有文件,可以编写如下代码(用 Java):
Map<String, byte[]> files = new HashMap<String,byte[]>();
PdfReader reader = new PdfReader(pdfPath);
PdfDictionary root = reader.getCatalog();
PdfDictionary names = root.getAsDict(PdfName.NAMES); // may be null
PdfDictionary embeddedFilesDict = names.getAsDict(PdfName.EMBEDDEDFILES); //may be null
PdfArray embeddedFiles = embeddedFilesDict.getAsArray(PdfName.NAMES); // may be null
int len = embeddedFiles.size();
for (int i = 0; i < len; i += 2) {
PdfString name = embeddedFiles.getAsString(i); // should always be present
PdfDictionary fileSpec = embeddedFiles.getAsDict(i+1); // ditto
PdfDictionary streams = fileSpec.getAsDict(PdfName.EF);
PRStream stream = null;
if (streams.contains(PdfName.UF))
stream = (PRStream)streams.getAsStream(PdfName.UF);
else
stream = (PRStream)streams.getAsStream(PdfName.F); // Default stream for backwards compatibility
if (stream != null) {
files.put( name.toUnicodeString(), PdfReader.getStreamBytes((PRStream)stream));
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)