Create page break using OpenXml
-
04-10-2019 - |
Question
I use OpenXml to create Word document with simple text and some tables under this text. How can I force Paragraph with this text to show always on new page? Maybe this paragraph should be some Header but I'm not sure how to do this.
Thanks
Solution
You can create a page break within a Run element using the <w:br>
element. In raw OpenXML, it would look something like:
<w:p>
<w:r>
<w:br w:type="page" />
</w:r>
</w:p>
If you're using the OpenXml SDK, you can use
new Paragraph(
new Run(
new Break(){ Type = BreakValues.Page }));
EDIT:
If you just want to specify that a paragraph is the last thing on a page, you can try the <w:lastRenderedPageBreak />
tag.
new Paragraph(
new Run(
new LastRenderedPageBreak(),
new Text("Last text on the page")));
OTHER TIPS
The PageBreakBefore property accomplishes this. It will insert a page break before your paragraph if Word didn't insert one automatically.
if (myParagraph.ParagraphProperties== null)
{
myParagraph.ParagraphProperties = new ParagraphProperties();
}
myParagraph.ParagraphProperties.PageBreakBefore = new PageBreakBefore();
I believe it looks something like this in Open XML:
<w:p>
<w:pPr>
...
<w:pageBreakBefore/>
...
</w:pPr>
...
</w:p>