在 Python 中使用 PowerPoint 中的形状

PowerPoint 演示文稿中使用了各种类型的图表,以使内容更加详尽。这些图表由不同的形状组成,例如椭圆、线条、矩形和连接器。在本文中,您将学习如何在 Python 中以编程方式在 PowerPoint 幻灯片中添加、克隆和删除形状。

用于处理 PowerPoint 形状的 Python 库

Aspose.Slides for Python via .NET 旨在从 Python 应用程序中创建和操作 PowerPoint 演示文稿。我们将使用这个库来处理 PowerPoint 幻灯片中的形状。您可以使用以下 pip 命令从 PyPI 安装它。

> pip install aspose.slides

PowerPoint 中的形状类型

您可以使用 Aspose.Slides for Python 在 PowerPoint 演示文稿中创建各种形状。最常用的形状包括:

在 Python 中将形状添加到 PowerPoint 幻灯片

要添加任何形状,包括椭圆、直线、矩形,可以使用 addautoshape(ShapeType, Single, Single, Single, Single) 方法,您可以将形状的类型和其他必要的参数传递给该方法。 ShapeType 枚举用于指定形状的类型。以下是在 Python 中将形状添加到 PowerPoint 幻灯片的步骤。

  1. 使用 Presentation 类创建演示文稿或加载现有演示文稿。
  2. 从 Presentation.slides 集合中获取所需幻灯片的引用。
  3. 使用 addautoshape(ShapeType, Single, Single, Single, Single) 方法添加椭圆(或任何其他形状)。
  4. 使用 Presentation.save(String, SaveFormat) 方法保存演示文稿。

以下代码示例演示如何在 Python 中将形状添加到 PowerPoint 幻灯片。

import aspose.slides as slides
import aspose.pydrawing as drawing

# 创建一个新的演示文稿
with slides.Presentation() as pres:
    # 获取第一张幻灯片
    sld = pres.slides[0]

    # 添加椭圆类型的自动形状
    shp = sld.shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 50, 150, 150, 50)

    # 对椭圆形状应用一些格式
    shp.fill_format.fill_type = slides.FillType.SOLID
    shp.fill_format.solid_fill_color.color = drawing.Color.pink

    # 对 Ellipse 行应用一些格式
    shp.line_format.fill_format.fill_type = slides.FillType.SOLID
    shp.line_format.fill_format.solid_fill_color.color = drawing.Color.purple
    shp.line_format.width = 5

    # 将 PPTX 文件保存到磁盘
    pres.save("add-ellipse.pptx", slides.export.SaveFormat.PPTX)

以下是我们使用上面的代码示例添加的椭圆。

在 Python 中将形状添加到 PowerPoint PPT

在 Python 中使用连接器连接 PowerPoint 形状

在图表中,不同的形状使用称为连接器的线相互连接。连接器可以是直线或曲线。让我们看看如何在 Python 中的两个 PowerPoint 形状之间添加连接器。

  1. 首先,创建一个 Presentation 类的实例来创建或加载演示文稿。
  2. 然后,使用 Presentation.slides 集合获取幻灯片的引用。
  3. 就像您在上一节中添加的一样添加两个形状并获取它们的参考。
  4. 使用 addconnector(ShapeType, Single, Single, Single, Single) 方法创建连接器。
  5. 使用 Connector.startshapeconnectedto 和 Connector.endshapeconnectedto 属性连接形状。
  6. 调用 Connector.reroute() 方法创建最短的自动连接路径。
  7. 最后,使用 Presentation.save(string, SaveFormat) 方法保存演示文稿。

以下代码示例演示如何在 Python 中连接 PowerPoint 幻灯片中的形状。

import aspose.slides as slides
import aspose.pydrawing as drawing

# 创建演示文稿
with slides.Presentation() as presentation:
    # 访问选定幻灯片的形状集合
    shapes = presentation.slides[0].shapes

    # 添加椭圆
    ellipse = shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 0, 100, 100, 100)

    # 添加自动形状矩形
    rectangle = shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 300, 100, 100)

    # 添加连接器以连接形状
    connector = shapes.add_connector(slides.ShapeType.BENT_CONNECTOR2, 0, 0, 10, 10)

    # 使用连接器连接形状
    connector.start_shape_connected_to = ellipse
    connector.end_shape_connected_to = rectangle

    # 调用 reroute 设置形状之间的自动最短路径
    connector.reroute()

    # 保存演示文稿
    presentation.save("add-connector.pptx", slides.export.SaveFormat.PPTX)

以下是使用连接器连接形状后的演示文稿屏幕截图。

在 Python 中使用连接器连接 PowerPoint 形状

在 Python 中克隆 PowerPoint 形状

有时,您选择克隆形状而不是创建新形状。为此,Aspose.Slides 支持形状克隆。以下是使用 Python 在 PowerPoint 中克隆形状的步骤。

  1. 首先,使用 Presentation 类加载演示文件。
  2. 从 Presentation.slides 集合中获取幻灯片的引用。
  3. 从 ISlide.shapes 集合访问源和目标幻灯片形状。
  4. 使用 addclone() 方法将源幻灯片形状集合中的形状克隆到目标幻灯片。
  5. 最后,保存更新的演示文件。

以下代码示例演示如何在 Python 中克隆 PowerPoint 幻灯片中的形状。

import aspose.slides as slides

# 加载演示文稿
with slides.Presentation("add-ellipse.pptx") as presentation:
    # 访问源幻灯片的形状
    sourceShapes = presentation.slides[0].shapes

    # 添加新的空白幻灯片
    blankLayout = presentation.masters[0].layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
    destSlide = presentation.slides.add_empty_slide(blankLayout)

    # 访问目标幻灯片的形状
    destShapes = destSlide.shapes

    # 克隆形状
    destShapes.add_clone(sourceShapes[0], 50, 150 + sourceShapes[0].height)
    destShapes.add_clone(sourceShapes[0])                 
    destShapes.insert_clone(0, sourceShapes[0], 50, 150)

    # 保存存档
    presentation.save("clone-shapes.pptx", slides.export.SaveFormat.PPTX)

在 Python 中从 PowerPoint 幻灯片中删除形状

您还可以按照以下步骤从 PowerPoint 演示文稿中删除形状。

  1. 创建 Presentation 类的实例以加载 PPT/PPTX 文件。
  2. 从 Presentation.slides 集合中访问所需的幻灯片。
  3. 使用 IShape.alternativetext 属性过滤具有特定文本的所需形状。
  4. 使用 ISlide.shapes.remove(IShape) 方法删除形状。
  5. 最后,保存更新的演示文件。

以下代码示例演示如何在 Python 中从 PowerPoint 幻灯片中删除形状。

# 加载演示文稿
with slides.Presentation("add-ellipse.pptx") as presentation:
    # 获取第一张幻灯片
    sld = presentation.slides[0]

    alttext = "User Defined"

    # 循环遍历形状
   for i in range(len(sld.shapes)):
        # 通过替代文本查找形状
        ashp = sld.shapes[0]
        if ashp.alternative_text == alttext:
            sld.shapes.remove(ashp)

    # 保存存档
    presentation.save("remove-shapes.pptx", slides.export.SaveFormat.PPTX)

获得免费许可证

您可以获得免费的临时许可证 使用 Aspose.Slides for Python,而不受评估限制。

结论

MS PowerPoint 支持一系列形状来创建不同类型的图表,例如流程图。在本文中,我们介绍了如何创建椭圆、矩形等 PowerPoint 形状,并使用 Python 中的连接器连接它们。此外,您还学习了如何以编程方式克隆和删除 PowerPoint 幻灯片中的形状。您可以使用 文档 探索更多关于 Aspose.Slides for Python 的信息。此外,您可以随时通过我们的 论坛 告诉我们您的疑问。

也可以看看