You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Open XML解析Word文档时单词拆分异常问题技术咨询

为啥Word文档里的单词会被拆成两个片段?

嘿,这个问题我之前处理Office Open XML解析时碰到过类似情况,和语言、编码基本没关系,核心原因是Word的文本运行块(<w:r>)拆分逻辑——看你贴的OuterXml片段就能找到明确线索:

对比两个<w:r>的字符属性<w:rPr>

  • 第一个<w:r>多了个<w:spacing w:val="-1"/>,意思是这段文本的字符间距被设置为紧缩-1
  • 第二个<w:r>没有这个间距属性,但其他格式(加粗、字号、字体、语言设置)完全和第一个一致

Word的规则是:只要文本的局部格式有差异,就会把这部分文本单独拆成一个<w:r>块。这里就是"St"被手动设置了字符紧缩,而后面的"andards"没设,所以Word把它们分成了两个独立的运行块,看起来就像单词被拆成了两半。

额外说明:

  • 这种拆分不光出现在字符间距调整,手动给单词部分字母改格式(比如变色、改字号),或者文档从PDF/网页转过来带的格式残留,都会触发Word的这个逻辑。
  • 你看两个<w:r>里的<w:lang>都是en-US,编码也是标准的OOXML格式,完全排除语言和编码的锅。

要是想解析时还原完整单词:

可以做个判断逻辑:如果相邻的<w:r>块,除了这种局部格式差异(比如这里的间距),核心属性(字体、字号、语言、加粗状态)都一致,就可以把它们的<w:t>文本内容合并起来,就能得到完整的"standards"啦。


内容的提问来源于stack exchange,提问作者Felix Cen

火山引擎 最新活动