private void IteratePages(PRIndirectReference rpage) {
PdfDictionary page = (PdfDictionary)GetPdfObject(rpage);
PdfArray kidsPR = page.GetAsArray(PdfName.KIDS);
if (kidsPR == null) {
page.Put(PdfName.TYPE, PdfName.PAGE);
PdfDictionary dic = (PdfDictionary)pageInh[pageInh.Count - 1];
foreach (PdfName key in dic.Keys) {
if (page.Get(key) == null)
page.Put(key, dic.Get(key));
}
if (page.Get(PdfName.MEDIABOX) == null) {
PdfArray arr = new PdfArray(new float[]{0,0,PageSize.LETTER.Right,PageSize.LETTER.Top});
page.Put(PdfName.MEDIABOX, arr);
}
refsn.Add(rpage);
}
else {
page.Put(PdfName.TYPE, PdfName.PAGES);
PushPageAttributes(page);
for (int k = 0; k < kidsPR.Size; ++k){
PdfObject obj = kidsPR[k];
if (!obj.IsIndirect()) {
while (k < kidsPR.Size)
kidsPR.Remove(k);
break;
}
IteratePages((PRIndirectReference)obj);
}
PopPageAttributes();
}
}