0

我一直在使用 python-pptx,如果 scanny 看到这个:非常感谢您的工作!使用这个软件包非常愉快。我需要的每一个功能都是可用的,如果我找不到它,SO上有一些答案。

插入文本后,我可以计算文本框使用的行数吗?根据我的研究,您只能计算段落。当然,通过一些 python 魔法,我可以计算出单词和字符的数量,但我想我会寻找一些python-pptx看起来像这样的功能len(text_frame.lines)

如果该功能可用,那将是锦上添花!如果有人可以在不使用 python-pttx 甚至 python 的情况下执行此功能,我也很感兴趣。

代码片段如下所示:

for slide in prs.slides: 
    for shape in slide.shapes: 
        text_frame = shape.text_frame
        key=[substring for substring in keys_dict if substring in text_frame.text]
        if 'My_Key' in key:
            text_frame.text=item_to_replace
            print(len(text_frame.paragraphs)) 
            # searched: len(text_frame.lines)
4

1 回答 1

0

最简洁的答案是不”。

原因在于python-pptx它本质上是一个 PowerPoint (.pptx) 文件编辑器,并且文件中未指定文本框中呈现的行数。该.pptx文件指定了文本,如何划分段落和运行以及每个运行的字符格式,但实际的显示特性,例如哪个字母出现在屏幕或打印页面的哪个位置,都是由渲染引擎决定的。

在 Microsoft PowerPoint 中,这是 PowerPoint 应用程序本身的(一部分)。LibreOffice 等其他客户端也有自己的渲染引擎。

正如您所说,通过一些花哨的编程,您可以近似您提到的值,例如它占用了多少行以及发生换行符的位置,但是这样做您正在实现自己的(部分)渲染引擎。这当然不能保证总是产生与特定客户端相同的结果。

请注意,并非所有客户端都必须以相同的方式呈现。例如,与 PowerPoint 相比,Google Docs 中幻灯片呈现方式的细微差别无需费力寻找。

其他相关的常见问题,例如“我怎样才能知道我的桌子何时已满,以便在下一张幻灯片上继续?” 不借助渲染也无法解决。

于 2021-06-06T07:02:03.827 回答