Com crear presentacions en Python

Com crear presentacions en Python

Aspose.Slides FOSS for Python us permet crear presentacions PowerPoint completament en Python sense cap dependència de Microsoft Office. Aquesta guia mostra com crear una nova presentació, afegir diapositives i formes, formatar text i desar el resultat.

Guia pas a pas

Pas 1: Instal·la el paquet

Instal·la Aspose.Slides FOSS des de PyPI. Es requereix Python 3.10 o posterior.

pip install aspose-slides-foss

Verifiqueu la instal·lació:

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

La dependència lxml s’instal·la automàticament. No es requereixen altres paquets del sistema.


Pas 2: Importa els mòduls necessaris

Importa el paquet i l’enumeració SaveFormat necessària per desar.

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

Totes les constants de tipus de forma es troben a aspose.slides_foss.ShapeType. Tots els tipus de format (FillType, NullableBool) també es troben a aspose.slides_foss.


Pas 3: Crea una presentació

Utilitzeu slides.Presentation() com a gestor de context. Una nova presentació comença amb una diapositiva en blanc.

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)

Important: Obriu i utilitzeu sempre Presentation dins d’un bloc with. No emmagatzemeu una referència fora de l’expressió with; els recursos no es liberaran correctament.


Pas 4: Accedir a una diapositiva

La primera diapositiva està a l’índex 0. Una presentació en blanc té exactament 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)

Pas 5: Afegeix una forma

Utilitzeu slide.shapes.add_auto_shape() per afegir una AutoShape. Els paràmetres són (shape_type, x, y, width, height) tots en punts (1 punt = 1/72 polzada; la diapositiva estàndard és de 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)

Pas 6: Desa la presentació

Crida prs.save(path, SaveFormat.PPTX) abans que el bloc with surti. PPTX és l’únic format de sortida compatible.

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

El fitxer s’escriu de manera atòmica; si es produeix un error abans d’aquesta crida, no es crea cap fitxer de sortida.


Exemple complet de funcionament

El següent script crea una presentació de dues diapositives amb una forma de títol a la primera diapositiva i una taula a la segona.

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

Problemes comuns i solucions

ResourceWarning: unclosed Presentation

Esteu instanciant Presentation sense un bloc with. Utilitzeu sempre:

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

AttributeError: __enter__

Si veus aquest error, comprova que has importat aspose.slides_foss (no aspose.slides). El nom del paquet a PyPI és aspose-slides-foss i la importació en temps d’execució és aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX és un membre d’enumeració, no una funció. Utilitzeu-lo com prs.save("file.pptx", SaveFormat.PPTX).


Preguntes freqüents

Quina és la mida per defecte de la diapositiva?

Una nova Presentation() crea diapositives a la mida estàndard de 10 × 7,5 polzades (720 × 540 punts). Canviar la mida de la diapositiva encara no està suportat en aquesta edició.

Puc afegir més d’una diapositiva?

Sí. Crida prs.slides.add_empty_slide(prs.layout_slides[0]) per afegir una diapositiva en blanc i accedir-hi per índex:

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

Puc obrir un fitxer existent i afegir diapositives?

Sí:

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

Quins formats puc desar?

Només SaveFormat.PPTX és compatible. L’exportació a PDF, HTML, SVG o imatges no està disponible en aquesta edició.


Vegeu també

 Català