Sådan indlæses præsentationer i Python

Sådan indlæses præsentationer i Python

Aspose.Slides FOSS for Python giver dig mulighed for at åbne enhver .pptx-fil, inspicere dens indhold og enten gemme den tilbage som PPTX eller udtrække data fra den. Denne vejledning dækker åbning af en fil, gennemløb af 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

Videregiv filstien til slides.Presentation(). Brug kontekstmanageren 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, som det endnu ikke forstår.


Trin 3: Inspicér dias

Iterer over alle slides 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 kerndokumentegenskaber 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: Rundtur-gem

Efter at have inspiceret eller ændret præsentationen, gem den tilbage som PPTX:

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

Gemmer du til en anden sti, oprettes en ny fil. Gemmer du til den samme sti, overskrives den oprindelige.


Almindelige problemer og løsninger

FileNotFoundError

Kontroller, at stien til .pptx‑filen er korrekt i forhold til arbejdsbiblioteket. Brug pathlib.Path til robust stiopbygning:

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 kun .pptx (Office Open XML). Ældre .ppt (binære PowerPoint 97–2003) filer understøttes ikke.

Shapes 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 oprindelige 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 ImageCollection. Hvert billede har en content_type og en bytes egenskab til at læse de rå billeddata.

Er indlæsning fra en in-memory stream understøttet?

Indlæsning 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