Como criar apresentações em Python

Como criar apresentações em Python

Aspose.Slides FOSS for Python lets you create PowerPoint presentations entirely in Python with no dependency on Microsoft Office. This guide shows how to create a new presentation, add slides and shapes, format text, and save the result.

Guia passo a passo

Etapa 1: Instale o pacote

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

pip install aspose-slides-foss

Verifique a instalação:

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

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


Etapa 2: Importe os Módulos Necessários

Importe o pacote e o SaveFormat enum 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: Crie 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 with bloco. Não armazene uma referência fora do with enunciado; os recursos não serão liberados corretamente.


Etapa 4: Acesse 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: Adicione 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 é 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: Salve a Apresentação

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

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

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


Exemplo Completo Funcional

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 correções

ResourceWarning: unclosed Presentation

Você está instanciando Presentation sem um with bloco. 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 enum, 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)

Em 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