首页 > 解决方案 > python-pptx:读取字体颜色

问题描述

我想从给定的文本框中读取字体颜色。我可以提取字体名称和粗体,但不能提取颜色(或字体名称)。

这是我的代码:

text_frame = shape.text_frame
paragraph = text_frame.paragraphs[0]

for run in paragraph.runs:
    font = run.font
    try:
        font_size = font.size.pt
        print(font_size)
        font_bold = font.bold
        print(font_bold)
        font_name = font.name
        print(font_name)
        color = font.color.rgb
        print(color)
    except:
        pass

返回:

36.0
True
None

谢谢

标签: pythonpython-pptx

解决方案


在 PowerPoint 中(在这方面与 CSS 大致相似),字体属性可以应用于(至少在某些情况下)所谓的样式层次结构中的各种级别。覆盖以上任何级别的底层是直接将样式应用于特定运行。只有像这样直接应用的属性才能使用.bold和之类的属性来检索.color

可能有类似.effective_bold和导航样式层次结构的属性.effective_color,以计算在渲染时将应用什么值,但(还没有)。

因此,Nonefor 的值font.color.rgb表示 run从其样式层次结构(例如,段落默认值、形状默认值、主题或演示默认值等)继承其颜色设置,但不幸的是,它没有遍历样式层次结构来确定其有效的颜色设置是什么。


推荐阅读