Como Carregar Apresentações em Python

Como Carregar Apresentações em Python

Aspose.Slides FOSS for Python permite abrir qualquer arquivo .pptx, inspecionar seu conteúdo e salvar de volta em PPTX ou extrair dados dele. Este guia cobre a abertura de um arquivo, a iteração de slides, a leitura de texto de formas e o processo de salvar e reabrir.

Guia passo a passo

Etapa 1: Instalar 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 de origem 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 da Forma

Iterar sobre formas e ler texto das formas que têm 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 de Ida e Volta

Depois de inspecionar ou modificar a apresentação, salve-a novamente 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 Soluções

FileNotFoundError

Verifique se o caminho para o arquivo .pptx 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 apenas .pptx (Office Open XML). Arquivos legados .ppt (PowerPoint binário 97–2003) não são suportados.

Shapes não têm atributo text_frame

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


Perguntas Frequentes

Carregar preserva todo o conteúdo original?

Sim. As 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 possui uma propriedade content_type e uma propriedade bytes para ler os dados brutos da imagem.

É o carregamento a partir de um stream em memória suportado?

Carregar 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