Jak načíst prezentace v Python

Jak načíst prezentace v Python

Aspose.Slides FOSS for Python lets you open any .pptx soubor, prohlédněte jeho obsah a buď jej uložte zpět do PPTX, nebo z něj extrahujte data. Tento průvodce popisuje otevření souboru, iteraci snímků, čtení textu tvarů a zpětné uložení.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

pip install aspose-slides-foss

Krok 2: Otevřít existující prezentaci

Předávejte cestu k souboru do slides.Presentation(). Použijte správce kontextu k zajištění úklidu.

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)

Neznámé XML části ve zdrojovém souboru jsou zachovány doslovně: knihovna nikdy neodstraňuje obsah, který ještě nezná.


Krok 3: Prozkoumat snímky

Procházejte všechny snímky a vypište jejich index:

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

Krok 4: Číst text tvaru

Iterujte přes tvary a čtěte text z tvarů, které mají 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}")

Krok 5: Číst vlastnosti dokumentu

Přistupujte k základním vlastnostem dokumentu z 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}")

Krok 6: Zpětné uložení (round‑trip)

Po prozkoumání nebo úpravě prezentace ji uložte zpět do PPTX:

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

Uložení na jinou cestu vytvoří nový soubor. Uložení na stejnou cestu přepíše originál.


Časté problémy a opravy

FileNotFoundError

Zkontrolujte, že cesta k .pptx souboru je správná vzhledem k pracovnímu adresáři. Použijte pathlib.Path pro robustní konstrukci cesty:

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

Exception: File format is not supported

Knihovna podporuje .pptx (Office Open XML) pouze. Starší .ppt (binární PowerPoint 97–2003) soubory nejsou podporovány.

Tvary nemají atribut text_frame

Některé tvary (Connectors, PictureFrames, GroupShapes) nemají text_frame. Ochrana pomocí hasattr(shape, "text_frame") and shape.text_frame is not None před přístupem k textu.


Často kladené otázky

Zachovává načítání veškerý původní obsah?

Ano. Neznámé části XML jsou při uložení s round‑tripem zachovány beze změny. Knihovna neodstraní žádný XML obsah, který zatím nezná.

Mohu načíst PPTX chráněný heslem?

Prezentace chráněné heslem (šifrované) nejsou v této edici podporovány.

Mohu extrahovat vložené obrázky?

Přistupujte ke kolekci obrázků: prs.images vrací the ImageCollection. Každý obrázek má content_type a bytes vlastnost pro čtení surových dat obrázku.

Je načítání z paměťového proudu podporováno?

Načítání přímo z io.BytesIO není v současném API zpřístupněno. Nejprve zapište bajty do dočasného souboru:

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)

Viz také

 Čeština