java - 如何对 docx 文件进行碎片整理以便与 Apache POI 3.8 一起使用?

标签 java ms-word apache-poi defragmentation

我正在尝试使用 POI 3.8 查找并替换 docx 文件中的文本段落,如 here 中所述。 .

如果我在第一次运行时插入标签,效果就很好。但是,一旦我重新打开 docx 文件并进行一些修改,Word 实际上就会在文本运行中产生碎片。例如,“hello world”可能是:

<w:r><w:t>Hello wo</w:t></w:r><w:r w:rsidR="00FB0672"><w:t>rld</w:t></w:r>

我认为这种碎片化是由于更改跟踪、格式设置和拼写检查等原因造成的。

有人知道如何...

a) ...在 MS Word 中禁用此功能?

b) ...之后以某种方式对 docx 文件进行碎片整理?

c) ...还有其他解决方案可以消除这种碎片吗?

我已尝试将文件另存为 .doc/.odt 并将文件重新保存为 .docx。但这些碎片仍然存在......

非常感谢任何帮助 - 提前感谢您的帮助!

最佳答案

在 Word 中,您想要且可以关闭的功能是拼写和语法检查以及 rsid 插入。

这是针对docx4j(我管理的项目)的,不是POI,而是VariablePrepare向您展示如果您无法在 Word 中阻止碎片整理,则需要执行哪些操作。由于 POI 使用类似的 XML 编码/解码方法(尽管是 XML Bean,而不是 JAXB),因此您应该能够转换该代码以使用 POI API。

关于java - 如何对 docx 文件进行碎片整理以便与 Apache POI 3.8 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403986/

相关文章:

vba - 字VBA : Insert a picture without known aspect ratio of file

java - 在没有打开 word 窗口的情况下运行 word 宏

java - 如何在apache POI中自动调整excel中的列

java - 重复数据验证

java - 如何在selenium xpath中的多个div之间获取子父Web元素组件?

java - 如何在Java中获取窗口外的鼠标点击坐标

java - 重命名 hashmap 的键值而不是重新插入

excel - 如何将文本从Excel发送到Word,其中一个单词(单元格)是粗体的?

java - apache poi evaluateall() 不可用

java - 如何在 apache POI 中重复标题(灰色区域)