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-fossVerifique 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 ShapeTypeTodas 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.