C# OpenXML:添加新段落时插入lastRenderedPageBreak

C# OpenXML:添加新段落时插入lastRenderedPageBreak,c#,xml,ms-word,openxml,page-break,C#,Xml,Ms Word,Openxml,Page Break,我使用OpenXML添加了一个新段落,如下所示: var pSpacerAfterSectorTitle = insertNodeSectorsArea.AppendChild(GetNewParagraph("Arial", 12, true, false, null)); 方法如下: private static Paragraph GetNewParagraph(string fontName, int fontSize, bool useBold, bool useUnderline,

我使用OpenXML添加了一个新段落,如下所示:

var pSpacerAfterSectorTitle = insertNodeSectorsArea.AppendChild(GetNewParagraph("Arial", 12, true, false, null));
方法如下:

private static Paragraph GetNewParagraph(string fontName, int fontSize, bool useBold, bool useUnderline, string text)
{
    var p = new Paragraph();
    var pPr = p.AppendChild(new ParagraphProperties());
    var rPrP = pPr.AppendChild(GetNewRunProperties(fontName, fontSize, useBold, useUnderline));
    var r = p.AppendChild(new Run());
    var rPr = r.AppendChild(GetNewRunProperties(fontName, fontSize, useBold, useUnderline));
    if (!string.IsNullOrEmpty(text))
    {
        r.AppendChild(new Text() { Text = text,
            Space = SpaceProcessingModeValues.Preserve });
    }
    return p;
    }
}
而且

private static RunProperties GetNewRunProperties(string fontName, int fontSize, bool useBold, bool useUnderline)
    {
        string fontSizeVal = (fontSize * 2).ToString();

        var runPr = new RunProperties();
        runPr.AppendChild(new RunFonts() { ComplexScript = fontName });
        if (useBold)
        {
            runPr.AppendChild(new Bold());
        }
        runPr.AppendChild(new FontSize() { Val = fontSizeVal });
        runPr.AppendChild(new FontSizeComplexScript() { Val = fontSizeVal });
        if (useUnderline)
        {
            runPr.AppendChild(new Underline() { Val = UnderlineValues.Single });
        }
        runPr.AppendChild(new Languages() { EastAsia = "de-CH" });

        return runPr;
    }
当以这种方式添加段落时,我会在第一页突然看到一个
lastrendedpagerbreak
,与我认为插入段落的位置无关

...<w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr><w:lastRenderedPageBreak/><w:t>Sitzung 20171207 PSC 1</w:t></w:r></w:p>
…Sitzung 20171207 PSC 1
如果我注释掉添加的段落,则生成的文档不包含此分页符:

...<w:b/><w:sz w:val="18"/><w:szCs w:val="18"/></w:rPr><w:t>Sitzung 20171207 PSC 1</w:t></w:r></w:p>
…Sitzung 20171207 PSC 1
我检查了我的代码很多次,但是我没有手动创建这样的
lastrendedpagebreak
——所以我目前不知道它来自哪里


有什么想法吗?

在OOXML中,
w:lastRenderedPageBreak
将由对文档进行分页的最后一个软件插入,以标记分页计算的结果

因此,为了直接回答您的问题,
w:lastrendedpagebreak
被插入到您的背后,而不是您自己的代码

您可以通过一个不进行分页的库来操纵OOXML,使其远离MS Word,以避免这种行为,但请注意,当文档下次由进行分页的软件呈现和保存时,可能会插入
w:lastRenderedPageBreak
元素

还请注意,不幸的是