Hoe Presentaties Laden in Python

Hoe Presentaties Laden in Python

Aspose.Slides FOSS for Python stelt je in staat om elk .pptx‑bestand te openen, de inhoud te inspecteren en het vervolgens op te slaan als PPTX of gegevens eruit te extraheren. Deze gids behandelt het openen van een bestand, het itereren door dia’s, het lezen van vormtekst en het round‑tripping van de opslaan.

Stapsgewijze handleiding

Stap 1: Installeer het pakket

pip install aspose-slides-foss

Stap 2: Open een bestaande presentatie

Geef het bestandspad door aan slides.Presentation(). Gebruik de contextmanager om opruimen te garanderen.

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)

Onbekende XML-onderdelen in het bronbestand worden letterlijk bewaard: de bibliotheek verwijdert nooit inhoud die ze nog niet begrijpt.


Stap 3: Slides inspecteren

Itereer over alle dia’s en print hun 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")

Stap 4: Lees vormtekst

Itereer over vormen en lees tekst van vormen die een TextFrame hebben:

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

Stap 5: Documenteigenschappen lezen

Toegang tot kern‑documenteigenschappen vanuit 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}")

Stap 6: Round-Trip Opslaan

Nadat u de presentatie hebt geïnspecteerd of aangepast, sla deze op als PPTX:

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

Opslaan naar een ander pad maakt een nieuw bestand aan. Opslaan naar hetzelfde pad overschrijft het origineel.


Veelvoorkomende problemen en oplossingen

FileNotFoundError

Controleer of het pad naar het .pptx‑bestand correct is ten opzichte van de werkdirectory. Gebruik pathlib.Path voor robuuste padconstructie:

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

Exception: File format is not supported

De bibliotheek ondersteunt alleen .pptx (Office Open XML). Legacy .ppt (binaire PowerPoint 97–2003) bestanden worden niet ondersteund.

Shapes hebben geen text_frame attribuut

Sommige vormen (Connectors, PictureFrames, GroupShapes) hebben geen text_frame. Bescherm met hasattr(shape, "text_frame") and shape.text_frame is not None voordat u de tekst benadert.


Veelgestelde vragen

Behoudt het laden alle oorspronkelijke inhoud?

Ja. Onbekende XML-onderdelen worden letterlijk bewaard bij round‑trip opslaan. De bibliotheek zal geen XML-inhoud verwijderen die ze nog niet begrijpt.

Kan ik een met wachtwoord beveiligde PPTX laden?

Wachtwoordbeveiligde (versleutelde) presentaties worden niet ondersteund in deze editie.

Kan ik ingesloten afbeeldingen extraheren?

Toegang tot de afbeeldingenverzameling: prs.images retourneert de ImageCollection. Elke afbeelding heeft een content_type en een bytes eigenschap om de ruwe afbeeldingsgegevens te lezen.

Wordt laden vanuit een in-memory stream ondersteund?

Direct laden vanuit io.BytesIO wordt niet blootgesteld in de huidige API. Schrijf de bytes eerst naar een tijdelijk bestand:

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)

Zie ook

 Nederlands