Tekst van presentatie opmaken in Python

Overzicht

Dit artikel laat zien hoe u tekst kunt opmaken in PowerPoint‑ en OpenDocument‑presentaties met Aspose.Slides voor Python via .NET. Het behandelt markering, achtergrondkleuren, transparantie, tekenafstand, lettertype‑eigenschappen, rotatie, alinea‑afstand, autofit‑gedrag, tekst‑ankering, tab‑stops en taalinstellingen.

In de onderstaande voorbeelden gebruiken we een bestand genaamd “sample.pptx”, dat een enkele tekstvak op de eerste dia bevat met de volgende tekst:

Voorbeeldtekst

Tekst markeren

Gebruik de TextFrame.highlight_text methode wanneer u tekst wilt markeren die overeenkomt met een specifieke voorbeeldtekst binnen een tekstkader. De methode past een markeerkleur toe op overeenkomende tekstfragmenten en kan worden gebruikt met TextSearchOptions om te bepalen hoe de zoekopdracht wordt uitgevoerd, bijvoorbeeld om alleen volledige woorden te matchen.

Het onderstaande codevoorbeeld markeert alle voorkomens van de tekens “try” en markeert vervolgens alleen het volledige woord “to”.

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    # Haal de eerste vorm van de eerste dia op.
    shape = presentation.slides[0].shapes[0]

    # Markeer het woord "try" in de vorm.
    shape.text_frame.highlight_text("try", draw.Color.light_blue)

    search_options = slides.TextSearchOptions()
    search_options.whole_words_only = True

    # Markeer het woord "to" in de vorm.
    shape.text_frame.highlight_text("to", draw.Color.violet, search_options, None)

    presentation.save("highlighted_text.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De gemarkeerde tekst

Tekst markeren met reguliere expressies

De TextFrame.highlight_regex methode markeert tekst die gevonden is met een reguliere expressie. In Python wordt deze API beschikbaar gesteld via TextFrame.

Het onderstaande codevoorbeeld markeert alle woorden die zeven of meer tekens bevatten:

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    shape = presentation.slides[0].shapes[0]

    regex = r"\b[^\s]{7,}\b"

    # Markeer alle woorden met zeven of meer tekens.
    shape.text_frame.highlight_regex(regex, draw.Color.yellow, None)

    presentation.save("highlighted_text_using_regex.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De gemarkeerde tekst met de reguliere expressie

Tekstachtergrondkleur instellen

Gebruik ParagraphFormat.default_portion_format om de standaard markeerkleur voor een alinea in te stellen, of gebruik PortionFormat.highlight_color voor individuele tekstgedeelten.

Het volgende codevoorbeeld laat zien hoe u de achtergrondkleur voor de hele alinea instelt:

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    # Stel de markeerkleur in voor de hele alinea.
    paragraph.paragraph_format.default_portion_format.highlight_color.color = draw.Color.light_gray

    presentation.save("gray_paragraph.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De grijze alinea

Het onderstaande codevoorbeeld toont hoe u de achtergrondkleur voor tekstgedeelten met een vet lettertype instelt:

import aspose.pydrawing as draw
import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    for portion in paragraph.portions:
        if portion.portion_format.get_effective().font_bold:
            # Stel de markeerkleur in voor het tekstgedeelte.
            portion.portion_format.highlight_color.color = draw.Color.light_gray

    presentation.save("gray_text_portions.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De grijze tekstgedeelten

Tekst alinea’s uitlijnen

Gebruik ParagraphFormat.alignment om de alinea‑uitlijning binnen een tekstkader in te stellen. De waarde kan gecentreerd, links uitgelijnd, rechts uitgelijnd, gerechtvaardigd, enzovoort zijn.

Het volgende codevoorbeeld laat zien hoe u de alinea naar het midden uitlijnt:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    # Stel de uitlijning van de alinea in op het midden.
    paragraph.paragraph_format.alignment = slides.TextAlignment.CENTER

    presentation.save("aligned_paragraph.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De uitgelijnde alinea

Transparantie voor tekst instellen

Teksttransparantie wordt geregeld via het alfacomponent van de kleur die is toegewezen aan PortionFormat.fill_format. In de onderstaande voorbeelden is alpha = 50 een ARGB-alphakanaalwaarde op de schaal 0‑255, geen transparantiepercentage.

Het onderstaande codevoorbeeld toont hoe u transparantie toepast op de hele alinea:

import aspose.pydrawing as draw
import aspose.slides as slides

alpha = 50

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    # Stel de vulkleur van de tekst in op een transparante kleur.
    paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
    paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.from_argb(alpha, draw.Color.black)

    presentation.save("transparent_paragraph.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De transparante alinea

Het volgende codevoorbeeld toont hoe u transparantie toepast op tekstgedeelten met een vet lettertype:

import aspose.pydrawing as draw
import aspose.slides as slides

alpha = 50

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    for portion in paragraph.portions:
        if portion.portion_format.get_effective().font_bold:
            # Stel de transparantie van het tekstgedeelte in.
            portion.portion_format.fill_format.fill_type = slides.FillType.SOLID
            portion.portion_format.fill_format.solid_fill_color.color = draw.Color.from_argb(alpha, draw.Color.black)

    presentation.save("transparent_text_portions.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De transparante tekstgedeelten

Tekenafstand voor tekst instellen

Gebruik BasePortionFormat.spacing om de afstand tussen tekens in een tekstvak te vergroten of te verkleinen.

De volgende Python‑code toont hoe u de tekenafstand in de hele alinea vergroot:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    # Opmerking: gebruik negatieve waarden om de tekenafstand te verkleinen.
    paragraph.paragraph_format.default_portion_format.spacing = 3  # Vergroot de tekenafstand.

    presentation.save("character_spacing_in_paragraph.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De tekenafstand in de alinea

Het onderstaande codevoorbeeld toont hoe u de tekenafstand vergroot in tekstgedeelten met een vet lettertype:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    for portion in paragraph.portions:
        if portion.portion_format.get_effective().font_bold:
            # Opmerking: gebruik negatieve waarden om de tekenafstand te verkleinen.
            portion.portion_format.spacing = 3  # Vergroot de tekenafstand.

    presentation.save("character_spacing_in_text_portions.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De tekenafstand in de tekstgedeelten

Kerning uitschakelen voor specifieke lettertypen

In sommige gevallen kan de door Aspose.Slides gerenderde tekst iets strakker lijken dan dezelfde tekst in PowerPoint. Dit kan gebeuren omdat PowerPoint kerning‑gegevens voor bepaalde lettertypen kan negeren, zelfs wanneer het lettertype geldige kerning‑informatie bevat en kerning is ingeschakeld in de PowerPoint‑instellingen.

Om de gerenderde uitvoer in dergelijke gevallen dichter bij PowerPoint te laten komen, kunt u kerning uitschakelen voor tekstgedeelten die het betreffende lettertype gebruiken. Stel PortionFormat.kerning_minimal_size in op een waarde die veel groter is dan de werkelijke lettergrootte:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    target_font = "Roboto"

    for paragraph in auto_shape.text_frame.paragraphs:
        for portion in paragraph.portions:
            latin_font = portion.portion_format.latin_font
            east_asian_font = portion.portion_format.east_asian_font
            complex_script_font = portion.portion_format.complex_script_font

            if ((latin_font is not None and latin_font.font_name == target_font) or
                    (east_asian_font is not None and east_asian_font.font_name == target_font) or
                    (complex_script_font is not None and complex_script_font.font_name == target_font)):
                portion.portion_format.kerning_minimal_size = 100

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

Deze instelling voorkomt dat kerning wordt toegepast op overeenkomende tekstgedeelten en kan helpen om de weergave van Aspose.Slides beter af te stemmen op de visuele uitvoer van PowerPoint voor lettertypen die door dit PowerPoint‑specifieke gedrag worden beïnvloed.

Lettertype‑eigenschappen van tekst beheren

Lettertype‑eigenschappen kunnen op alinea‑niveau worden ingesteld via ParagraphFormat.default_portion_format of op individuele gedeelten via PortionFormat.

De volgende code stelt het lettertype en de tekststijl in voor de hele alinea: het past lettergrootte, vet, cursief, gestippelde onderstreping en het lettertype Times New Roman toe op alle gedeelten in de alinea.

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    # Stel de lettertype-eigenschappen in voor de alinea.
    paragraph.paragraph_format.default_portion_format.font_height = 12
    paragraph.paragraph_format.default_portion_format.font_bold = slides.NullableBool.TRUE
    paragraph.paragraph_format.default_portion_format.font_italic = slides.NullableBool.TRUE
    paragraph.paragraph_format.default_portion_format.font_underline = slides.TextUnderlineType.DOTTED
    paragraph.paragraph_format.default_portion_format.latin_font = slides.FontData("Times New Roman")

    presentation.save("font_properties_for_paragraph.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De lettertype‑eigenschappen voor de alinea

Het onderstaande codevoorbeeld past vergelijkbare eigenschappen toe op tekstgedeelten met een vet lettertype:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    for portion in paragraph.portions:
        if portion.portion_format.get_effective().font_bold:
            # Stel de lettertype-eigenschappen in voor het tekstgedeelte.
            portion.portion_format.font_height = 13
            portion.portion_format.font_italic = slides.NullableBool.TRUE
            portion.portion_format.font_underline = slides.TextUnderlineType.DOTTED
            portion.portion_format.latin_font = slides.FontData("Times New Roman")

    presentation.save("font_properties_for_text_portions.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De lettertype‑eigenschappen voor tekstgedeelten

Tekstrotatie instellen

Gebruik TextFrameFormat.text_vertical_type om een vooraf gedefinieerde tekstoriëntatie binnen een vorm in te stellen.

Het volgende codevoorbeeld zet de tekstoriëntatie in de vorm op VERTICAL270, waardoor de tekst 90 graden tegen de klok in wordt gedraaid:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]

    auto_shape.text_frame.text_frame_format.text_vertical_type = slides.TextVerticalType.VERTICAL270

    presentation.save("text_rotation.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De tekstrotatie

Aangepaste rotatie voor tekstkaders instellen

Gebruik TextFrameFormat.rotation_angle om een aangepaste rotatiehoek in te stellen voor een TextFrame.

Het onderstaande codevoorbeeld draait het tekstkader 3 graden met de klok mee binnen de vorm:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]

    auto_shape.text_frame.text_frame_format.rotation_angle = 3

    presentation.save("custom_text_rotation.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De aangepaste tekstrotatie

Regelafstand van alinea’s instellen

Aspose.Slides biedt ParagraphFormat.space_after, ParagraphFormat.space_before en ParagraphFormat.space_within om de alinea‑afstand te regelen. Deze eigenschappen worden als volgt gebruikt:

  • Gebruik een positieve waarde om de regelafstand als een percentage van de regelhoogte op te geven.
  • Gebruik een negatieve waarde om de regelafstand in punten op te geven.

Het volgende codevoorbeeld toont hoe u de regelafstand binnen de alinea opgeeft:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    paragraph.paragraph_format.space_within = 200

    presentation.save("line_spacing.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De regelafstand binnen de alinea

Autofit‑type voor tekstkaders instellen

TextFrameFormat.autofit_type bepaalt hoe tekst zich gedraagt wanneer deze de grenzen van de container overschrijdt. Gebruik het om te bepalen of de tekst krimpt, overlapt of de vorm automatisch vergroot.

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]

    auto_shape.text_frame.text_frame_format.autofit_type = slides.TextAutofitType.SHAPE

    presentation.save("autofit_type.pptx", slides.export.SaveFormat.PPTX)

Anker van tekstkaders instellen

TextFrameFormat.anchoring_type definieert hoe tekst verticaal binnen een vorm wordt gepositioneerd, bijvoorbeeld bovenaan, in het midden of onderaan.

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]

    auto_shape.text_frame.text_frame_format.anchoring_type = slides.TextAnchorType.BOTTOM

    presentation.save("text_anchor.pptx", slides.export.SaveFormat.PPTX)

Tekst‑tabulatie instellen

Gebruik ParagraphFormat.default_tab_size en ParagraphFormat.tabs om tab‑stops in een alinea te configureren.

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]

    paragraph.paragraph_format.default_tab_size = 100
    paragraph.paragraph_format.tabs.add(30, slides.TabAlignment.LEFT)

    presentation.save("paragraph_tabs.pptx", slides.export.SaveFormat.PPTX)

Het resultaat:

De alinea‑tabs

Controlertaal instellen

Aspose.Slides biedt PortionFormat.language_id, waarmee u de controlertaal voor een tekstgedeelte kunt instellen. De controlertaal bepaalt de taal die wordt gebruikt voor spelling‑ en grammaticacontrole in PowerPoint.

Het volgende codevoorbeeld toont hoe u de controlertaal voor een tekstgedeelte instelt:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]

    paragraph = auto_shape.text_frame.paragraphs[0]
    paragraph.portions.clear()

    font = slides.FontData("SimSun")

    text_portion = slides.Portion()
    text_portion.portion_format.complex_script_font = font
    text_portion.portion_format.east_asian_font = font
    text_portion.portion_format.latin_font = font

    # Stel de Id van een controlertaal in.
    text_portion.portion_format.language_id = "zh-CN"

    text_portion.text = "1."
    paragraph.portions.add(text_portion)

    presentation.save("proofing_language.pptx", slides.export.SaveFormat.PPTX)

Standaardtaal instellen

Gebruik LoadOptions.default_text_language om de standaardtaal te definiëren voor tekst die wordt aangemaakt tijdens het laden of creëren van een presentatie.

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.default_text_language = "en-US"

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

    # Voeg een nieuw rechthoekig vorm toe met tekst.
    shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 150, 50)
    shape.text_frame.text = "Sample text"

    # Controleer de taal van de eerste tekstgedeelte.
    portion = shape.text_frame.paragraphs[0].portions[0]
    print(portion.portion_format.language_id)

Standaardtekststijl instellen

Om standaardtekstopmaak op presentatieniveau toe te passen, gebruik Presentation.default_text_style.

Het volgende codevoorbeeld laat zien hoe u een standaard vet lettertype met een grootte van 14 pt instelt voor alle tekst op alle dia’s in een nieuwe presentatie.

import aspose.slides as slides

with slides.Presentation() as presentation:
    # Haal de alinea‑indeling van het hoogste niveau op.
    paragraph_format = presentation.default_text_style.get_level(0)

    if paragraph_format is not None:
        paragraph_format.default_portion_format.font_height = 14
        paragraph_format.default_portion_format.font_bold = slides.NullableBool.TRUE

    presentation.save("default_text_style.pptx", slides.export.SaveFormat.PPTX)

Tekst extraheren met het Alles‑Hoofdletters‑effect

In PowerPoint maakt het toepassen van het All Caps‑lettertype‑effect dat tekst op de dia in hoofdletters verschijnt, zelfs wanneer deze oorspronkelijk in kleine letters is getypt. Wanneer u zo’n tekstgedeelte ophaalt met Aspose.Slides, geeft de bibliotheek de tekst exact terug zoals deze is ingevoerd. Om overeen te komen met de weergegeven tekst, controleer TextCapType en zet de geretourneerde tekenreeks om naar hoofdletters wanneer de waarde ALL is.

Stel dat we het volgende tekstvak hebben op de eerste dia van het bestand sample2.pptx.

Het All Caps‑effect

Het onderstaande codevoorbeeld toont hoe u de tekst kunt extraheren met het All Caps‑effect toegepast:

import aspose.slides as slides

with slides.Presentation("sample2.pptx") as presentation:
    auto_shape = presentation.slides[0].shapes[0]
    text_portion = auto_shape.text_frame.paragraphs[0].portions[0]

    print("Original text:", text_portion.text)

    text_format = text_portion.portion_format.get_effective()
    if text_format.text_cap_type == slides.TextCapType.ALL:
        text = text_portion.text.upper()
        print("All-Caps effect:", text)
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!

Veelgestelde vragen

Hoe wijzig ik tekst in een tabel op een dia?

Om tekst in een tabel op een dia te wijzigen, gebruikt u Table. Loop door de cellen en werk elke cel bij via Cell.text_frame en de alinea‑opmaak via Paragraph.paragraph_format.

Hoe pas ik een verloopkleur toe op tekst in een PowerPoint‑dia?

Om een verloopkleur op tekst toe te passen, gebruikt u PortionFormat.fill_format. Stel FillFormat.fill_type in op FillType.GRADIENT en configureer de verloopstops, richting en transparantie.