Comment formater du texte en .NET

Comment formater du texte en .NET

Aspose.Slides FOSS for .NET offre 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 la couleur au texte d’une présentation.

Guide étape par étape

Étape 1 : Installer le package

dotnet add package 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.AddTextFrame() pour en créer une.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Default text: will be formatted");
prs.Save("output.pptx", SaveFormat.Pptx);

Étape 3 : Accéder au TextFrame

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

var tf = shape.TextFrame;          // if the frame already exists
var tf = shape.AddTextFrame("");   // 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 PortionFormat.FontBold et PortionFormat.FontItalic. Ces propriétés acceptent NullableBool.True, NullableBool.False ou NullableBool.NotDefined (hérite du maître).

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Bold and italic text");

var fmt = tf.Paragraphs[0].Portions[0].PortionFormat;
fmt.FontBold = NullableBool.True;
fmt.FontItalic = NullableBool.True;

prs.Save("bold-italic.pptx", SaveFormat.Pptx);

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

Définissez PortionFormat.FontHeight pour la taille (en points) et utilisez FillFormat pour la couleur.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 500, 150);
var tf = shape.AddTextFrame("Large corporate-blue heading");

var fmt = tf.Paragraphs[0].Portions[0].PortionFormat;
fmt.FontHeight = 32;                          // 32pt font
fmt.FontBold = NullableBool.True;
fmt.FillFormat.FillType = FillType.Solid;
fmt.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 0, 70, 127);

prs.Save("colored-text.pptx", SaveFormat.Pptx);

Color.FromArgb(alpha, red, green, blue) accepte les valeurs 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 :

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 600, 100);
var tf = shape.AddTextFrame("");  // start with empty frame

var paragraph = tf.Paragraphs[0];

// First portion: normal text
var portion1 = paragraph.Portions[0];
portion1.Text = "Normal text followed by ";
portion1.PortionFormat.FontHeight = 20;

// Second portion: bold red text
var portion2 = new Portion();
portion2.Text = "bold red text";
portion2.PortionFormat.FontHeight = 20;
portion2.PortionFormat.FontBold = NullableBool.True;
portion2.PortionFormat.FillFormat.FillType = FillType.Solid;
portion2.PortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(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 FillFormat.FillType = 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

PortionFormat.FontBold attend NullableBool.True, pas le C# true. L’affectation du C# true ne compilera pas car les types sont incompatibles.

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

La propriété LatinFont 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 ?

Ensemble PortionFormat.LatinFont:

fmt.LatinFont = new FontData("Arial");

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

Comment définir l’alignement du paragraphe ?

Utilisez ParagraphFormat.Alignment:

tf.Paragraphs[0].ParagraphFormat.Alignment = TextAlignment.Center;

Valeurs prises en charge : Left, Center, Right, Justify.

Comment définir l’espacement des lignes ?

Utilisez ParagraphFormat.SpaceBefore (points avant le paragraphe) ou ParagraphFormat.SpaceAfter (points après le paragraphe) :

tf.Paragraphs[0].ParagraphFormat.SpaceBefore = 12;   // 12pt before
tf.Paragraphs[0].ParagraphFormat.SpaceAfter = 6;     // 6pt after

Voir aussi

 Français