用分页符替换分节符

Replace Section Break with Page Break

我正在尝试使用 OpenXml Powertools 中的 DocumentBuilder 将一些 word 文档合并为一个 word 文档。 这是用于合并的代码:

var sources = new List<Source>();
                foreach (var doc in documents)
                {
                    var wmlDoc = new WmlDocument(doc.Path);

                    sources.Add(new Source(wmlDoc, doc.PageBreak));
                }

                var newDestinationDocument = DocumentBuilder.BuildDocument(sources);

documents 中的每个对象都包含一个文档路径和一个布尔值,它表示我是否想要在文档后插入分页符。

此代码有效,但问题是我得到的是分节符而不是分页符,我知道 Source 构造函数的第二个参数代表分节符 bool,但我需要一个分页符打破。

这是合并后生成的文档包含的内容:

我需要这样的东西:

我不能为此使用 altChunksInterop 或任何付费图书馆。

您必须添加

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

对于要用分页符分隔的文档段落的开头或结尾。

在应用代码之前,请尝试以下操作 -

WordprocessingDocument myDoc = WordprocessingDocument.Open(@"file path", true);
MainDocumentPart mainPart = myDoc.MainDocumentPart;
OpenXmlElement last = myDoc.MainDocumentPart.Document
    .Body
    .Elements()
    .LastOrDefault(e => e is Paragraph || e is AltChunk);
last.InsertAfterSelf(new Paragraph(
    new Run(
        new Break() { Type = BreakValues.Page })));
mainPart.Document.Save();

我选择了文件的最后一段。您也可以根据您的要求选择对文档的第一部分执行相同的操作。

上面的代码将添加 <w:br w:type="page" />,它会添加一个手动分页符。

您也可以尝试对文档的最后一段使用 <w:pageBreakBefore/>,它向客户端(MS Word 等)指定此标签后面的段落将在新页面上呈现。