将SdtBlock保留在同一页面上

时间:2015-09-29 09:33:18

标签: c# ms-word openxml

我正在对word文档进行一些开放的xml操作。

它有几个sdt内容,都包含在sdt块中。

我每次需要时都以编程方式复制粘贴sdt块。

问题是,我没有成功将sdt块保留在一个页面上。

我尝试将单词样式直接添加到sdt块中,但这不起作用。

条件是:

一个sdt块必须完全在同一页面上。

经过大量搜索,我找不到符合我需要的解决方案。只有一个段落的解决方案,而不是包含sdt内容的sdt块,这是不同的。

如果可能的话:它一定是单词吗?在c#代码中?

2 个答案:

答案 0 :(得分:1)

除了James提出的建议之外,您还可以通过设置段落格式选项来控制Word如何布局页面。在您的情况下相关的是KeepWithNext(在同一页面上保持连续的段落)和KeepTogether(在同一页面上保留单个段落的内容)。

请注意,如果单个页面的内容太长,则选项根本不起作用。因此,确保“块”的最后一段不是格式化为KeepWithNext。

非常重要

在Open XML SDK中,这是KeepNext类,对应于w:keepNext https://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.keepnext(v=office.14).aspx

KeepLines类(w:keepLines):https://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.keeplines(v=office.14).aspx

两者都是段属性(w:pPr)元素的子元素。

答案 1 :(得分:0)

在ooxml中没有太多定义页面的内容,它是一个流动的文档和单词在它打开时将其分页,因为它认为是最好的,假设你的块适合单个页面(页面大小,边距,等等)。您保证自己获取页面的唯一方法是

  1. 在它之前放一个分页符(这将导致空白页,除非你有办法检查上一页是否适合预期的块)
  2. 将其放入文本框中(不确定sdt块是否可以放在文本框中)
  3. 将它放在一个表格单元格(带有不可见边框的1x1表格)中,并将表格属性设置为不跨页面划分一行。