有没有办法使用 python-docx 更改 word 文档字体?
Is there a way of changing a word documents font using python-docx?
我正在寻找一种将整个文档的字体更改为 Arial (10pt) 的 pythonic 方法,因为当前文档混合了几种字体。
这可能吗?
--
提前致谢!
日本
有几种不同的方法可以解决这个问题,因为它是一个比最初看起来更复杂的问题。
Word 中文本项的 "apparent" 字体,或者更准确地说,"effective" 字体是根据样式层次结构计算的,与 CSS 对 [=31 的工作方式大致相同=].
样式层次结构中覆盖所有更高级别的最后一级直接在 运行 级别应用格式设置。因此,如果您将特定的 运行 设置为 Arial 10pt,无论如何它都会以这种方式显示。
在该级别之上,您有段落默认格式、字符样式、段落样式、继承样式(应用样式的基本样式)和文档默认,顺序可能不完全相同。所以你可以看到我关于复杂性的观点。所有这些都需要重新调整才能做到 "properly"(这对以后的可编辑性肯定有好处)。
但是,如果您想要一种蛮力方法,只需对文档中的每个 运行 应用明确的字体。也许更好的办法是实际 删除 每个 运行 上的显式字体设置,并让样式或文档默认设置有效字体。
迭代 运行s 看起来像这样的代码:
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---
可能想通过提取一些功能使它更漂亮,但这就是要点。
我正在寻找一种将整个文档的字体更改为 Arial (10pt) 的 pythonic 方法,因为当前文档混合了几种字体。
这可能吗?
-- 提前致谢! 日本
有几种不同的方法可以解决这个问题,因为它是一个比最初看起来更复杂的问题。
Word 中文本项的 "apparent" 字体,或者更准确地说,"effective" 字体是根据样式层次结构计算的,与 CSS 对 [=31 的工作方式大致相同=].
样式层次结构中覆盖所有更高级别的最后一级直接在 运行 级别应用格式设置。因此,如果您将特定的 运行 设置为 Arial 10pt,无论如何它都会以这种方式显示。
在该级别之上,您有段落默认格式、字符样式、段落样式、继承样式(应用样式的基本样式)和文档默认,顺序可能不完全相同。所以你可以看到我关于复杂性的观点。所有这些都需要重新调整才能做到 "properly"(这对以后的可编辑性肯定有好处)。
但是,如果您想要一种蛮力方法,只需对文档中的每个 运行 应用明确的字体。也许更好的办法是实际 删除 每个 运行 上的显式字体设置,并让样式或文档默认设置有效字体。
迭代 运行s 看起来像这样的代码:
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---
可能想通过提取一些功能使它更漂亮,但这就是要点。