Trabalhar com formas no PowerPoint em Python

Vários tipos de diagramas são usados nas apresentações do PowerPoint para tornar o conteúdo mais elaborado. Esses diagramas são compostos de diferentes formas, como elipses, linhas, retângulos e conectores. Neste artigo, você aprenderá como adicionar, clonar e remover formas em slides do PowerPoint programaticamente em Python.

Biblioteca Python para trabalhar com formas do PowerPoint

Aspose.Slides for Python via .NET foi projetado para criar e manipular apresentações do PowerPoint de dentro dos aplicativos Python. Usaremos esta biblioteca para trabalhar com formas em slides do PowerPoint. Você pode instalá-lo de PyPI usando o seguinte comando pip.

> pip install aspose.slides

Tipos de formas no PowerPoint

Você pode criar uma variedade de formas em apresentações do PowerPoint usando Aspose.Slides para Python. As formas mais usadas incluem:

Adicionar uma forma aos slides do PowerPoint em Python

Para adicionar qualquer forma, incluindo elipse, linha, retângulo, o método addautoshape(ShapeType, Single, Single, Single, Single) é usado para o qual você pode passar o tipo da forma e outros parâmetros necessários. A enumeração ShapeType é usada para especificar o tipo da forma. A seguir estão as etapas para adicionar uma forma a um slide do PowerPoint em Python.

  1. Crie uma apresentação ou carregue uma existente usando a classe Presentation.
  2. Obtenha a referência do slide desejado da coleção Presentation.slides.
  3. Adicione uma elipse (ou qualquer outra forma) usando o método addautoshape(ShapeType, Single, Single, Single, Single).
  4. Salve a apresentação usando o método Presentation.save(String, SaveFormat).

O exemplo de código a seguir mostra como adicionar uma forma a um slide do PowerPoint em Python.

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

# Criar uma nova apresentação
with slides.Presentation() as pres:
    # Obter o primeiro slide
    sld = pres.slides[0]

    # Adicionar forma automática do tipo elipse
    shp = sld.shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 50, 150, 150, 50)

    # Aplicar alguma formatação à forma de elipse
    shp.fill_format.fill_type = slides.FillType.SOLID
    shp.fill_format.solid_fill_color.color = drawing.Color.pink

    # Aplique alguma formatação à linha da Elipse
    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

    # Salve o arquivo PPTX no disco
    pres.save("add-ellipse.pptx", slides.export.SaveFormat.PPTX)

Veja a seguir a elipse que adicionamos usando o exemplo de código acima.

Adicionar uma forma ao PowerPoint PPT em Python

Conectar formas do PowerPoint com um conector em Python

Nos diagramas, diferentes formas são conectadas umas às outras usando uma linha chamada conector. Um conector pode ser uma linha reta ou curva. Vamos ver como adicionar um conector entre duas formas do PowerPoint em Python.

  1. Primeiro, crie uma instância da classe Presentation para criar ou carregar a apresentação.
  2. Em seguida, obtenha a referência de um slide usando a coleção Presentation.slides.
  3. Adicione duas formas exatamente como você adicionou na seção anterior e obtenha suas referências.
  4. Crie um conector usando o método addconnector(ShapeType, Single, Single, Single, Single).
  5. Junte as formas usando as propriedades Connector.startshapeconnectedto e Connector.endshapeconnectedto.
  6. Chame o método Connector.reroute() para criar o caminho de conexão automática mais curto.
  7. Finalmente, salve a apresentação usando o método Presentation.save(string, SaveFormat).

O exemplo de código a seguir mostra como conectar formas em um slide do PowerPoint em Python.

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

# Criar apresentação
with slides.Presentation() as presentation:
    # Acesse a coleção de formas para o slide selecionado
    shapes = presentation.slides[0].shapes

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

    # Adicionar retângulo de forma automática
    rectangle = shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 300, 100, 100)

    # Adicionar conector para conectar formas
    connector = shapes.add_connector(slides.ShapeType.BENT_CONNECTOR2, 0, 0, 10, 10)

    # Unir formas usando o conector
    connector.start_shape_connected_to = ellipse
    connector.end_shape_connected_to = rectangle

    # Chame o redirecionamento para definir o caminho mais curto automático entre as formas
    connector.reroute()

    # Salvar apresentação
    presentation.save("add-connector.pptx", slides.export.SaveFormat.PPTX)

A seguir está a captura de tela da apresentação após conectar as formas com um conector.

Conectar formas do PowerPoint com um conector em Python

Clonar formas do PowerPoint em Python

Às vezes, você opta por clonar formas em vez de criar uma nova. Para conseguir isso, o Aspose.Slides suporta clonagem de formas. A seguir estão as etapas para clonar uma forma no PowerPoint usando Python.

  1. Primeiro, use a classe Presentation para carregar o arquivo de apresentação.
  2. Obtenha a referência de um slide da coleção Presentation.slides.
  3. Acesse as formas de slide de origem e destino da coleção ISlide.shapes.
  4. Clone formas da coleção de formas de slide de origem para o slide de destino usando o método addclone().
  5. Por fim, salve o arquivo de apresentação atualizado.

O exemplo de código a seguir mostra como clonar formas em slides do PowerPoint em Python.

import aspose.slides as slides

# Carregar apresentação
with slides.Presentation("add-ellipse.pptx") as presentation:
    # Acessar formas do slide de origem
    sourceShapes = presentation.slides[0].shapes

    # Adicionar um novo slide em branco
    blankLayout = presentation.masters[0].layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
    destSlide = presentation.slides.add_empty_slide(blankLayout)

    # Acesse as formas do slide de destino
    destShapes = destSlide.shapes

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

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

Remover formas de slides do PowerPoint em Python

Você também pode remover formas de apresentações do PowerPoint seguindo as etapas abaixo.

  1. Crie uma instância da classe Presentation para carregar o arquivo PPT/PPTX.
  2. Acesse o slide desejado da coleção Presentation.slides.
  3. Filtre a forma desejada com um texto específico usando a propriedade IShape.alternativetext.
  4. Remova a forma usando o método ISlide.shapes.remove(IShape).
  5. Por fim, salve o arquivo de apresentação atualizado.

O exemplo de código a seguir mostra como remover formas de um slide do PowerPoint em Python.

# Carregar apresentação
with slides.Presentation("add-ellipse.pptx") as presentation:
    # Obter o primeiro slide
    sld = presentation.slides[0]

    alttext = "User Defined"

    # Percorrer as formas
    for i in range(len(sld.shapes)):
        # Encontrar forma por texto alternativo
        ashp = sld.shapes[0]
        if ashp.alternative_text == alttext:
            sld.shapes.remove(ashp)

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

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para usar o Aspose.Slides for Python sem limitações de avaliação.

Conclusão

O MS PowerPoint oferece suporte a uma variedade de formas para criar diferentes tipos de diagramas, como fluxogramas. Neste artigo, abordamos como criar formas do PowerPoint, como elipses, retângulos, e conectá-los usando conectores em Python. Além disso, você aprendeu como clonar e remover formas em slides do PowerPoint programaticamente. Você pode explorar mais sobre o Aspose.Slides for Python usando a documentação. Além disso, sinta-se à vontade para nos informar sobre suas dúvidas por meio do nosso fórum.

Veja também