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

标签 python ms-word python-docx

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

这可能吗?

-- 提前致谢! 日本

最佳答案

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

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

可能想通过提取一些函数来使其更漂亮,但这就是要点。

关于python - 有没有办法使用 python-docx 更改Word文档字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43363665/

相关文章:

Python - 返回每个键的第一个值

python - 强制颜色图为正方形

c# - 从 .doc MS Word 文件存储数学方程式并恢复它们

python - 在 python3.3 中导入 docx 时出现错误 ImportError : No module named 'exceptions'

Python - 从 docx 文件中删除页眉和页脚

python - 在 Conda 虚拟环境中使用来自 Github 的包

python - 如何将列表转换为字符串

c# - VSTO:为什么 OfficeRibbon.Context 为空?

vba - Word VBA 代码改进

docx - Python-docx - 添加值后将现有表格中的单元格内容居中