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

Passo 1: Instalar o pacote

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

pip install aspose-slides-foss

Verificar a instalação:

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

A Comissão lxml Não são necessários outros pacotes de sistema.


Passo 2: Importar os módulos necessários

Importar o pacote e a 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-forma vivem em: aspose.slides_foss.ShapeType.Todos os tipos de formatação (FillType, NullableBool) também são considerados como uma das principais causas de aspose.slides_foss.


Passo 3: Faça uma apresentação

Utilização: slides.Presentation() 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 aberta e em uso. Presentation no interior de um with Não armazenar uma referência fora do bloco. with declaração; os recursos não serão liberados corretamente.


Passo 4: Acesse um slide

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

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)

Passo 5: Adicionar uma forma

Utilização: 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 diapositivo padrão é de 960 × 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)

Passo 6: Salve a apresentação

Chama-me . prs.save(path, SaveFormat.PPTX) antes do with PPTX é o único formato de saída suportado.

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

O arquivo é escrito atomicamente; se um erro ocorrer antes desta chamada, nenhum arquivos de saída são criados.


Exemplo de trabalho completo

O seguinte script cria uma apresentação de dois slides com um título no primeiro 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

Estás a instanciar . Presentation sem um with Sempre use:

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

AttributeError: __enter__

Se vir este erro, verifique se importou o código de segurança do sistema. aspose.slides_foss (não aspose.slides) O nome do pacote no PyPI é: aspose-slides-foss e a importação do tempo de execução é: aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

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


Perguntas Frequentes

Qual é o tamanho padrão da diapositiva?

Um novo Presentation() cria slides no tamanho padrão de tela larga 16: 9 (960 × 540 pontos). A alteração do tamanhos das slide ainda não é suportada nesta edição.

Posso adicionar mais de um slide?

Sim, liga. prs.slides.add_empty_slide(prs.layout_slides[0]) para anexar um slide em branco e aceder a ele por índice:

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

Posso abrir um arquivo existente e adicionar slides?

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

Em que formatos posso salvar?

Apenas: SaveFormat.PPTX A exportação para PDF, HTML, SVG ou imagens não está disponível nesta edição.


Ver também:

 Português