Python-pptx:将现有ppt的每个幻灯片保存为图片

4
我正在使用PowerPoint作为我的网页用户界面来制作简单的图片。我今天所做的是在ppt中创建幻灯片,然后将每个幻灯片保存为图片,然后我的网页会下载这些图片并显示它们。我希望尽可能自动化这个过程,以消除手动保存的步骤。
我已经查看了Python-pptx包,但是我找不到能够让我保存每个幻灯片为图片的函数。你能帮帮我吗?
1个回答

1

python-pptx不是这个任务的合适工具,因为它根本不与PowerPoint交互(它可以在没有安装PowerPoint的情况下工作)。如果您在系统上安装了PowerPoint,则可以使用comtypes模块从python中控制它。如何执行此操作的示例可以在python-pptx-interface模块中找到:

 from comtypes.client import Constants, CreateObject

# ...

def save_pptx_as_png(png_foldername: str, pptx_filename: str, overwrite_folder: bool = False):
    if os.path.isdir(png_foldername) and not overwrite_folder:
        print(f"Folder {png_foldername} already exists. "
              f"Set overwrite_folder=True, if you want to overwrite folder content.")
        return

    powerpoint = CreateObject("Powerpoint.Application")
    pp_constants = Constants(powerpoint)

    pres = powerpoint.Presentations.Open(pptx_filename)
    pres.SaveAs(png_foldername, pp_constants.ppSaveAsPNG)
    pres.close()
    if powerpoint.Presentations.Count == 0:  # only close, when no other Presentations are open!
        powerpoint.quit()

这应该可以让您了解如何编写自己的save_as_png函数。
或者您可以直接使用python-pptx-interface:
from pptx_tools import utils  # needs python-pptx-interface installed
# you should use full paths, to make sure PowerPoint can handle the paths
png_folder = ...
pptx_file = ... 

utils.save_pptx_as_png(png_folder, pptx_file)  # additional optional parameter overwrite_folder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接