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

时间:2019-07-02 12:59:58

标签: python powerpoint python-pptx

我需要获取所有段落中的斜体和粗体文本。我正在手动将文本转换为斜体和粗体形式,但以下代码未返回任何内容。它仅仅是发起者,还是我们也可以从中获得价值,我如何获得所有斜体和粗体文本?

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)

1 个答案:

答案 0 :(得分:1)

我相信您的问题是如何找到字体格式化参数的“有效”值。

一段文本的格式由在样式层次结构上运行的一组规则确定。如果将格式设置属性(例如,粗体)直接应用于运行,则优先。如果不直接应用粗体,则run.bold返回None,并且运行的“粗体”是通过检查样式层次结构的其余部分来确定的。这可能是幻灯片布局的属性,幻灯片母版或主题或演示文稿的默认属性(也许还有其他可能性)。

因此,要找到有效值,需要发现这些规则,并导航样式层次结构以针对任何给定的文本片段来解析它们。 python-pptx中尚未为此提供API支持。