我需要获取段落中所有斜体和粗体的文本。我正在手动将文本转换为斜体和粗体形式,但下面的代码没有返回。它只是一个启动器还是我们也可以从中获取值,我如何才能获取所有斜体和粗体文本?
def get_italic_ratio(slide):
count = 0
for shape in slide.shapes:
if not shape.has_text_frame:
continue
text_frame = shape.text_frame
par = text_frame.paragraphs[0]
run = par.add_run()
print(run.font.italic) # returns None, should return True
print(run.font.bold) # returns None, should return True
print(text_frame.paragraphs)
2条答案
按热度按时间vptzau2j1#
我相信您的问题是如何找到字体格式参数的“有效”值。
一串文本的格式由一组在样式层次结构上操作的规则决定。(如bold)直接应用于运行,则该运行优先。如果未直接应用bold,run.bold将返回None,并且运行的“粗体”将通过检查样式层次结构的其余部分来确定。这可能是幻灯片布局上的属性,幻灯片母版或主题或演示默认值(以及可能的其它可能性)。
因此,要找到有效值,就需要发现这些规则,并在样式层次结构中导航,以便为任何给定的文本片段解析这些规则。
python-pptx
中还没有对此的API支持。xqkwcwgp2#
如果默认的字体大小、名称、粗体等从未改变过,那么pptx返回None。您可以改变属性,然后它应该显示正确的值。