How To: Obtain Specific Document Part
- 3 minutes to read
This example demonstrates how to retrieve the DocumentRange occupied by a specific document part.
You can use the following approaches to get a specific document part:
- Section - Use the Section.Range property to access the required section’s range.
Page - call the DocumentLayout.GetPage method to iterate through the document pages. The LayoutPage.MainContentRange property returns the obtained page’s range as a FixedRange object. Call the SubDocument.CreateRange method to convert the retrieved FixedRange to DocumentRange.
int pageCount = richEditcontrol1.DocumentLayout.GetPageCount(); for (int i = 0; i < pageCount; i++) { LayoutPage layoutPage = richEditControl1.DocumentLayout.GetPage(i); DocumentRange mainBodyRange = richEditControl1.Document.CreateRange(layoutPage.MainContentRange.Start, layoutPage.MainContentRange.Length); }
Paragraphs with Headings (if Heading1, Heading2, etc. style is applied to the headings) – Applying the Heading style to the paragraph changes its outline level. Find all paragraphs with the required Paragraph.OutlineLevel property value. Then obtain the range located between these paragraphs (including the paragraph with the heading).
Document document = richEditcontrol1.Document; List<Paragraph> paragraphs = document.Paragraphs.Where(paragraph => paragraph.OutlineLevel == 1).ToList(); for (int i = 0; i < paragraphs.Count; i++) { DocumentRange range; DocumentPosition startPos = paragraphs[i].Range.Start; if (i == paragraphs.Count - 1) range = document.CreateRange(startPos, document.Range.End.ToInt() - startPos.ToInt()); else range = document.CreateRange(startPos, paragraphs[i + 1].Range.Start.ToInt() - startPos.ToInt()); }
You can get text from the DocumentRange instance. The table below shows API used to retrieve and insert format-specific content:
Format | Retrieve | Insert |
---|---|---|
Plain Text | Sub Sub Sub Sub | |
Rich Text Format | Sub Sub | |
HTML | Sub Sub | |
MHT | ||
Word | ||
Open |