Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }