Tekstvakken beheren in presentaties met Python

Introductie

Teksten op dia’s bestaan meestal in tekstvakken of vormen. Daarom moet je, om tekst aan een dia toe te voegen, eerst een tekstvak toevoegen en vervolgens wat tekst in het tekstvak plaatsen. Aspose.Slides for Python biedt de AutoShape klasse die je toestaat een vorm met tekst toe te voegen.

Tekstvakken maken op dia’s

  1. Maak een instantie van de Presentation klasse.
  2. Haal een referentie op naar de eerste dia.
  3. Voeg een AutoShape met ShapeType.RECTANGLE toe op de gewenste positie op de dia.
  4. Stel de tekst in het TextFrame van de vorm in.
  5. Sla de presentatie op als een PPTX‑bestand.

Het volgende Python‑voorbeeld implementeert deze stappen:

import aspose.slides as slides

# Maak een instantie van de Presentation-klasse.
with slides.Presentation() as presentation:

    # Haal de eerste dia uit de presentatie.
    slide = presentation.slides[0]

    # Voeg een AutoShape van het type RECTANGLE toe.
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)

    shape.text_frame.text = "Aspose TextBox"

    # Sla de presentatie op op schijf.
    presentation.save("TextBox.pptx", slides.export.SaveFormat.PPTX)

Controleren of een vorm een tekstvak is

Aspose.Slides biedt de is_text_box‑eigenschap op de AutoShape klasse, waarmee je kunt bepalen of een vorm een tekstvak is.

Text box and shape

Dit Python‑voorbeeld laat zien hoe je controleert of een vorm als tekstvak is aangemaakt:

import aspose.slides as slides

with slides.Presentation("Sample.pptx") as presentation:
    for slide in presentation.slides:
        for shape in slide.shapes:
            if isinstance(shape, slides.AutoShape):
                print("shape is a text box" if shape.is_text_box else "shape is not a text box")

Merk op dat als je een AutoShape toevoegt met de ShapeCollection klasse, de is_text_box‑eigenschap van de vorm False retourneert. Nadat je echter tekst hebt toegevoegd — ofwel met de add_text_frame‑methode of door de text‑eigenschap in te stellen — retourneert is_text_box True.

import aspose.slides as slides

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

    shape1 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 10, 100, 40)
    # shape1.is_text_box is onwaar
    shape1.add_text_frame("shape 1")
    # shape1.is_text_box is waar

    shape2 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 110, 100, 40)
    # shape2.is_text_box is onwaar
    shape2.text_frame.text = "shape 2"
    # shape2.is_text_box is waar

    shape3 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 210, 100, 40)
    # shape3.is_text_box is onwaar
    shape3.add_text_frame("")
    # shape3.is_text_box is onwaar

    shape4 = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 10, 310, 100, 40)
    # shape4.is_text_box is onwaar
    shape4.text_frame.text = ""
    # shape4.is_text_box is onwaar

Kolommen toevoegen aan tekstvakken

Aspose.Slides biedt de column_count en column_spacing eigenschappen op de TextFrameFormat klasse om kolommen aan tekstvakken toe te voegen. Je kunt het aantal kolommen opgeven en de tussenruimte (in punten) tussen kolommen instellen.

De volgende Python‑code demonstreert deze bewerking:

import aspose.slides as slides

with slides.Presentation() as presentation:

	# Haal de eerste dia in de presentatie op.
	slide = presentation.slides[0]

	# Voeg een AutoShape van het type RECTANGLE toe.
	shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)

	# Voeg een TextFrame toe aan de rechthoek.
	shape.add_text_frame("All of these columns are confined to a single text container—" +
	"you can add or delete text, and any new or remaining text automatically reflows " +
	"within the container. You cannot have text flow from one container to another, " +
	"though—PowerPoint’s column options for text are limited!")

	# Haal het tekstformaat van het TextFrame op.
	format = shape.text_frame.text_frame_format

	# Specificeer het aantal kolommen in het TextFrame.
	format.column_count = 3

	# Specificeer de tussenruimte tussen kolommen.
	format.column_spacing = 10

	# Sla de presentatie op.
	presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)

Tekst bijwerken

Aspose.Slides laat je de tekst in een enkel tekstvak of in de volledige presentatie bijwerken.

Het volgende Python‑voorbeeld toont hoe je alle tekst in een presentatie bijwerkt:

import aspose.slides as slides

with slides.Presentation("Sample.pptx") as presentation:
    for slide in presentation.slides:
        for shape in slide.shapes:
            if type(shape) is slides.AutoShape:
                for paragraph in shape.text_frame.paragraphs:
                    for portion in paragraph.portions:
                        portion.text = portion.text.replace("years", "months")
                        portion.portion_format.font_bold = 1
  
    # Sla de gewijzigde presentatie op.
    presentation.save("TextChanged.pptx", slides.export.SaveFormat.PPTX)

Je kunt een link in een tekstvak invoegen. Wanneer het tekstvak wordt aangeklikt, wordt de link geopend.

Om een tekstvak met een hyperlink toe te voegen, volg je deze stappen:

  1. Maak een instantie van de Presentation klasse.
  2. Haal een referentie op naar de eerste dia.
  3. Voeg een AutoShape met ShapeType.RECTANGLE toe op de gewenste positie op de dia.
  4. Stel de tekst in het TextFrame van de vorm in.
  5. Haal een referentie op naar de HyperlinkManager.
  6. Gebruik de hyperlink_manager‑eigenschap om een externe klik‑hyperlink in te stellen.
  7. Sla de presentatie op als een PPTX‑bestand.

Dit Python‑voorbeeld toont hoe je een tekstvak met een hyperlink aan een dia toevoegt:

import aspose.slides as slides

# Instantieer de Presentation-klasse.
with slides.Presentation() as presentation:

    # Haal de eerste dia uit de presentatie.
    slide = presentation.slides[0]

    # Voeg een AutoShape van het type RECTANGLE toe.
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)

    text_portion = shape.text_frame.paragraphs[0].portions[0]

    # Voeg tekst toe aan het frame.
    text_portion.text = "Aspose.Slides"

    # Stel een hyperlink in voor de portion-tekst.
    hyperlink_manager = text_portion.portion_format.hyperlink_manager
    hyperlink_manager.set_external_hyperlink_click("http://www.aspose.com")

    # Sla de presentatie op als een PPTX‑bestand.
    presentation.save("Hyperlink.pptx", slides.export.SaveFormat.PPTX)

FAQ

Wat is het verschil tussen een tekstvak en een tekst‑placeholder bij het werken met master‑dia’s?

Een placeholder erft stijl/positie van de master en kan worden overschreven op layouts, terwijl een regulier tekstvak een onafhankelijk object is op een specifieke dia en niet verandert wanneer je van layout wisselt.

Hoe kan ik een bulksubstitutie van tekst uitvoeren over de hele presentatie zonder tekst in grafieken, tabellen en SmartArt aan te raken?

Beperk je iteratie tot auto‑shapes die tekstframes hebben en sluit ingesloten objecten (charts, tables, SmartArt) uit door hun collecties afzonderlijk te doorlopen of die objecttypen over te slaan.