有没有办法使用python-docx更改word文档字体?

时间:2017-04-12 08:00:39

标签: python ms-word python-docx

我正在寻找一种将整个文档的字体更改为Arial(10pt)的pythonic方式,因为当前文档混合了几种字体。

这可能吗?

- 提前致谢! JP

1 个答案:

答案 0 :(得分:1)

有几种不同的方法可以解决这个问题,因为这是一个比最初看起来更复杂的问题。

“明显”字体,或者更准确地说,Word中文本项的“有效”字体是从样式层次结构计算得的,就像CSS对HTML一样。

样式层次结构中的最终级别(覆盖所有较高级别)直接在“运行”级别应用格式设置。因此,如果您将特定运行设置为具有Arial 10pt,则无论如何都会以这种方式显示。

在该级别之上,您有段落默认格式,字符样式,段落样式,继承样式(应用样式的基本样式)和文档默认值,可能不完全是那个顺序。所以你可以看到我关于复杂性的观点。所有这些事情都需要重新调整才能“正确”地完成(这对以后的可编辑性来说无疑是个优点)。

但是如果你想要一个强力方法,只需对文档中的每个运行应用一个显式字体。也许更好的方法是在每次运行时实际删除显式字体设置,并让样式或文档默认为有效字体。

迭代运行看起来像这个aircode:

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---

可能希望通过提取一些功能来做得更漂亮,但这就是要点。