Vormen beheren in presentaties met Python
Overzicht
Deze gids introduceert vormmanipulatie in Aspose.Slides voor Python via .NET. Leer praktische patronen voor het vinden van vormen (incl. op Alternatieve Tekst), dupliceren, verwijderen of verbergen, herschikken, uitlijnen en spiegelen, het lezen van ID’s en lay-out‑gedreven opmaak, en het exporteren van individuele vormen naar SVG met behulp van de Presentation en Shape API’s.
Vormen vinden op dia’s
PowerPoint identificeert vormen alleen via interne ID’s. Ken een unieke Alt‑tekst toe aan de doelvorm in PowerPoint, open vervolgens de presentatie met Aspose.Slides voor Python, doorloop de vormen van de dia en selecteer degene waarvan de Alt‑tekst overeenkomt. De find_shape‑methode implementeert deze aanpak en retourneert de passende vorm.
import aspose.slides as slides
# Vindt een vorm op een dia via zijn alternatieve tekst.
def find_shape(slide, alt_text):
for slide_shape in slide.shapes:
if slide_shape.alternative_text == alt_text:
return slide_shape
return None
# Maak een instantie van de Presentation-klasse die een presentatiebestand vertegenwoordigt.
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Zoek de vorm met Alt Text "Shape1".
shape = find_shape(slide, "Shape1")
if shape is not None:
print("Shape name:", shape.name)
Vormen klonen
Om vormen van een bron‑dia naar een nieuwe dia te klonen in Aspose.Slides, volg deze stappen:
- Maak een Presentation aan op basis van het bronbestand.
- Haal de bron‑dia op via de index en verkrijg de collectie Shapes.
- Verkrijg een lege lay-out van de master‑dia.
- Voeg een lege dia toe met die lay-out en haal de Shapes op.
- Clone de vormen naar de doel‑dia.
- Sla de presentatie op als PPTX.
De volgende code‑voorbeeld kloont vormen van de ene dia naar de andere.
import aspose.slides as slides
# Maak een instantie van de Presentation-klasse.
with slides.Presentation("sample.pptx") as presentation:
source_shapes = presentation.slides[0].shapes
blank_layout = presentation.masters[0].layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
target_slide = presentation.slides.add_empty_slide(blank_layout)
target_shapes = target_slide.shapes
target_shapes.add_clone(source_shapes[1], 50, 150 + source_shapes[0].height)
target_shapes.add_clone(source_shapes[2])
target_shapes.insert_clone(0, source_shapes[0], 50, 150)
# Sla de presentatie op op schijf.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Vormen verwijderen
Aspose.Slides laat je elke vorm van een dia verwijderen. Bijvoorbeeld, om een vorm van de eerste dia te verwijderen via zijn Alternatieve Tekst, volg deze stappen:
- Maak een Presentation‑instantie en laad het bestand.
- Open de eerste dia uit de collectie Slides.
- Zoek de vorm op basis van de Alternatieve Tekst‑waarde.
- Verwijder de vorm uit de Shapes‑collectie van de dia.
- Sla de presentatie op op schijf in PPTX‑formaat.
import aspose.slides as slides
# Vindt een vorm op een dia via zijn alternatieve tekst.
def find_shape(slide, alt_text):
for slide_shape in slide.shapes:
if slide_shape.alternative_text == alt_text:
return slide_shape
return None
# Maak een instantie van de Presentation-klasse die een presentatiebestand vertegenwoordigt.
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Zoek de vorm met Alt Text "User Defined".
shape = find_shape(slide, "User Defined")
# Verwijder de vorm.
slide.shapes.remove(shape)
# Sla de presentatie op op schijf.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Vormen verbergen
Aspose.Slides laat je elke vorm op een dia verbergen. Bijvoorbeeld, om een vorm op de eerste dia te verbergen via zijn Alternatieve Tekst, volg deze stappen:
- Maak een Presentation‑instantie en laad het bestand.
- Open de eerste dia uit de collectie Slides.
- Zoek de vorm op basis van de Alternatieve Tekst‑waarde.
- Verberg de vorm.
- Sla de presentatie op op schijf in PPTX‑formaat.
# Vindt een vorm op een dia via zijn alternatieve tekst.
def find_shape(slide, alt_text):
for slide_shape in slide.shapes:
if slide_shape.alternative_text == alt_text:
return slide_shape
return None
# Maak een instantie van de Presentation-klasse die een presentatiebestand vertegenwoordigt.
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Zoek de vorm met Alt Text "User Defined".
shape = find_shape(slide, "User Defined")
# Verberg de vorm.
shape.hidden = True
# Sla de presentatie op op schijf.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
De volgorde van vormen wijzigen
Aspose.Slides stelt ontwikkelaars in staat om de volgorde van vormen (z‑order) te wijzigen. Het herschikken bepaalt welke vorm vóór of achter een andere verschijnt. Bijvoorbeeld, om twee vormen op de eerste dia te herschikken, volg de onderstaande stappen:
- Maak een instantie van de Presentation‑klasse.
- Open de eerste dia.
- Voeg de eerste vorm toe (bijvoorbeeld een rechthoek).
- Voeg de tweede vorm toe (bijvoorbeeld een driehoek).
- Herschik de vormen door de tweede vorm naar de eerste positie in de collectie te verplaatsen.
- Sla de presentatie op op schijf.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Voeg twee vormen toe aan de dia.
shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 200, 150)
shape2 = slide.shapes.add_auto_shape(slides.ShapeType.TRIANGLE, 20, 200, 200, 150)
# Verplaats de tweede vorm naar de eerste positie.
slide.shapes.reorder(0, shape2)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Interop Shape‑ID ophalen
Aspose.Slides laat je de unieke identifier van een vorm binnen de scope van een dia verkrijgen, in tegenstelling tot de unique_id‑eigenschap die uniek is voor de hele presentatie. De office_interop_shape_id‑eigenschap is beschikbaar op de Shape‑klasse. De waarde correspondeert met de Id van het Microsoft.Office.Interop.PowerPoint.Shape‑object. Een voorbeeldcode‑fragment staat hieronder.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
# Haal de unieke identifier van de vorm binnen de dia op.
officeInteropShapeId = presentation.slides[0].shapes[0].office_interop_shape_id
Alternatieve tekst voor vormen instellen
Aspose.Slides stelt ontwikkelaars in staat om alternatieve tekst voor elke vorm in te stellen. Je kunt alternatieve tekst gebruiken om vormen in een presentatie te identificeren en te lokaliseren. De eigenschap kan zowel via Aspose.Slides als Microsoft PowerPoint worden gelezen en geschreven. Door vormen te markeren met deze eigenschap kun je ze later verwijderen, verbergen of herschikken op een dia.
Om de alternatieve tekst van een vorm in te stellen, volg deze stappen:
- Maak een instantie van de Presentation‑klasse.
- Open de eerste dia.
- Voeg een vorm toe aan de dia.
- Stel de alternatieve tekst in.
- Sla de presentatie op op schijf.
import aspose.slides as slides
# Maak een instantie van de Presentation-klasse die een PPTX-bestand vertegenwoordigt.
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Voeg een vorm toe.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 40, 150, 50)
# Stel de alternatieve tekst van de vorm in.
shape.alternative_text = "User Defined"
# Sla de presentatie op op schijf.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Lay-outformaten voor vormen benaderen
Aspose.Slides biedt een eenvoudige API om lay-outformaten voor vormen te benaderen. Deze sectie laat zien hoe je lay-outformaten kunt benaderen.
import aspose.slides as slides
with slides.Presentation(folder_path + "sample.pptx") as presentation:
for layout_slide in presentation.layout_slides:
fill_formats = list(map(lambda shape: shape.fill_format, layout_slide.shapes))
line_formats = list(map(lambda shape: shape.line_format, layout_slide.shapes))
Vormen renderen als SVG
Aspose.Slides ondersteunt het renderen van vormen als SVG. De write_as_svg‑methode (en zijn overloads) op de Shape‑klasse laat je de inhoud van een vorm opslaan als een SVG‑afbeelding. Het code‑fragment hieronder toont hoe je een vorm exporteert naar een SVG‑bestand.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
with open("output.svg", "wb") as image_stream:
# Haal de eerste vorm op van de eerste dia.
shape = presentation.slides[0].shapes[0]
shape.write_as_svg(image_stream)
Vorm uitlijnen
Met de align_shape‑methode in de SlidesUtil‑klasse kun je:
- Vormen uitlijnen ten opzichte van de marges van een dia (zie Voorbeeld 1).
- Vormen ten opzichte van elkaar uitlijnen (zie Voorbeeld 2).
De enumeratie ShapesAlignmentType definieert de beschikbare uitlijnopties.
Voorbeeld 1
Deze Python‑code toont hoe je de vormen met index 1, 2 en 4 uitlijnt op de bovenrand van de dia:
import aspose.slides as slides
align_type = slides.ShapesAlignmentType.ALIGN_TOP
slide_indices = [1, 2, 4]
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
slides.util.SlideUtil.align_shapes(align_type, True, slide, slide_indices)
Voorbeeld 2
Dit Python‑voorbeeld toont hoe je alle vormen in een collectie uitlijnt ten opzichte van de laagste vorm in die collectie:
import aspose.slides as slides
align_type = slides.ShapesAlignmentType.ALIGN_BOTTOM
with slides.Presentation("sample.pptx") as presentation:
slides.util.SlideUtil.align_shapes(align_type, False, presentation.slides[0])
Flip‑eigenschappen
In Aspose.Slides biedt de ShapeFrame‑klasse controle over horizontale en verticale spiegeling van vormen via de flip_h‑ en flip_v‑eigenschappen. Beide eigenschappen zijn van het type NullableBool, waardoor TRUE een flip aangeeft, FALSE geen flip, of NOT_DEFINED om het standaardgedrag te gebruiken. Deze waarden zijn toegankelijk via het Frame van een vorm.
Om de flip‑instellingen te wijzigen, wordt een nieuw ShapeFrame‑object gecreëerd met de huidige positie en grootte van de vorm, de gewenste waarden voor flip_h en flip_v, en de rotatiehoek. Dit object wordt toegewezen aan het Frame van de vorm en na het opslaan van de presentatie worden de spiegeltransformaties toegepast op het uitvoerbestand.
Stel dat we een sample.pptx‑bestand hebben waarin de eerste dia één vorm bevat met standaard flip‑instellingen, zoals hieronder weergegeven.

Het volgende code‑voorbeeld haalt de huidige flip‑eigenschappen van de vorm op en spiegelt deze zowel horizontaal als verticaal.
with slides.Presentation("sample.pptx") as presentation:
shape = presentation.slides[0].shapes[0]
# Haal de horizontale spiegelingsproperty van de vorm op.
horizontal_flip = shape.frame.flip_h
print("Horizontal flip:", horizontal_flip)
# Haal de verticale spiegelingsproperty van de vorm op.
vertical_flip = shape.frame.flip_v
print("Vertical flip:", vertical_flip)
x, y = shape.frame.x, shape.frame.y
width, height = shape.frame.width, shape.frame.height
flip_h, flip_v = slides.NullableBool.TRUE, slides.NullableBool.TRUE # Spiegel horizontaal en verticaal.
rotation = shape.frame.rotation
shape.frame = slides.ShapeFrame(x, y, width, height, flip_h, flip_v, rotation)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Het resultaat:

FAQ
Kan ik vormen (union/intersect/subtract) op een dia combineren zoals in een desktop‑editor?
Er is geen ingebouwde Boolean‑operatie‑API. Je kunt het benaderen door zelf de gewenste omtrek te construeren — bijvoorbeeld de resulterende geometrie berekenen (via GeometryPath) en een nieuwe vorm met die contour aanmaken, eventueel de originelen verwijderen.
Hoe kan ik de stapelvolgorde (z-order) regelen zodat een vorm altijd “bovenaan” blijft?
Pas de invoeg‑/verplaatsvolgorde aan binnen de shapes‑collectie van de dia. Voor voorspelbare resultaten, finaliseer de z‑order nadat alle overige dia‑wijzigingen zijn uitgevoerd.
Kan ik een vorm “vergrendelen” om te voorkomen dat gebruikers deze in PowerPoint bewerken?
Ja. Stel shape‑level protection flags in (bijv. vergrendel selectie, verplaatsing, grootte‑aanpassing, tekst‑bewerking). Indien nodig, spiegel de restricties op de master‑ of lay‑out‑dia. Let op: dit is UI‑niveau bescherming, geen beveiligingsfunctie; voor sterkere bescherming combineer met bestands‑niveau restricties zoals read‑only aanbevelingen of wachtwoorden.