Jak načíst prezentace v Pythonu

Jak načíst prezentace v Pythonu

Aspose.Slides FOSS for Python vám umožní otevřít libovolný soubor .pptx, prozkoumat jeho obsah a buď jej uložit zpět do PPTX, nebo z něj extrahovat data. Tento průvodce pokrývá otevření souboru, iteraci snímků, čtení textu tvaru 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é části XML ve zdrojovém souboru jsou zachovány doslovně: knihovna nikdy neodstraňuje obsah, který ještě nerozumí.


Krok 3: Prohlédněte snímky

Iterujte přes 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: Načíst text tvaru

Iterujte přes tvary a nač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: Načíst vlastnosti dokumentu

Přístup 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: Uložení round‑trip

Po prohlédnutí 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 původní.


Běžné problémy a opravy

FileNotFoundError

Zkontrolujte, že cesta k souboru .pptx 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 pouze .pptx (Office Open XML). Zastaralé soubory .ppt (binární PowerPoint 97–2003) nejsou podporovány.

Tvary nemají atribut text_frame

Některé tvary (Connectors, PictureFrames, GroupShapes) nemají text_frame. Chraňte 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 round‑trip uložení zachovány doslovně. Knihovna neodstraní žádný XML obsah, který zatím nerozumí.

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řístup ke kolekci obrázků: prs.images vrací ImageCollection. Každý obrázek má vlastnost content_type a bytes pro čtení surových dat obrázku.

Je načítání z proudu v paměti podporováno?

Načítání přímo z io.BytesIO není v aktuálním API k dispozici. 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