Comment mettre en forme le texte dans .NET
Aspose.Slides FOSS for .NET provides fine-grained text formatting through the PortionFormat classe. A Portion est la plus petite unité indépendante de texte ; elle 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 dans 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 le TextFrame objet. 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 frameA TextFrame contient une liste de Paragraph objets (tf.Paragraphs). Chaque Paragraph contient Portion objets (paragraph.Portions).
Étape 4 : Appliquer le formatage 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 de police et la couleur
Définir 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 des valeurs 0-255 pour chaque canal.
Étape 6 : Plusieurs portions dans un même paragraphe
Un seul paragraphe peut contenir plusieurs parties avec une mise en forme différente. Ajoutez un nouveau Portion à la collection d’un paragraphe Portions collection :
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 FillFormat.FillType = FillType.Solid est défini avant d’assigner 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. Affectation du C# true ne compilera pas car les types sont incompatibles.
La police n’apparaît pas dans le fichier enregistré
Le LatinFont la propriété définit la famille de polices Latin. Si elle n’est pas définie, la police du thème de 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 polices ?
Définir 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 ?
Utiliser ParagraphFormat.Alignment:
tf.Paragraphs[0].ParagraphFormat.Alignment = TextAlignment.Center;Valeurs prises en charge : Left, Center, Right, Justify.
Comment définir l’espacement des lignes ?
Utiliser 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