Come creare presentazioni in Python

Come creare presentazioni in Python

Aspose.Slides FOSS for Python ti consente di creare presentazioni PowerPoint interamente in Python senza dipendere da Microsoft Office. Questa guida mostra come creare una nuova presentazione, aggiungere diapositive e forme, formattare il testo e salvare il risultato.

Guida passo-passo

Passo 1: Installa il pacchetto

Installa Aspose.Slides FOSS da PyPI. È richiesto Python 3.10 o versioni successive.

pip install aspose-slides-foss

Verifica l’installazione:

import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")

La dipendenza lxml viene installata automaticamente. Non sono richiesti altri pacchetti di sistema.


Passo 2: Importa i Moduli Richiesti

Importa il pacchetto e l’enumerazione SaveFormat necessaria per il salvataggio.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
from aspose.slides_foss import ShapeType

Tutte le costanti di tipo forma si trovano in aspose.slides_foss.ShapeType. Tutti i tipi di formattazione (FillType, NullableBool) sono anch’essi in aspose.slides_foss.


Passo 3: Crea una presentazione

Usa slides.Presentation() come gestore di contesto. Una nuova presentazione inizia con una diapositiva vuota.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    print(f"Slides in new presentation: {len(prs.slides)}")
    # work with prs inside this block
    prs.save("output.pptx", SaveFormat.PPTX)

Importante: Apri e usa sempre Presentation all’interno di un blocco with. Non memorizzare un riferimento al di fuori dell’istruzione with; le risorse non verranno rilasciate correttamente.


Passo 4: Accedi a una diapositiva

La prima diapositiva è all’indice 0. Una presentazione vuota ha esattamente una diapositiva.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]  # zero-based index
    print(f"Slide at index 0: {slide}")
    prs.save("output.pptx", SaveFormat.PPTX)

Passo 5: Aggiungi una forma

Usa slide.shapes.add_auto_shape() per aggiungere un’AutoShape. I parametri sono (shape_type, x, y, width, height) tutti in punti (1 punto = 1/72 di pollice; la diapositiva standard è 720 × 540 pt).

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Rectangle at (50, 50) with 400 wide and 120 tall
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 400, 120)

    # Attach a text frame
    shape.add_text_frame("Hello from Aspose.Slides FOSS!")

    prs.save("with-shape.pptx", SaveFormat.PPTX)

Passo 6: Salva la presentazione

Chiama prs.save(path, SaveFormat.PPTX) prima che il blocco with termini. PPTX è l’unico formato di output supportato.

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

Il file viene scritto in modo atomico; se si verifica un errore prima di questa chiamata, non viene creato alcun file di output.


Esempio completo funzionante

Lo script seguente crea una presentazione di due diapositive con una forma titolo nella prima diapositiva e una tabella nella seconda.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    # --- Slide 1: title shape ---
    slide1 = prs.slides[0]
    title = slide1.shapes.add_auto_shape(ShapeType.RECTANGLE, 40, 40, 640, 80)
    tf = title.add_text_frame("Q1 Results: Executive Summary")
    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    # --- Slide 2: table ---
    prs.slides.add_empty_slide(prs.layout_slides[0])
    slide2 = prs.slides[1]
    table = slide2.shapes.add_table(40, 40, [200.0, 120.0, 120.0], [40.0, 40.0, 40.0])
    headers = ["Region", "Revenue", "Growth"]
    data = [
        ["North", "$1.2M", "+8%"],
        ["South", "$0.9M", "+4%"],
    ]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("q1-results.pptx", SaveFormat.PPTX)

print("Saved q1-results.pptx")

Problemi comuni e soluzioni

ResourceWarning: unclosed Presentation

Stai istanziando Presentation senza un blocco with. Usa sempre:

with slides.Presentation() as prs:
    ...

AttributeError: __enter__

Se vedi questo errore, verifica di aver importato aspose.slides_foss (non aspose.slides). Il nome del pacchetto su PyPI è aspose-slides-foss e l’importazione a runtime è aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX è un membro enum, non una funzione. Usalo come prs.save("file.pptx", SaveFormat.PPTX).


Domande Frequenti

Qual è la dimensione predefinita della diapositiva?

Un nuovo Presentation() crea diapositive nella dimensione standard di 10 × 7,5 pollici (720 × 540 punti). La modifica della dimensione della diapositiva non è ancora supportata in questa edizione.

Posso aggiungere più di una diapositiva?

Sì. Chiama prs.slides.add_empty_slide(prs.layout_slides[0]) per aggiungere una diapositiva vuota e accedervi per indice:

prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]

Posso aprire un file esistente e aggiungere diapositive?

Sì:

with slides.Presentation("existing.pptx") as prs:
    prs.slides.add_empty_slide(prs.layout_slides[0])
    prs.save("existing.pptx", SaveFormat.PPTX)

In quali formati posso salvare?

Solo SaveFormat.PPTX è supportato. L’esportazione in PDF, HTML, SVG o immagini non è disponibile in questa edizione.


Vedi anche

 Italiano