Example #1
0
 /// <summary>Splits a document into smaller documents with no more than @pageCount pages each.</summary>
 /// <param name="pageCount">the biggest possible number of pages in a split document.</param>
 /// <param name="documentReady">
 /// the event listener which is called when another document is ready.
 /// You can close this document in this listener, for instance.
 /// </param>
 /// <exception cref="iText.Kernel.PdfException"/>
 public virtual void SplitByPageCount(int pageCount, PdfSplitter.IDocumentReadyListener documentReady)
 {
     for (int startPage = 1; startPage <= pdfDocument.GetNumberOfPages(); startPage += pageCount)
     {
         int         endPage          = Math.Min(startPage + pageCount - 1, pdfDocument.GetNumberOfPages());
         PageRange   currentPageRange = new PageRange().AddPageSequence(startPage, endPage);
         PdfDocument currentDocument  = CreatePdfDocument(currentPageRange);
         pdfDocument.CopyPagesTo(startPage, endPage, currentDocument);
         documentReady.DocumentReady(currentDocument, currentPageRange);
     }
 }
Example #2
0
        /// <summary>Splits the document by page numbers.</summary>
        /// <param name="pageNumbers">
        /// the numbers of pages from which another document is to be started.
        /// If the first element is not 1, then 1 is implied (i.e. the first split document will start from page 1 in any case).
        /// </param>
        /// <param name="documentReady">
        /// the event listener which is called when another document is ready.
        /// You can close this document in this listener, for instance.
        /// </param>
        /// <exception cref="iText.Kernel.PdfException"/>
        public virtual void SplitByPageNumbers(IList <int> pageNumbers, PdfSplitter.IDocumentReadyListener documentReady
                                               )
        {
            int currentPageNumber = 1;

            for (int ind = 0; ind <= pageNumbers.Count; ind++)
            {
                int nextPageNumber = ind == pageNumbers.Count ? pdfDocument.GetNumberOfPages() + 1 : (int)pageNumbers[ind];
                if (ind == 0 && nextPageNumber == 1)
                {
                    continue;
                }
                PageRange   currentPageRange = new PageRange().AddPageSequence(currentPageNumber, nextPageNumber - 1);
                PdfDocument currentDocument  = CreatePdfDocument(currentPageRange);
                pdfDocument.CopyPagesTo(currentPageNumber, nextPageNumber - 1, currentDocument);
                documentReady.DocumentReady(currentDocument, currentPageRange);
                currentPageNumber = nextPageNumber;
            }
        }