Como Carregar Apresentações em Python

Como Carregar Apresentações em Python

Aspose.Slides FOSS for Python lets you open any .pptx arquivo, inspecione seu conteúdo e ou salve‑o de volta como PPTX ou extraia dados dele. Este guia cobre abrir um arquivo, iterar slides, ler texto de shapes e fazer round‑tripping ao salvar.

Guia passo a passo

Etapa 1: Instale o pacote

pip install aspose-slides-foss

Etapa 2: Abrir uma Apresentação Existente

Passe o caminho do arquivo para slides.Presentation(). Use o gerenciador de contexto para garantir a limpeza.

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

with slides.Presentation("input.pptx") as prs:
    print(f"Slide count: {len(prs.slides)}")
    prs.save("output.pptx", SaveFormat.PPTX)

Partes XML desconhecidas no arquivo fonte são preservadas literalmente: a biblioteca nunca remove conteúdo que ainda não entende.


Etapa 3: Inspecionar Slides

Itere sobre todos os slides e imprima seu índice:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for i, slide in enumerate(prs.slides):
        shape_count = len(slide.shapes)
        print(f"Slide {i}: {shape_count} shapes")

Etapa 4: Ler Texto das Formas

Itere sobre as shapes e leia o texto das shapes que possuem um TextFrame:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for slide in prs.slides:
        for shape in slide.shapes:
            if hasattr(shape, "text_frame") and shape.text_frame is not None:
                text = shape.text_frame.text
                if text.strip():
                    print(f"  Shape text: {text!r}")

Etapa 5: Ler Propriedades do Documento

Acesse as propriedades principais do documento a partir de prs.document_properties:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    props = prs.document_properties
    print(f"Title:   {props.title}")
    print(f"Author:  {props.author}")
    print(f"Subject: {props.subject}")

Etapa 6: Salvamento Round‑Trip

Depois de inspecionar ou modificar a apresentação, salve-a de volta em PPTX:

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

Salvar em um caminho diferente cria um novo arquivo. Salvar no mesmo caminho sobrescreve o original.


Problemas comuns e correções

FileNotFoundError

Verifique se o caminho para o .pptx arquivo está correto em relação ao diretório de trabalho. Use pathlib.Path para construção robusta de caminhos:

from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
    ...

Exception: File format is not supported

A biblioteca suporta .pptx (Office Open XML) apenas. Legado .ppt (binary PowerPoint 97–2003) arquivos não são suportados.

Formas não possuem o atributo text_frame

Algumas formas (Connectors, PictureFrames, GroupShapes) não têm um text_frame. Proteja com hasattr(shape, "text_frame") and shape.text_frame is not None antes de acessar o texto.


Perguntas Frequentes

O carregamento preserva todo o conteúdo original?

Sim. Partes XML desconhecidas são preservadas literalmente ao salvar em ida e volta. A biblioteca não removerá nenhum conteúdo XML que ainda não entende.

Posso carregar um PPTX protegido por senha?

Apresentações protegidas por senha (criptografadas) não são suportadas nesta edição.

Posso extrair imagens incorporadas?

Acesse a coleção de imagens: prs.images retorna o ImageCollection. Cada imagem tem um content_type e um bytes propriedade para ler os dados brutos da imagem.

O carregamento a partir de um fluxo em memória é suportado?

Carregando diretamente de io.BytesIO não está exposto na API atual. Escreva os bytes em um arquivo temporário primeiro:

import tempfile, os
import aspose.slides_foss as slides

with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as tmp:
    tmp.write(pptx_bytes)
    tmp_path = tmp.name

try:
    with slides.Presentation(tmp_path) as prs:
        print(f"Slides: {len(prs.slides)}")
finally:
    os.unlink(tmp_path)

Veja também

 Português