Sådan indlæses præsentationer i Python

Sådan indlæses præsentationer i Python

Aspose.Slides FOSS for Python lets you open any .pptx fil, inspicér dens indhold, og gem den enten tilbage som PPTX eller udtræk data fra den. Denne vejledning dækker åbning af en fil, iteration over slides, læsning af formtekst og round‑tripping af gemningen.

Trin-for-trin guide

Trin 1: Installer pakken

pip install aspose-slides-foss

Trin 2: Åbn en eksisterende præsentation

Send filstien til slides.Presentation(). Brug kontekst‑manageren for at sikre oprydning.

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)

Ukendte XML‑dele i kildefilen bevares ordret: biblioteket fjerner aldrig indhold, det endnu ikke forstår.


Trin 3: Inspicer slides

Gennemløb alle dias og udskriv deres indeks:

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

Trin 4: Læs formtekst

Iterer over former og læs tekst fra former, der har en 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}")

Trin 5: Læs dokumentegenskaber

Få adgang til kerne‑dokumentegenskaber fra 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}")

Trin 6: Round‑Trip‑gemning

Efter at have inspiceret eller modificeret præsentationen, gem den tilbage til PPTX:

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

Gemning til en anden sti opretter en ny fil. Gemning til den samme sti overskriver den oprindelige.


Almindelige problemer og løsninger

FileNotFoundError

Kontroller at stien til den .pptx fil er korrekt i forhold til arbejdsmappen. Brug pathlib.Path til robust sti‑konstruktion:

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

Exception: File format is not supported

Biblioteket understøtter .pptx (Office Open XML) kun. Ældre .ppt (binære PowerPoint 97–2003) filer understøttes ikke.

Former har ingen text_frame‑attribut

Nogle former (Connectors, PictureFrames, GroupShapes) har ikke en text_frame. Beskyt med hasattr(shape, "text_frame") and shape.text_frame is not None før du får adgang til tekst.


Ofte stillede spørgsmål

Bevarer indlæsning alt det originale indhold?

Ja. Ukendte XML‑dele bevares ordret ved round‑trip‑gemning. Biblioteket vil ikke fjerne noget XML‑indhold, som det endnu ikke forstår.

Kan jeg indlæse en adgangskodebeskyttet PPTX?

Adgangskodebeskyttede (krypterede) præsentationer understøttes ikke i denne udgave.

Kan jeg udtrække indlejrede billeder?

Få adgang til billedsamlingen: prs.images returnerer den ImageCollection. Hvert billede har en content_type og en bytes egenskab til at læse de rå billeddata.

Understøttes indlæsning fra en in‑memory‑stream?

Indlæser direkte fra io.BytesIO er ikke eksponeret i den aktuelle API. Skriv bytes til en midlertidig fil først:

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)

Se også

 Dansk