//
// This code is part of Document Solutions for Word demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Linq;
using GrapeCity.Documents.Word;
using Range = GrapeCity.Documents.Word.Range;
namespace DsWordWeb.Demos
{
// This sample shows how to split a DOCX into several documents.
// To see see the original document, run the SampleParagraphs sample.
public class SplitDocs
{
public GcWordDocument CreateDocx()
{
// The document will be split before the paragraph beginning with:
const string p2start = "This is the second paragraph of the original document";
var doc = new GcWordDocument();
doc.Load(Path.Combine("Resources", "WordDocs", "SampleParagraphs.docx"));
Range rng0 = null, rng1 = null;
foreach (var p in doc.Body.Paragraphs)
if (p.GetRange().Text.StartsWith(p2start))
{
rng0 = doc.Body.GetPersistentRange(doc.Body.Start, p.Previous.End);
rng1 = doc.Body.GetPersistentRange(p.Start, doc.Body.End);
break;
}
if (rng0 == null || rng1 == null)
throw new Exception("Unexpected: could not find the split point.");
var docs = doc.SplitDocument(rng0, rng1);
if (docs.Count() != 2)
throw new Exception("Unexpected: the split should have returned 2 documents.");
// Return the 2nd of the two documents (the one starting with 'p2start':
return docs.Last();
}
}
}