Como carregar apresentações em Python

Como carregar apresentações em Python

Aspose.Slides FOSS for Python lets you open any .pptx Este guia abriria um arquivo, iteraria slides, leria texto de forma e redirecionaria a salvação.

Guia passo a passo

Passo 1: Instalar o pacote

Instale a biblioteca no seu ambiente Python executando o seguinte comando pip antes de executar qualquer exemplo:

pip install aspose-slides-foss

Passo 2: Abra 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.


Passo 3: Inspecionar as slides

Iterar sobre todos os slides em prs.slides e imprimir o índice de cada diapositiva e a contagem das formas:

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")

Passo 4: Ler texto de forma

Iterar sobre formas e ler texto de 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}")

Passo 5: Leia as propriedades do documento

Leia o título da apresentação, autor e assunto de: prs.document_properties Utilizando o acesso de atributos padrão:

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}")

Passo 6: Salvar de ida e volta

Após inspecionar ou modificar a apresentação, salve-a de volta para o PPTX:

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

Salvar para um caminho diferente cria um novo arquivo. Salvando para o mesmo caminho sobrepõe-se ao original.


Problemas comuns e soluções

FileNotFoundError

Verifique se o caminho para a .pptx O arquivo é correto em relação ao diretório de trabalho. Use pathlib.Path para construção de trilhos robustos:

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 o formato PPTX (Office Open XML). O binário legado. .ppt O formato (PowerPoint 972003) não pode ser carregado.

Formas não têm atributo text_frame

Algumas formas (Conectores, PictureFrames, GroupShapes) não têm um sistema de imagem. text_frame.- Guarda com . hasattr(shape, "text_frame") and shape.text_frame is not None antes de aceder ao texto.


Perguntas Frequentes

O carregamento preserva todo o conteúdo original?

As partes XML desconhecidas no arquivo de origem são preservadas na salvação de ida e volta. O conteúdo que não é compreendido pela biblioteca é mantido inalterado.

Posso carregar um PPTX protegido por senha?

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

Posso extrair imagens embutidas?

Acesse a coleção de imagens: prs.images Retorna o valor de: ImageCollection.Cada imagem tem um content_type e a bytes Propriedade para ler os dados da imagem bruta.

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

Carregamento direto 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)

Ver também:

 Português