在同一页面上保持一个SdtBlock

本文关键字:一个 SdtBlock 一页 | 更新日期: 2023-09-27 18:15:06

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

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

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

问题是,我没有成功地将sdt块保持在单个页面上。

我试图在word中直接添加一个样式到sdt块,但这不起作用。

条件为:

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

搜索了很多之后,我没有找到任何适合我需要的解决方案。只有解决方案涉及一个段落,而不是包含sdt内容的sdt块,这是截然不同的。

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

在同一页面上保持一个SdtBlock

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

请注意,如果内容对一个页面来说太长,那么这些选项将完全不起作用。因此,重要的是要确保"块"的最后一段没有格式化为KeepWithNext。

在Open XML SDK中,这是KeepNext类,对应于w: KeepNexthttps://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)元素的子元素。

在ooxml中没有太多东西可以定义页面,它是一个流动的文档,当它打开时,word会按照它认为最好的方式对它进行分页,假设您的块适合单个页面(页面大小,页边距等)。保证它有自己的页面的唯一方法是

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