shift-enter 在 Word 文档中是如何表示的?

How is shift-enter represented in a Word doc?

我正在使用 Java 和 Apache POI 读取 Word 文档模板并从中生成新文档。原始文档有换行符,用“shift-enter”输入;我认为这将允许在继续该段落时换行。但是当我对 运行s 进行排序时,我似乎在那个时候得到了一个空字符串。 运行上有'flags';他们是否以某种方式指示换行符?我想把它留在结果文件中;我认为正在发生的事情是我将其检测为空字符串并将其排除在外。如何检测它的存在,以便在处理完模板后将其留在生成的文档中?

附带说明一下,这些标志是否记录在任何地方?

我怀疑您在谈论 apache poiXWPF,这是处理 Office Open XML 文件格式 *.docxapache poi 部分。

所有 Office Open XML 文件格式都是 ZIP 存档,其中包含 XML 文件和特殊目录结构中的其他文件。因此,人们可以简单地解压缩 *.docx 文件并查看它。

对于明确的换行符(Shift+Enter)你会在/word/document.xml中找到以下XML在该 ZIP 存档中:

...
<w:r ...>
 <w:br/>
</w:r>
...

所以它是一个运行元素(w:r)包含一个或多个中断元素(w:br)。

运行 元素 (w:r) 是 apache poiXWPFRun 的低级源。它由 org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR 表示,可以通过 XWPFRun.getCTR.

获得

所以如果你有一个XWPFRun run,你可以得到明确的换行符:

...
for (int i = 0; i < run.getCTR().getBrList().size(); i++) {
 System.out.println("<BR />");
}
...

这有任何记录吗?

ECMA-376 Office Open XML。

org.openxmlformats.schemas.wordprocessingml.x2006.main.* 类 是 auto-generated 从这个规格。不幸的是,没有可用的 API 文档 public。因此,需要从 ooxml-schemas (up to apache poi 4) or poi-ooxml-full(从 apache poi 5 开始)下载源,然后从中执行 javadoc