python run.font.italic和run.font.bold返回None而不是True

vi4fp9gy  于 2023-03-16  发布在  Python
关注(0)|答案(2)|浏览(147)

我需要获取段落中所有斜体和粗体的文本。我正在手动将文本转换为斜体和粗体形式,但下面的代码没有返回。它只是一个启动器还是我们也可以从中获取值,我如何才能获取所有斜体和粗体文本?

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

vptzau2j1#

我相信您的问题是如何找到字体格式参数的“有效”值。
一串文本的格式由一组在样式层次结构上操作的规则决定。(如bold)直接应用于运行,则该运行优先。如果未直接应用bold,run.bold将返回None,并且运行的“粗体”将通过检查样式层次结构的其余部分来确定。这可能是幻灯片布局上的属性,幻灯片母版或主题或演示默认值(以及可能的其它可能性)。
因此,要找到有效值,就需要发现这些规则,并在样式层次结构中导航,以便为任何给定的文本片段解析这些规则。python-pptx中还没有对此的API支持。

xqkwcwgp

xqkwcwgp2#

如果默认的字体大小、名称、粗体等从未改变过,那么pptx返回None。您可以改变属性,然后它应该显示正确的值。

相关问题