我使用类似于以下代码成功提取PDF包文件的内容:
internal void ExtractAttachments(string file_name, string folderName) {
PdfDictionary documentNames = null;
PdfDictionary embeddedFiles = null;
PdfDictionary fileArray = null;
PdfDictionary file = null;
PRStream stream = null;
using (PdfReader reader = new PdfReader(file_name)) {
PdfDictionary catalog = reader.Catalog;
documentNames = (PdfDictionary)PdfReader.GetPdfObject(catalog.Get(PdfName.NAMES));
if (documentNames != null) {
embeddedFiles = (PdfDictionary)PdfReader.GetPdfObject(documentNames.Get(PdfName.EMBEDDEDFILES));
if (embeddedFiles != null) {
PdfArray filespecs = embeddedFiles.GetAsArray(PdfName.NAMES);
for (int i = 0; i < filespecs.Size; i++) {
i++;
fileArray = filespecs.GetAsDict(i);
file = fileArray.GetAsDict(PdfName.EF);
foreach (PdfName key in file.Keys) {
stream = (PRStream)PdfReader.GetPdfObject(file.GetAsIndirectObject(key));
string attachedFileName = fileArray.GetAsString(key).ToString();
byte[] attachedFileBytes = PdfReader.GetStreamBytes(stream);
System.IO.File.WriteAllBytes(Path.Combine(folderName, attachedFileName), attachedFileBytes);
}
}
}
}
}
}
但是,我注意到这些组件文件的提取顺序与使用Adobe Reader XI在原始PDF中显示的顺序不同。这些组件文件的显示顺序显然在&#34;索引&#34;属性,您可以通过选择在“文件”模式下查看项目组合文件(而不是“布局”模式),在“读者”用户界面中显示该属性,右键单击任何组件文件并选择“查看”。 &GT; &#39;指数&#39;从上下文菜单中。
我的问题:我怎样才能找到这个&#39;索引&#39;从PDF包文件中提取文件之前的属性?
答案 0 :(得分:0)
&#34;索引&#34;属性可能是也可能不是投资组合排序的实际元数据。可以在任意数量的集合字段(包括隐藏字段)上对投资组合进行排序。要查找实际的排序顺序,您需要获得&#34;排序&#34; &#34; Collection&#34; &#34;目录&#34;中的字典。完成后,您可以根据&#34; CI&#34;对文件进行排序。 (收集信息)每个附件中的字典。
我按你的方式抛出一些代码,但我不会使用iText ...... Sharp或其他。