1

我正在尝试使用 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构造函数的第二个参数表示分节符布尔值,但我需要一个分页符。

这是生成的文档在 meging 后包含的内容: 在此处输入图像描述

我需要这样的东西:

在此处输入图像描述

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

4

1 回答 1

1

你必须添加

<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 等)指定此标记后面的段落将在新页面上呈现。

于 2016-06-01T09:58:36.090 回答