Come caricare presentazioni in Python
Aspose.Slides FOSS for Python lets you open any .pptx file, ispeziona il suo contenuto e salva nuovamente in PPTX o estrai i dati da esso. Questa guida copre l’apertura di un file, l’iterazione delle diapositive, la lettura del testo delle forme e il salvataggio round‑trip.
Guida passo-passo
Passo 1: Installa il pacchetto
pip install aspose-slides-fossPasso 2: Apri una presentazione esistente
Passa il percorso del file a slides.Presentation(). Usa il gestore di contesto per garantire la pulizia.
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)Le parti XML sconosciute nel file di origine vengono preservate alla lettera: la libreria non rimuove mai contenuti che non comprende ancora.
Passo 3: Ispeziona le diapositive
Itera su tutte le diapositive e stampa il loro indice:
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")Passo 4: Leggi il testo delle forme
Itera sulle forme e leggi il testo dalle forme che hanno 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}")Passo 5: Leggi le proprietà del documento
Accedi alle proprietà di base del documento da 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}")Passo 6: Salvataggio round‑trip
Dopo aver ispezionato o modificato la presentazione, salvala nuovamente in PPTX:
prs.save("output.pptx", SaveFormat.PPTX)Salvare in un percorso diverso crea un nuovo file. Salvare nello stesso percorso sovrascrive l’originale.
Problemi comuni e soluzioni
FileNotFoundError
Verifica che il percorso verso il .pptx file sia corretto rispetto alla directory di lavoro. Usa pathlib.Path per una costruzione robusta del percorso:
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 libreria supporta .pptx (Office Open XML) solo. I file legacy .ppt (binary PowerPoint 97–2003) non sono supportati.
Le forme non hanno l’attributo text_frame
Alcune forme (Connectors, PictureFrames, GroupShapes) non hanno un text_frame. Proteggi con hasattr(shape, "text_frame") and shape.text_frame is not None prima di accedere al testo.
Domande frequenti
Il caricamento preserva tutto il contenuto originale?
Sì. Le parti XML sconosciute vengono preservate alla lettera durante il salvataggio round‑trip. La libreria non rimuoverà alcun contenuto XML che non comprende ancora.
Posso caricare un PPTX protetto da password?
Le presentazioni protette da password (cifrati) non sono supportate in questa edizione.
Posso estrarre le immagini incorporate?
Accedi alla collezione di immagini: prs.images restituisce il ImageCollection. Ogni immagine ha un content_type e un bytes proprietà per leggere i dati grezzi dell’immagine.
Il caricamento da uno stream in memoria è supportato?
Caricamento direttamente da io.BytesIO non è esposto nell’API corrente. Scrivi i byte in un file temporaneo prima:
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)