如何通过从底部运行到顶部docDefaults遍历来获取样式值?

问题描述

TLDR:,当我们要在run属性中查找值并返回{{1}时,它的优先级更高Style InheritanceStyle Hierarchy }作为输出。?

示例:从文档中的所有运行中打印字体名称

None

问题:

当前,我正在研究一个用例,以检查给定文档是否具有特定的字体/语言/字体大小等,...

例如:为了获得整个文档的语言(拼写和语法)。目前,我按照以下步骤使用doc = Document() for para in doc.paragraphs: if para.text: for run in para.runs: print(run.font.name) 获取值:

  1. 加载文档
  2. 遍历段落
  3. 遍历一段段落
  4. 检查Style Hierarchy的(当前运行)rPr
  5. 如果运行没有任何价值,请检查当前 para lang
  6. 如果para中没有值,则从rPr中获取值
  7. 如果我在步骤4-6之间得到一个值,我会将该值视为运行值

这种方法帮助我获得了lang和font的预期结果(至少对于我拥有的文档而言)。

但是在某些情况下,lang本身没有价值,这种方法也无济于事,于是我听说了Style Inheritance

因此,如果当前样式没有值,那么我只是实现了一个递归函数以从docDefaults rPr获取值。

我对实现进行了微小的更改,因为只要docDefaults中没有任何值,我只需检查base_style的值,然后在层次结构中向上移动一步即可。

我不确定我遵循的方法是否正确。如果有一个简单的方法可以实现这一目标。请帮忙。 References

Source Code for the above steps

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)