使用下面的代码我每页只能读一个评论,如何阅读PDF中所有页面的所有评论。或以任何方式一次性从PDF中获取所有评论列表。
for (int page = 1; page <= pdfRead.NumberOfPages; ++page)
{
PdfDictionary pagedic = pdfRead.GetPageN(page);
PdfArray annotarray = (PdfArray)PdfReader.GetPdfObject(pagedic.Get(PdfName.ANNOTS));
if (annotarray == null || annotarray.Size == 0)
continue;
string all_string = "";
foreach (PdfObject A in annotarray.ArrayList)
{
PdfDictionary AnnotationDictionary = (PdfDictionary)PdfReader.GetPdfObject(A);
if (AnnotationDictionary.Get(PdfName.SUBTYPE).Equals(PdfName.TEXT))
{
all_string += AnnotationDictionary.GetAsString(PdfName.T).ToString() +"\n";
all_string += AnnotationDictionary.GetAsString(PdfName.CONTENTS).ToString()+ "\n";
}
}
}
答案 0 :(得分:0)
页面在页面树中组织。页面树的每个叶子指的是页面字典。 /Annots
条目是页面字典的可选键之一。它包含属于特定页面的注释数组。
您正在遍历页面树中每个页面的每个页面字典,检索每个页面字典的/Annots
数组。这是正确的程序。
您的问题“如何阅读PDF中所有页面的所有评论?”是错误的。您已经正确地阅读了PDF中所有页面的所有评论。 PDF固有的是注释以这种方式组织。即使有一个iTextSharp方法在一个方法中为您提供所有注释,它将使用您现在使用的完全相同的代码。这会带来什么收获?这需要相同的处理时间。