Como criar apresentações em Python

Como criar apresentações em Python

Aspose.Slides FOSS for Python permite que você crie apresentações PowerPoint inteiramente em Python sem dependência do Microsoft Office. Este guia mostra como criar uma nova apresentação, adicionar slides e formas, formatar texto e salvar o resultado.

Guia passo a passo

Etapa 1: Instalar o Pacote

Instale o Aspose.Slides FOSS a partir do PyPI. Python 3.10 ou posterior é necessário.

pip install aspose-slides-foss

Verifique a instalação:

import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")

A dependência lxml é instalada automaticamente. Nenhum outro pacote do sistema é necessário.


Etapa 2: Importar os Módulos Necessários

Importe o pacote e o enum SaveFormat necessário para salvar.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
from aspose.slides_foss import ShapeType

Todas as constantes de tipo de forma estão em aspose.slides_foss.ShapeType. Todos os tipos de formatação (FillType, NullableBool) também estão em aspose.slides_foss.


Etapa 3: Criar uma Apresentação

Use slides.Presentation() como um gerenciador de contexto. Uma nova apresentação começa com um slide em branco.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    print(f"Slides in new presentation: {len(prs.slides)}")
    # work with prs inside this block
    prs.save("output.pptx", SaveFormat.PPTX)

Importante: Sempre abra e use Presentation dentro de um bloco with. Não armazene uma referência fora da declaração with; os recursos não serão liberados corretamente.


Etapa 4: Acessar um Slide

O primeiro slide está no índice 0. Uma apresentação em branco tem exatamente um slide.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]  # zero-based index
    print(f"Slide at index 0: {slide}")
    prs.save("output.pptx", SaveFormat.PPTX)

Etapa 5: Adicionar uma Forma

Use slide.shapes.add_auto_shape() para adicionar um AutoShape. Os parâmetros são (shape_type, x, y, width, height) todos em pontos (1 ponto = 1/72 polegada; o slide padrão tem 720 × 540 pt).

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Rectangle at (50, 50) with 400 wide and 120 tall
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 400, 120)

    # Attach a text frame
    shape.add_text_frame("Hello from Aspose.Slides FOSS!")

    prs.save("with-shape.pptx", SaveFormat.PPTX)

Etapa 6: Salvar a Apresentação

Chame prs.save(path, SaveFormat.PPTX) antes que o bloco with termine. PPTX é o único formato de saída suportado.

prs.save("result.pptx", SaveFormat.PPTX)

O arquivo é escrito de forma atômica; se ocorrer um erro antes desta chamada, nenhum arquivo de saída será criado.


Exemplo Funcional Completo

O script a seguir cria uma apresentação de dois slides com uma forma de título no primeiro slide e uma tabela no segundo.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    # --- Slide 1: title shape ---
    slide1 = prs.slides[0]
    title = slide1.shapes.add_auto_shape(ShapeType.RECTANGLE, 40, 40, 640, 80)
    tf = title.add_text_frame("Q1 Results: Executive Summary")
    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    # --- Slide 2: table ---
    prs.slides.add_empty_slide(prs.layout_slides[0])
    slide2 = prs.slides[1]
    table = slide2.shapes.add_table(40, 40, [200.0, 120.0, 120.0], [40.0, 40.0, 40.0])
    headers = ["Region", "Revenue", "Growth"]
    data = [
        ["North", "$1.2M", "+8%"],
        ["South", "$0.9M", "+4%"],
    ]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("q1-results.pptx", SaveFormat.PPTX)

print("Saved q1-results.pptx")

Problemas Comuns e Soluções

ResourceWarning: unclosed Presentation

Você está instanciando Presentation sem um bloco with. Sempre use:

with slides.Presentation() as prs:
    ...

AttributeError: __enter__

Se você vir este erro, verifique se importou aspose.slides_foss (não aspose.slides). O nome do pacote no PyPI é aspose-slides-foss e a importação em tempo de execução é aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX é um membro de enumeração, não uma função. Use‑o como prs.save("file.pptx", SaveFormat.PPTX).


Perguntas Frequentes

Qual é o tamanho padrão do slide?

Um novo Presentation() cria slides no tamanho padrão de 10 × 7,5 polegadas (720 × 540 pontos). Alterar o tamanho do slide ainda não é suportado nesta edição.

Posso adicionar mais de um slide?

Sim. Chame prs.slides.add_empty_slide(prs.layout_slides[0]) para acrescentar um slide em branco e acessá‑lo por índice:

prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]

Posso abrir um arquivo existente e adicionar slides?

Sim:

with slides.Presentation("existing.pptx") as prs:
    prs.slides.add_empty_slide(prs.layout_slides[0])
    prs.save("existing.pptx", SaveFormat.PPTX)

Quais formatos posso salvar?

Apenas SaveFormat.PPTX é suportado. Exportar para PDF, HTML, SVG ou imagens não está disponível nesta edição.


Veja Também

 Português