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-fossControleer 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 = 80Kan 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.