使用OpenXml创建分页符

are*_*rek 30 .net c# openxml openxml-sdk

我使用OpenXml创建Word文档,其中包含简单文本和本文下的一些表格.如何强制使用此文本的Paragraph始终显示在新页面上?也许这一段应该是一些标题,但我不知道该怎么做.

谢谢

Ada*_*han 46

您可以使用该<w:br>元素在Run元素中创建分页符.在原始OpenXML中,它看起来像:

<w:p>
  <w:r>
    <w:br w:type="page" />
  </w:r>
</w:p>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是OpenXml SDK,则可以使用

new Paragraph(
  new Run(
    new Break(){ Type = BreakValues.Page }));
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您只想指定段落是页面上的最后一个内容,则可以尝试使用该<w:lastRenderedPageBreak />标记.

new Paragraph(
   new Run(
      new LastRenderedPageBreak(),
      new Text("Last text on the page")));
Run Code Online (Sandbox Code Playgroud)

  • 这个关于`w:br / @ w:type =“ page”`的部分很好,但是关于`w:lastRenderedPageBreak`的部分不正确。w:lastRenderedPageBreak应该只由已经确定渲染的分页符发生在哪里的处理器插入;它没有指定应该在哪里分页。 (2认同)

Col*_*n K 10

PageBreakBefore属性实现了这一点.如果Word没有自动插入一个分页符,它将在你的段落之前插入分页符.

if (myParagraph.ParagraphProperties== null) 
{ 
    myParagraph.ParagraphProperties = new ParagraphProperties();
}

myParagraph.ParagraphProperties.PageBreakBefore = new PageBreakBefore();
Run Code Online (Sandbox Code Playgroud)

我相信它在Open XML中看起来像这样:

  <w:p>
    <w:pPr>
      ...
      <w:pageBreakBefore/>   
      ...
    </w:pPr>
    ...    
  </w:p>
Run Code Online (Sandbox Code Playgroud)