python - 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
谢谢
解决方案
在 PowerPoint 中(在这方面与 CSS 大致相似),字体属性可以应用于(至少在某些情况下)所谓的样式层次结构中的各种级别。覆盖以上任何级别的底层是直接将样式应用于特定运行。只有像这样直接应用的属性才能使用.bold
和之类的属性来检索.color
。
可能有类似.effective_bold
和导航样式层次结构的属性.effective_color
,以计算在渲染时将应用什么值,但(还没有)。
因此,None
for 的值font.color.rgb
表示 run从其样式层次结构(例如,段落默认值、形状默认值、主题或演示默认值等)继承其颜色设置,但不幸的是,它没有遍历样式层次结构来确定其有效的颜色设置是什么。
推荐阅读
- regex - 防止电子邮件名称欺骗的正则表达式
- python - 用自己的功能计算数字、大写字母、小写字母和空格
- macos - macOS Big Sur:意外的产品版本 11.1。如何修补 perlbrew?
- fonts - 计算给定文本高度的公式是什么?
- c - C:指针结构比较不起作用
- javascript - 与用户一起嵌入该更新
- javascript - 这个 JavaScript document.getElementById('#searchboxinput').dispatchEvent(new MouseEvent('keyup')); 的 selenium python 客户端等价物是什么?
- php - PHP数据库未连接
- javascript - document.querySelectorAll 的结果不一致
- c# - 控制台应用程序:System.IO.FileNotFoundException:找不到文件