/// <summary> /// Appends the specified /// <seealso>PdfPage</seealso> /// to the end of this tree. /// </summary> /// <param name="pdfPage"> /// /// <seealso>PdfPage</seealso> /// </param> public virtual void AddPage(PdfPage pdfPage) { PdfPages pdfPages; if (root != null) { // in this case we save tree structure if (pageRefs.Count == 0) { pdfPages = root; } else { LoadPage(pageRefs.Count - 1); pdfPages = parents[parents.Count - 1]; } } else { pdfPages = parents[parents.Count - 1]; if (pdfPages.GetCount() % leafSize == 0 && pageRefs.Count > 0) { pdfPages = new PdfPages(pdfPages.GetFrom() + pdfPages.GetCount(), document); parents.Add(pdfPages); } } pdfPage.MakeIndirect(document); pdfPages.AddPage(pdfPage.GetPdfObject()); pdfPage.parentPages = pdfPages; pageRefs.Add(pdfPage.GetPdfObject()); pages.Add(pdfPage); }
/// <summary> /// Insert /// <seealso>PdfPage</seealso> /// into specific one-based position. /// </summary> /// <param name="index">one-base index of the page</param> /// <param name="pdfPage"> /// /// <see cref="PdfPage"/> /// to insert. /// </param> public virtual void AddPage(int index, PdfPage pdfPage) { --index; if (index > pageRefs.Count) { throw new IndexOutOfRangeException("index"); } if (index == pageRefs.Count) { AddPage(pdfPage); return; } LoadPage(index); pdfPage.MakeIndirect(document); int parentIndex = FindPageParent(index); PdfPages parentPages = parents[parentIndex]; parentPages.AddPage(index, pdfPage); pdfPage.parentPages = parentPages; CorrectPdfPagesFromProperty(parentIndex + 1, +1); pageRefs.Add(index, pdfPage.GetPdfObject()); pages.Add(index, pdfPage); }