2016-05-31 291 views
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后什么导致文档包含: enter image description here

我需要这样的:

enter image description here

我不能使用altChunksInterop或这方面的任何付费库。

回答

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等)的文档的最后一段,该标签后面的段落将在新页面上呈现。

+0

它的工作原理,谢谢。但我实现它有点不同,事情是,这将改变我的文档,如果我想重复使用它没有分页符,我必须找到最后一段并删除它,我不希望这样。我所做的是创建一个空文档,并添加只包含分页符的段落。然后,当我想在docx文档之后分页时,只需在'sources'列表中添加带分页符的空白分页,直到现在看起来工作正常。 – Simonca

+0

聪明的方式。尼斯。 – Flowerking