Trabajar con formas en PowerPoint en Python

Se utilizan varios tipos de diagramas en las presentaciones de PowerPoint para hacer que el contenido sea más elaborado. Estos diagramas se componen de diferentes formas, como elipses, líneas, rectángulos y conectores. En este artículo, aprenderá cómo agregar, clonar y eliminar formas en diapositivas de PowerPoint mediante programación en Python.

Biblioteca de Python para trabajar con formas de PowerPoint

Aspose.Slides for Python via .NET está diseñado para crear y manipular presentaciones de PowerPoint desde las aplicaciones de Python. Usaremos esta biblioteca para trabajar con formas en diapositivas de PowerPoint. Puede instalarlo desde PyPI usando el siguiente comando pip.

> pip install aspose.slides

Tipos de formas en PowerPoint

Puede crear una variedad de formas en presentaciones de PowerPoint usando Aspose.Slides for Python. Las formas más utilizadas incluyen:

Agregar una forma a las diapositivas de PowerPoint en Python

Para agregar cualquier forma, incluida la elipse, la línea, el rectángulo, se utiliza el método addautoshape (ShapeType, Single, Single, Single, Single) al que puede pasar el tipo de forma y otros parámetros necesarios. La enumeración ShapeType se utiliza para especificar el tipo de forma. Los siguientes son los pasos para agregar una forma a una diapositiva de PowerPoint en Python.

  1. Cree una presentación o cargue una existente usando la clase Presentation.
  2. Obtenga la referencia de la diapositiva deseada de la colección Presentation.slides.
  3. Agregue una Elipse (o cualquier otra forma) usando el método addautoshape(ShapeType, Single, Single, Single, Single).
  4. Guarde la presentación usando el método Presentation.save(String, SaveFormat).

El siguiente ejemplo de código muestra cómo agregar una forma a una diapositiva de PowerPoint en Python.

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

# Create a new presentation
with slides.Presentation() as pres:
    # Get the first slide
    sld = pres.slides[0]

    # Add auto shape of ellipse type
    shp = sld.shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 50, 150, 150, 50)

    # Apply some formatting to ellipse shape
    shp.fill_format.fill_type = slides.FillType.SOLID
    shp.fill_format.solid_fill_color.color = drawing.Color.pink

    # Apply some formatting to the line of 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

    # Save the PPTX file to disk
    pres.save("add-ellipse.pptx", slides.export.SaveFormat.PPTX)

La siguiente es la elipse que hemos agregado usando el ejemplo de código anterior.

Agregar una forma a PowerPoint PPT en Python

Conecte formas de PowerPoint con un conector en Python

En los diagramas, las diferentes formas se conectan entre sí mediante una línea llamada conector. Un conector puede ser una línea recta o curva. Veamos cómo agregar un conector entre dos formas de PowerPoint en Python.

  1. Primero, cree una instancia de la clase Presentation para crear o cargar la presentación.
  2. Luego, obtenga la referencia de una diapositiva usando la colección Presentation.slides.
  3. Agregue dos formas tal como las agregó en la sección anterior y obtenga sus referencias.
  4. Cree un conector mediante el método addconnector(ShapeType, Single, Single, Single, Single).
  5. Una las formas usando las propiedades Connector.startshapeconnectedto y Connector.endshapeconnectedto.
  6. Llame al método Connector.reroute() para crear la ruta de conexión automática más corta.
  7. Finalmente, guarde la presentación usando el método Presentation.save(string, SaveFormat).

El siguiente ejemplo de código muestra cómo conectar formas en una diapositiva de PowerPoint en Python.

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

# Create presentation
with slides.Presentation() as presentation:
    # Access shapes collection for selected slide
    shapes = presentation.slides[0].shapes

    # Add ellipse
    ellipse = shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 0, 100, 100, 100)

    # Add auto shape rectangle
    rectangle = shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 300, 100, 100)

    # Add connector to connect shapes
    connector = shapes.add_connector(slides.ShapeType.BENT_CONNECTOR2, 0, 0, 10, 10)

    # Join shapes using connector
    connector.start_shape_connected_to = ellipse
    connector.end_shape_connected_to = rectangle

    # Call reroute to set the automatic shortest path between shapes
    connector.reroute()

    # Save presenation
    presentation.save("add-connector.pptx", slides.export.SaveFormat.PPTX)

La siguiente es la captura de pantalla de la presentación después de conectar formas con un conector.

Conecte formas de PowerPoint con un conector en Python

Clonar formas de PowerPoint en Python

A veces, opta por clonar formas en lugar de crear una nueva. Para lograrlo, Aspose.Slides admite la clonación de formas. Los siguientes son los pasos para clonar una forma en PowerPoint usando Python.

  1. Primero, use la clase Presentation para cargar el archivo de presentación.
  2. Obtenga la referencia de una diapositiva de la colección Presentation.slides.
  3. Acceda a las formas de las diapositivas de origen y destino desde la colección ISlide.shapes.
  4. Clone formas de la colección de formas de la diapositiva de origen a la diapositiva de destino usando el método addclone().
  5. Finalmente, guarde el archivo de presentación actualizado.

El siguiente ejemplo de código muestra cómo clonar formas dentro de las diapositivas de PowerPoint en Python.

import aspose.slides as slides

# Load presentation
with slides.Presentation("add-ellipse.pptx") as presentation:
    # Access shapes of the source slide
    sourceShapes = presentation.slides[0].shapes

    # Add a new blank slide
    blankLayout = presentation.masters[0].layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
    destSlide = presentation.slides.add_empty_slide(blankLayout)

    # Access shapes of destination slide
    destShapes = destSlide.shapes

    # Clone shapes
    destShapes.add_clone(sourceShapes[0], 50, 150 + sourceShapes[0].height)
    destShapes.add_clone(sourceShapes[0])                 
    destShapes.insert_clone(0, sourceShapes[0], 50, 150)

    # Save file
    presentation.save("clone-shapes.pptx", slides.export.SaveFormat.PPTX)

Eliminar formas de diapositivas de PowerPoint en Python

También puede eliminar formas de las presentaciones de PowerPoint siguiendo los pasos a continuación.

  1. Cree una instancia de la clase Presentation para cargar el archivo PPT/PPTX.
  2. Acceda a la diapositiva deseada de la colección Presentation.slides.
  3. Filtre la forma deseada con un texto específico usando la propiedad IShape.alternativetext.
  4. Elimina la forma usando el método ISlide.shapes.remove(IShape).
  5. Finalmente, guarde el archivo de presentación actualizado.

El siguiente ejemplo de código muestra cómo eliminar formas de una diapositiva de PowerPoint en Python.

# Load presentation
with slides.Presentation("add-ellipse.pptx") as presentation:
    # Get the first slide
    sld = presentation.slides[0]

    alttext = "User Defined"

    # Loop through shapes
    for i in range(len(sld.shapes)):
        # Find shape by alternative text
        ashp = sld.shapes[0]
        if ashp.alternative_text == alttext:
            sld.shapes.remove(ashp)

    # Save file
    presentation.save("remove-shapes.pptx", slides.export.SaveFormat.PPTX)

Obtenga una licencia gratis

Puede obtener una licencia temporal gratuita para usar Aspose.Slides for Python sin limitaciones de evaluación.

Conclusión

MS PowerPoint admite una variedad de formas para crear diferentes tipos de diagramas, como diagramas de flujo. En este artículo, hemos cubierto cómo crear formas de PowerPoint como elipses, rectángulos y conectarlos usando conectores en Python. Además, ha aprendido cómo clonar y eliminar formas en diapositivas de PowerPoint mediante programación. Puede explorar más sobre Aspose.Slides for Python utilizando la documentación. Además, no dude en hacernos saber sus consultas a través de nuestro foro.

Ver también