Cum să încărcați prezentări în Python

Cum să încărcați prezentări în Python

Aspose.Slides FOSS for Python lets you open any .pptx fișier, inspectați conținutul său și fie să îl salvați înapoi în PPTX, fie să extrageți date din el. Acest ghid acoperă deschiderea unui fișier, iterarea diapozitivelor, citirea textului din forme și salvarea în mod round‑trip.

Ghid pas cu pas

Pasul 1: Instalați pachetul

pip install aspose-slides-foss

Pasul 2: Deschideți o prezentare existentă

Transmiteți calea fișierului către slides.Presentation(). Utilizați managerul de context pentru a asigura curățarea.

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)

Părțile XML necunoscute din fișierul sursă sunt păstrate literalmente: biblioteca nu elimină niciodată conținutul pe care nu îl înțelege încă.


Pasul 3: Inspectați diapozitivele

Iterați prin toate diapozitivele și afișați indicele lor:

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

Pasul 4: Citiți textul formei

Iterați peste forme și citiți textul din formele care au un 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}")

Pasul 5: Citiți proprietățile documentului

Accesați proprietățile de bază ale documentului din 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}")

Pasul 6: Salvare în buclă

După inspectarea sau modificarea prezentării, salvați-o înapoi în PPTX:

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

Salvarea într-o cale diferită creează un fișier nou. Salvarea în aceeași cale suprascrie fișierul original.


Probleme comune și soluții

FileNotFoundError

Verificați că calea către .pptx fișier este corectă în raport cu directorul de lucru. Utilizați pathlib.Path pentru o construcție robustă a căii:

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

Exception: File format is not supported

Biblioteca suportă .pptx (Office Open XML) numai. Legacy .ppt (binary PowerPoint 97–2003) fișiere nu sunt suportate.

Formele nu au atributul text_frame

Unele forme (Connectors, PictureFrames, GroupShapes) nu au un text_frame. Protejaţi cu hasattr(shape, "text_frame") and shape.text_frame is not None înainte de a accesa textul.


Întrebări frecvente

Încărcarea păstrează tot conținutul original?

Da. Părțile XML necunoscute sunt păstrate exact la salvarea în buclă. Biblioteca nu va elimina niciun conținut XML pe care nu îl înțelege încă.

Pot încărca un PPTX protejat prin parolă?

Prezentările protejate prin parolă (criptate) nu sunt suportate în această ediție.

Pot extrage imaginile încorporate?

Accesați colecția de imagini: prs.images returnează ImageCollection. Fiecare imagine are un content_type și un bytes proprietate pentru a citi datele brute ale imaginii.

Este suportată încărcarea dintr-un flux în memorie?

Încărcarea directă din io.BytesIO nu este expusă în API-ul curent. Scrieți octeții într-un fișier temporar mai întâi:

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)

Vezi și

 Română