Split document

GroupDocs.Merger allows to split source document into several resultant documents. Document splitting can be performed in different ways by specifying page numbers array or start/end page numbers and setting different SplitOptions modes.
Here are the possible use cases:

  1. Page numbers array specified and splitting mode is set to SplitMode.Pages - specified page numbers indicate exact page numbers, which will be saved to the separate one-page documents.
    Ex: Array{ 3, 6, 8 } will produce 3 documents with 3rd, 6th and 8th pages.

  2. Page numbers array specified and splitting mode is set to SplitMode.Interval  - specified page numbers indicate the boundaries of the page intervals, which will be saved to the separate multi-page documents.
    Ex: Array{ 3, 6, 8 } will produce 4 page intervals 1-2, 3-5, 6-7, 8-10.

There is also an ability to set parameter RangeMode and obtain only even or odd pages from desired pages range.

The steps to split document to multiple on-page documents are the following:

  • Initialize SplitOptions class with output files path format;
  • Instantiate Merger object with source document path or stream;
  • Call Split method and pass SplitOptions object to itfor saving resultant documents.

Split the document to several one-page documents (by exact page numbers)

The following code sample demonstrates how to split document to three one-page documents with 3rd, 6th and 8th pages:

string filePath = @"c:\sample.docx";
string filePathOut = @"c:\output\document_{0}.{1}";

SplitOptions splitOptions = new SplitOptions(filePathOut, new int[] { 3, 6, 8 });
           
using (Merger merger = new Merger(filePath))
{
     merger.Split(splitOptions);
}  

This code snippet will  produce:

Document namePage numbers
document_33
document_66
document_88

Split the document to several one-page documents (by start/end page numbers)

The following code sample demonstrates how to split document to several one-page documents starting from 3rd and ending at 7th page number:

string filePath = @"c:\sample.docx";
string filePathOut = @"c:\output\document_{0}.{1}";

SplitOptions splitOptions = new SplitOptions(filePathOut, 3, 7);
           
using (Merger merger = new Merger(filePath))
{
     merger.Split(splitOptions);
}  

This code snippet will produce:

Document namePage numbers
document_33
document_44
document_55
document_66
document_77

Split the document to several one-page documents (by start/end page numbers and even/odd filter)

The following code sample demonstrates how to split document to several one-page documents for odd pages starting from 3rd and ending at 7th page number:

string filePath = @"c:\sample.docx";
string filePathOut = @"c:\output\document_{0}.{1}";

SplitOptions splitOptions = new SplitOptions(filePathOut, 3, 7, RangeMode.OddPages);
           
using (Merger merger = new Merger(filePath))
{
     merger.Split(splitOptions);
}  
 

This code snippet will  produce:

Document namePage numbers
document_33
document_55
document_77

Split the document to several multi-page documents

The following code sample demonstrates how to split document to several multi-page documents:

string filePath = @"c:\sample.docx";
string filePathOut = @"c:\output\document_{0}.{1}";

SplitOptions splitOptions = new SplitOptions(filePathOut, new int[] { 3, 6, 8 }, SplitMode.Interval);
           
using (Merger merger = new Merger(filePath))
{
     merger.Split(splitOptions);
}  

This code snippet will  produce:

Document namePage numbers
document_01, 2
document_13, 4, 5
document_26, 7
document_38, 9, 10