public PdfPage(PdfIndirectReference pages, PdfPageTree parent) : this(pages, parent, PdfObjectType.Page) { IsContainer = true; var page = pages.Dereference <PdfDictionary>(); page.ExpectsType("Page"); foreach (PdfKeyValuePair pair in page.Items) { HandleKeyValuePair(pair); } }
public PdfPageTree(PdfIndirectReference pages, PdfPageTree parent) : base(pages, parent, PdfObjectType.PageTree) { IsContainer = true; var pageTree = pages.Dereference <PdfDictionary>(); pageTree.ExpectsType("Pages"); foreach (PdfKeyValuePair pair in pageTree.Items) { switch (pair.Key.Text) { case "Type": // skip Type Pages break; case "Kids": var kids = (PdfArray)pair.Value; Kids = new List <IPdfObject>(); foreach (PdfIndirectReference item in kids.Items) { var dic = item.Dereference <PdfDictionary>(); string type = dic["Type"].Text; if (type == "Pages") { Kids.Add(new PdfPageTree(item, this)); } else if (type == "Page") { Kids.Add(new PdfPage(item, this)); } else { throw new Exception("Content of Kids in a Page Tree Node must be either a Page or another Page Tree Node"); } } break; case "Count": Count = new PdfCount(pair.Value as PdfNumeric); _items.Add(Count); break; default: HandleKeyValuePair(pair); break; } } _items.AddRange(Kids); }
public PdfPageTree(PdfIndirectReference pages, PdfPageTree parent) : base(pages, parent, PdfObjectType.PageTree) { IsContainer = true; var pagetree = pages.Dereference<PdfDictionary>(); pagetree.ExpectsType("Pages"); foreach (PdfKeyValuePair pair in pagetree.Items) { switch (pair.Key.Text) { case "Type": // skip Type Pages break; case "Kids": PdfArray kids = pair.Value as PdfArray; Kids = new List<IPdfObject>(); foreach (PdfIndirectReference item in kids.Items) { var dic = item.Dereference<PdfDictionary>(); String type = dic["Type"].Text; if (type == "Pages") Kids.Add(new PdfPageTree(item, this)); else if (type == "Page") Kids.Add(new PdfPage(item, this)); else throw new Exception("Content of Kids in a Page Tree Node must be either a Page or another Page Tree Node"); } break; case "Count": Count = new PdfCount(pair.Value as PdfNumeric); _items.Add(Count); break; default: HandleKeyValuePair(pair); break; } } _items.AddRange(Kids); }