/// <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); } }
/// <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; } }