Com carregar presentacions a Python
Aspose.Slides FOSS for Python et permet obrir qualsevol fitxer .pptx, inspeccionar el seu contingut i, o bé desar-lo de nou a PPTX o extreure’n dades. Aquesta guia cobreix l’obertura d’un fitxer, la iteració de les diapositives, la lectura del text de les formes i el procés de desar i tornar a carregar.
Guia pas a pas
Pas 1: Instal·la el paquet
pip install aspose-slides-fossPas 2: Obre una presentació existent
Passeu la ruta del fitxer a slides.Presentation(). Utilitzeu el gestor de context per garantir la neteja.
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)Les parts XML desconegudes al fitxer font es conserven literalment: la biblioteca mai elimina contingut que encara no entén.
Pas 3: Inspecciona les diapositives
Iterar sobre totes les diapositives i imprimir el seu índex:
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")Pas 4: Llegir el text de la forma
Itera sobre les formes i llegeix el text de les formes que tenen 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}")Pas 5: Llegir les propietats del document
Accediu a les propietats bàsiques del document des de 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}")Pas 6: Desament d’anada i tornada
Després d’inspeccionar o modificar la presentació, deseu-la de nou a PPTX:
prs.save("output.pptx", SaveFormat.PPTX)Desar a una ruta diferent crea un fitxer nou. Desar a la mateixa ruta sobrescriu l’original.
Problemes comuns i solucions
FileNotFoundError
Comproveu que el camí cap al fitxer .pptx és correcte respecte al directori de treball. Utilitzeu pathlib.Path per a una construcció de camins robusta:
from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
...Exception: File format is not supported
La biblioteca només admet .pptx (Office Open XML). Els fitxers antics .ppt (PowerPoint binari 97–2003) no són compatibles.
Les formes no tenen l’atribut text_frame
Algunes formes (Connectors, PictureFrames, GroupShapes) no tenen un text_frame. Protegiu-vos amb hasattr(shape, "text_frame") and shape.text_frame is not None abans d’accedir al text.
Preguntes freqüents
La càrrega conserva tot el contingut original?
Sí. Les parts XML desconegudes es conserven literalment en l’estalvi de viatge d’anada i tornada. La biblioteca no eliminarà cap contingut XML que encara no entengui.
Puc carregar un PPTX protegit amb contrasenya?
Les presentacions protegides per contrasenya (encriptades) no són compatibles en aquesta edició.
Puc extreure imatges incrustades?
Accediu a la col·lecció d’imatges: prs.images retorna el ImageCollection. Cada imatge té una propietat content_type i una propietat bytes per llegir les dades d’imatge en brut.
Es suporta la càrrega des d’un flux en memòria?
La càrrega directa des de io.BytesIO no està exposada a l’API actual. Escriu els bytes a un fitxer temporal primer:
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)