有两种不同的方法来解决这个问题,因为这是一个比最初看起来更复杂的问题。在
Word中文本项的“明显”字体,或者更确切地说是“有效”字体是从样式层次结构计算出来的,这与CSS对HTML的工作方式非常相似。在
样式层次结构中的最后一个级别覆盖了所有更高级别,直接在运行级别应用格式。因此,如果您将特定的运行设置为Arial 10pt,则无论发生什么情况,它都会以这种方式显示。在
在这一级别之上,您有段落默认格式、字符样式、段落样式、继承样式(应用样式的基本样式)和文档默认值,可能不完全按照这个顺序排列。所以你可以理解我关于复杂性的观点。所有这些东西都需要重新调整才能“正确”地完成(这对于以后的编辑来说无疑是有好处的)。在
但是,如果您希望使用暴力方法,只需对文档中的每个运行应用显式字体。也许更好的做法是在每次运行时删除显式的字体设置,让样式或文档的默认值来管理有效的字体。在
迭代运行看起来像下面的代码:document = Document('my-document.docx')
for paragraph in document.paragraphs:
for run in paragraph.runs:
font = run.font
# -do font-related things -
for table in document.tables:
for row in table.rows:
for cell in row.cells:
for paragraph in cell.paragraphs:
for run in paragraph.runs:
font = run.font
# -do font-related things -
可能想通过提取一些函数使它更漂亮,但这就是要点。在