Comment formater du texte en Python

Comment formater du texte en Python

Aspose.Slides FOSS for Python fournit un formatage de texte granulaire via la classe PortionFormat. Un Portion est la plus petite unité indépendante de texte ; il correspond à une seule séquence de formatage au sein d’un paragraphe. Ce guide montre comment appliquer le gras, l’italique, la taille de police et le formatage de couleur au texte d’une présentation.

Guide étape par étape

Étape 1 : Installer le package

pip install aspose-slides-foss

Étape 2 : Ajouter une forme avec un cadre de texte

Avant de formater le texte, une forme doit contenir un TextFrame. Utilisez shape.add_text_frame() pour en créer une.

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]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Default text: will be formatted")
    prs.save("output.pptx", SaveFormat.PPTX)

Étape 3 : Accéder au TextFrame

shape.add_text_frame() renvoie l’objet TextFrame. Vous pouvez également le récupérer plus tard via shape.text_frame.

tf = shape.text_frame          # if the frame already exists
tf = shape.add_text_frame("") # creates a new frame

Un TextFrame contient une liste d’objets Paragraph (tf.paragraphs). Chaque Paragraph contient des objets Portion (paragraph.portions).


Étape 4 : Appliquer le format gras et italique

Utilisez portion_format.font_bold et portion_format.font_italic. Ces propriétés acceptent NullableBool.TRUE, NullableBool.FALSE ou NullableBool.NOT_DEFINED (héritées du maître).

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

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Bold and italic text")

    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_bold = NullableBool.TRUE
    fmt.font_italic = NullableBool.TRUE

    prs.save("bold-italic.pptx", SaveFormat.PPTX)

Étape 5 : définir la taille et la couleur de la police

Définissez portion_format.font_height pour la taille (en points) et utilisez fill_format pour la couleur.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Large corporate-blue heading")

    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32                          # 32pt font
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    prs.save("colored-text.pptx", SaveFormat.PPTX)

Color.from_argb(alpha, red, green, blue) accepte des valeurs de 0 à 255 pour chaque canal.


Étape 6 : Plusieurs parties dans un même paragraphe

Un seul paragraphe peut contenir plusieurs portions avec un formatage différent. Ajoutez un nouveau Portion à la collection portions d’un paragraphe :

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 600, 100)
    tf = shape.add_text_frame("")  # start with empty frame

    paragraph = tf.paragraphs[0]

    # First portion: normal text
    portion1 = paragraph.portions[0]
    portion1.text = "Normal text followed by "
    portion1.portion_format.font_height = 20

    # Second portion: bold red text
    portion2 = slides.Portion()
    portion2.text = "bold red text"
    portion2.portion_format.font_height = 20
    portion2.portion_format.font_bold = NullableBool.TRUE
    portion2.portion_format.fill_format.fill_type = FillType.SOLID
    portion2.portion_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)
    paragraph.portions.add(portion2)

    prs.save("mixed-format.pptx", SaveFormat.PPTX)

Problèmes courants et solutions

Le texte apparaît en noir même après avoir défini la couleur

Assurez-vous que fill_format.fill_type = FillType.SOLID est défini avant d’attribuer la couleur. Sans définir le type de remplissage, le changement de couleur peut ne pas avoir d’effet.

NullableBool.TRUE vs True

portion_format.font_bold attend NullableBool.TRUE, pas le Python True. L’affectation du Python True peut déclencher une TypeError ou ne rien faire silencieusement selon la liaison.

La police n’apparaît pas dans le fichier enregistré

La propriété latin_font définit la famille de polices latines. Si elle n’est pas définie, la police du thème de la présentation est utilisée. Les polices personnalisées doivent être incorporées ou disponibles sur la machine de visualisation.


Foire aux questions

Comment changer la famille de police ?

Définir portion_format.latin_font:

fmt.latin_font = slides.FontData("Arial")

FontData accepte le nom de la famille de polices sous forme de chaîne.

Comment définir l’alignement du paragraphe ?

Utilisez paragraph_format.alignment:

from aspose.slides_foss import TextAlignment

tf.paragraphs[0].paragraph_format.alignment = TextAlignment.CENTER

Valeurs prises en charge : LEFT, CENTER, RIGHT, JUSTIFY.

Comment définir l’interligne ?

Utilisez paragraph_format.space_before (points avant le paragraphe) ou paragraph_format.space_after (points après le paragraphe) :

tf.paragraphs[0].paragraph_format.space_before = 12   # 12pt before
tf.paragraphs[0].paragraph_format.space_after = 6     # 6pt after

Voir aussi

 Français