Come caricare presentazioni in Python

Come caricare presentazioni in Python

Aspose.Slides FOSS for Python ti consente di aprire qualsiasi file .pptx, ispezionarne il contenuto e salvarlo nuovamente in PPTX o estrarre 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-foss

Passo 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 conservate 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 della forma

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à principali 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)

Il salvataggio in un percorso diverso crea un nuovo file. Il salvataggio nello stesso percorso sovrascrive l’originale.


Problemi comuni e soluzioni

FileNotFoundError

Verifica che il percorso al file .pptx 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 solo .pptx (Office Open XML). I file legacy .ppt (PowerPoint binario 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 raccolta di immagini: prs.images restituisce il ImageCollection. Ogni immagine ha una proprietà content_type e una proprietà bytes per leggere i dati grezzi dell’immagine.

È supportato il caricamento da un flusso in memoria?

Il caricamento diretto 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)

Vedi anche

 Italiano