# GrapeCity.Documents.Text.TextLayoutSplitter

## Content

<div class="doc-site-dotnet-api-container">



  <h1 id="GrapeCity_Documents_Text_TextLayoutSplitter" data-uid="GrapeCity.Documents.Text.TextLayoutSplitter" class="text-break">TextLayoutSplitter Class
</h1>
  <div class="markdown level0 summary"><p>Helper class for efficient splitting the content of a <a class="xref" href="GrapeCity.Documents.Text.TextLayout.html">TextLayout</a> object
into multiple portions. May be used to split a long text into multiple pages or columns,
including balanced columns (see <a class="xref" href="GrapeCity.Documents.Text.TextLayoutSplitter.SplitAndBalance.html#GrapeCity_Documents_Text_TextLayoutSplitter_SplitAndBalance_GrapeCity_Documents_Text_PageSplitArea___GrapeCity_Documents_Text_TextSplitOptions_">SplitAndBalance(PageSplitArea[], TextSplitOptions)</a>).</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="inheritance">
    <h5>Inheritance</h5>
    <div class="level0"><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
    <div class="level1"><span class="xref">TextLayoutSplitter</span></div>
  </div>
  <h6><strong>Namespace</strong>: <a class="xref" href="GrapeCity.Documents.Text.html">GrapeCity.Documents.Text</a></h6>
  <h6><strong>Assembly</strong>: DS.Documents.Imaging.dll</h6>
  <h5 id="GrapeCity_Documents_Text_TextLayoutSplitter_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public class TextLayoutSplitter</code></pre>
  </div>
  <div class="codewrapper">
    <pre><code class="lang-vbnet hljs">Public Class TextLayoutSplitter</code></pre>
  </div>
  <h5 id="GrapeCity_Documents_Text_TextLayoutSplitter_remarks"><strong>Remarks</strong></h5>
  <div class="markdown level0 remarks"><p>
This class does not provide any additional functionality, but it streamlines the code
rendering a <a class="xref" href="GrapeCity.Documents.Text.TextLayout.html">TextLayout</a> onto multiple pages or columns, and ensures
optimal performance by keeping allocation of new text layouts to hold the overflow to a minimum.
</p>
A typical use of this class to render a long text onto multiple pages would be as follows,
provided that 'tl' is a TextLayout instance containing the text to render, with specified available bounds
(<a class="xref" href="GrapeCity.Documents.Text.TextLayout.MaxWidth.html#GrapeCity_Documents_Text_TextLayout_MaxWidth">MaxWidth</a>, <a class="xref" href="GrapeCity.Documents.Text.TextLayout.MaxHeight.html#GrapeCity_Documents_Text_TextLayout_MaxHeight">MaxHeight</a>),
and 'tso' is an instance of <a class="xref" href="GrapeCity.Documents.Text.TextSplitOptions.html">TextSplitOptions</a> containing the desired split options:
<pre><code class="lang-csharp">...
tl.PerformLayout(true);
var tls = new TextLayoutSplitter(tl);
for (var tlPage = tls.Split(tso); tlPage != null; tlPage = tls.Split(to))
  doc.Pages.Add().Graphics.DrawTextLayout(tlPage, PointF.Empty);</code></pre>
</div>
  <h3 id="constructors">Constructors
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="GrapeCity_Documents_Text_TextLayoutSplitter__ctor_GrapeCity_Documents_Text_TextLayout_" data-uid="GrapeCity.Documents.Text.TextLayoutSplitter.#ctor(GrapeCity.Documents.Text.TextLayout)">
          <a class="xref" href="GrapeCity.Documents.Text.TextLayoutSplitter.-ctor.html#GrapeCity_Documents_Text_TextLayoutSplitter__ctor_GrapeCity_Documents_Text_TextLayout_">TextLayoutSplitter(TextLayout)</a>
        </td>
        <td class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="GrapeCity.Documents.Text.TextLayoutSplitter.html">TextLayoutSplitter</a> class.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="properties">Properties
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="GrapeCity_Documents_Text_TextLayoutSplitter_CurrentLayout" data-uid="GrapeCity.Documents.Text.TextLayoutSplitter.CurrentLayout">
          <a class="xref" href="GrapeCity.Documents.Text.TextLayoutSplitter.CurrentLayout.html#GrapeCity_Documents_Text_TextLayoutSplitter_CurrentLayout">CurrentLayout</a>
        </td>
        <td class="markdown level1 summary"><p>Gets the text layout representing the current portion to render,
or null if a split operation has not been performed yet.</p>
</td>
      </tr>
      <tr>
        <td id="GrapeCity_Documents_Text_TextLayoutSplitter_RestLayout" data-uid="GrapeCity.Documents.Text.TextLayoutSplitter.RestLayout">
          <a class="xref" href="GrapeCity.Documents.Text.TextLayoutSplitter.RestLayout.html#GrapeCity_Documents_Text_TextLayoutSplitter_RestLayout">RestLayout</a>
        </td>
        <td class="markdown level1 summary"><p>Gets the remaining portion of the original text layout.</p>
</td>
      </tr>
      <tr>
        <td id="GrapeCity_Documents_Text_TextLayoutSplitter_SplitResult" data-uid="GrapeCity.Documents.Text.TextLayoutSplitter.SplitResult">
          <a class="xref" href="GrapeCity.Documents.Text.TextLayoutSplitter.SplitResult.html#GrapeCity_Documents_Text_TextLayoutSplitter_SplitResult">SplitResult</a>
        </td>
        <td class="markdown level1 summary"><p>Gets the result of the last split operation.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="methods">Methods
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="GrapeCity_Documents_Text_TextLayoutSplitter_Split_GrapeCity_Documents_Text_TextSplitOptions_" data-uid="GrapeCity.Documents.Text.TextLayoutSplitter.Split(GrapeCity.Documents.Text.TextSplitOptions)">
          <a class="xref" href="GrapeCity.Documents.Text.TextLayoutSplitter.Split.html#GrapeCity_Documents_Text_TextLayoutSplitter_Split_GrapeCity_Documents_Text_TextSplitOptions_">Split(TextSplitOptions)</a>
        </td>
        <td class="markdown level1 summary"><p>Fits all or the first portion of the original text layout into the current layout bounds.</p>
</td>
      </tr>
      <tr>
        <td id="GrapeCity_Documents_Text_TextLayoutSplitter_SplitAndBalance_GrapeCity_Documents_Text_PageSplitArea___GrapeCity_Documents_Text_TextSplitOptions_" data-uid="GrapeCity.Documents.Text.TextLayoutSplitter.SplitAndBalance(GrapeCity.Documents.Text.PageSplitArea[],GrapeCity.Documents.Text.TextSplitOptions)">
          <a class="xref" href="GrapeCity.Documents.Text.TextLayoutSplitter.SplitAndBalance.html#GrapeCity_Documents_Text_TextLayoutSplitter_SplitAndBalance_GrapeCity_Documents_Text_PageSplitArea___GrapeCity_Documents_Text_TextSplitOptions_">SplitAndBalance(PageSplitArea[], TextSplitOptions)</a>
        </td>
        <td class="markdown level1 summary"><p>Fits all or the first portion of the current text layout into one or more layout areas (such as page columns).</p>
</td>
      </tr>
    </tbody>
  </table>

</div>
