Hoe vormen toe te voegen aan PowerPoint in Python

Hoe vormen toe te voegen aan PowerPoint in Python

Aspose.Slides FOSS for Python ondersteunt het toevoegen van AutoShapes, Tables, Connectors en PictureFrames aan presentatiedia’s. Alle vormtypen worden toegevoegd via de slide.shapes-collectie.

Stapsgewijze handleiding

Stap 1: Installeer het pakket

pip install aspose-slides-foss

Controleer de installatie:

import aspose.slides_foss as slides
print("Ready")

Stap 2: Maak een presentatie

Gebruik altijd Presentation als contextmanager.

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

with slides.Presentation() as prs:
    slide = prs.slides[0]
    # ... add shapes ...
    prs.save("output.pptx", SaveFormat.PPTX)

Stap 3: Voeg een AutoShape toe

slide.shapes.add_auto_shape(shape_type, x, y, width, height) plaatst een vorm op de opgegeven positie en grootte (allemaal in punten). Gebruik ShapeType constanten om de vorm te selecteren.

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
    rect = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    rect.add_text_frame("Rectangle shape")

    # Ellipse
    ellipse = slide.shapes.add_auto_shape(ShapeType.ELLIPSE, 400, 50, 200, 100)
    ellipse.add_text_frame("Ellipse shape")

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

Stap 4: Voeg een tabel toe

slide.shapes.add_table(x, y, col_widths, row_heights) maakt een tabel op de opgegeven positie. Kolombreedtes en rijhoogtes zijn lijsten met puntwaarden.

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

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

    col_widths = [150.0, 150.0, 150.0]
    row_heights = [40.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 200, col_widths, row_heights)

    # Set header row text
    headers = ["Product", "Units", "Revenue"]
    for col, text in enumerate(headers):
        table.rows[0][col].text_frame.text = text

    # Set data rows
    rows = [
        ["Widget A", "120", "$2,400"],
        ["Widget B", "85", "$1,700"],
    ]
    for row_idx, row_data in enumerate(rows):
        for col, text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = text

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

Stap 5: Voeg een connector toe

Connectoren koppelen twee vormen visueel. Maak eerst de vormen, voeg vervolgens een connector toe en stel de start‑ en eindkoppelingspunten in.

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]

    box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 100, 150, 60)
    box1.add_text_frame("Start")

    box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 100, 150, 60)
    box2.add_text_frame("End")

    conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
    conn.start_shape_connected_to = box1
    conn.start_shape_connection_site_index = 3  # right side of box1
    conn.end_shape_connected_to = box2
    conn.end_shape_connection_site_index = 1    # left side of box2

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

Verbindingsplaatsindices worden genummerd 0–3 voor een rechthoek: top=0, left=1, bottom=2, right=3.


Stap 6: Voeg een fotolijst toe

Voeg een afbeelding in en voeg deze toe aan de dia als een PictureFrame. Lees eerst de afbeeldingsbytes, voeg ze toe aan de afbeeldingscollectie van de presentatie en maak vervolgens het frame.

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

with slides.Presentation() as prs:
    with open("logo.png", "rb") as f:
        image_data = f.read()

    image = prs.images.add_image(image_data)

    slide = prs.slides[0]
    slide.shapes.add_picture_frame(
        ShapeType.RECTANGLE,  # bounding shape type
        50, 50,               # x, y in points
        200, 150,             # width, height in points
        image
    )

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

Veelvoorkomende problemen en oplossingen

Vorm verschijnt buiten het zichtbare dia‑gebied

Slides zijn standaard 720 × 540 punten. Waarden van x of y buiten die grenzen plaatsen de vorm buiten de dia. Houd x < 720 en y < 540, en zorg ervoor dat x + width <= 720 en y + height <= 540.

AttributeError: 'NoneType' object has no attribute 'text_frame'

add_auto_shape() retourneert het shape‑object direct. Als je None ziet, controleer dan of je de retourwaarde niet weggooit.

Tabelceltekst is leeg na toewijzing

De juiste eigenschap is .text_frame.text (niet .text direct op de cel). Toegang tot cellen als table.rows[row_index][col_index].text_frame.text = "value".


Veelgestelde vragen

Hoeveel vormen kan ik aan een dia toevoegen?

Er is geen door de bibliotheek opgelegde limiet. Praktische limieten hangen af van de bestandsgrootte en de renderingscapaciteit van uw doel‑PPTX‑viewer.

Kan ik de positie van een vorm wijzigen nadat ik deze heb toegevoegd?

Ja. Het shape-object dat wordt geretourneerd door add_auto_shape() heeft x, y, width en height eigenschappen die je kunt instellen:

shape.x = 100
shape.y = 200
shape.width = 400
shape.height = 80

Kan ik de vormcontour (rand)kleur instellen?

Ja, via shape.line_format:

from aspose.slides_foss.drawing import Color
shape.line_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)

Zijn grafieken ondersteund?

Nee. Grafieken, SmartArt en OLE‑objecten zijn niet geïmplementeerd in deze editie en veroorzaken NotImplementedError.


Zie ook

 Nederlands