用分页符替换分节符
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,但我需要一个分页符打破。
这是合并后生成的文档包含的内容:
我需要这样的东西:
我不能为此使用 altChunks
、Interop
或任何付费图书馆。
您必须添加
<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 等)指定此标签后面的段落将在新页面上呈现。
我正在尝试使用 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,但我需要一个分页符打破。
这是合并后生成的文档包含的内容:
我需要这样的东西:
我不能为此使用 altChunks
、Interop
或任何付费图书馆。
您必须添加
<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 等)指定此标签后面的段落将在新页面上呈现。