【问题标题】:Create page break using OpenXml使用 OpenXml 创建分页符
【发布时间】:2010-05-08 19:20:28
【问题描述】:

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

谢谢

【问题讨论】:

    标签: c# .net openxml openxml-sdk


    【解决方案1】:

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

    <w:p>
      <w:r>
        <w:br w:type="page" />
      </w:r>
    </w:p>
    

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

    new Paragraph(
      new Run(
        new Break(){ Type = BreakValues.Page }));
    

    编辑:

    如果你只想指定一个段落是页面上的最后一件事,你可以试试&lt;w:lastRenderedPageBreak /&gt;标签。

    new Paragraph(
       new Run(
          new LastRenderedPageBreak(),
          new Text("Last text on the page")));
    

    【讨论】:

    • 我尝试了这个解决方案,但是如果我的分页符之前的一些数据填充了上一页,我会遇到问题。 Word 将添加分页符,然后我的代码创建另一个分页符,我有一个空页。 :/我不确定如何更改:/
    • 这个答案中关于w:br/@w:type="page" 的部分很好,但关于w:lastRenderedPageBreak 的部分不正确。 w:lastRenderedPageBreak 只能由已确定呈现分页符 did 发生位置的处理器插入;它没有指定分页符应该发生的位置。
    【解决方案2】:

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

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

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

      <w:p>
        <w:pPr>
          ...
          <w:pageBreakBefore/>   
          ...
        </w:pPr>
        ...    
      </w:p>
    

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多