Mise en forme du texte de présentation en .NET
Vue d’ensemble
Cet article montre comment mettre en forme du texte dans des présentations PowerPoint et OpenDocument à l’aide d’Aspose.Slides pour .NET. Il couvre la mise en surbrillance, les couleurs d’arrière‑plan, la transparence, l’espacement des caractères, les propriétés de police, la rotation, l’espacement des paragraphes, le comportement d’ajustement automatique, l’ancrage du texte, les tabulations et les paramètres de langue.
Dans les exemples ci‑dessous, nous utiliserons un fichier nommé sample.pptx, qui contient une seule zone de texte sur la première diapositive avec le texte suivant :

Mettre en surbrillance du texte
Utilisez la ITextFrame.HighlightText lorsque vous devez mettre en surbrillance du texte correspondant à un modèle spécifique dans un cadre de texte. La méthode applique une couleur de surbrillance aux fragments de texte correspondants et peut être utilisée avec TextSearchOptions pour contrôler la façon dont la recherche est effectuée, par exemple pour ne correspondre qu’à des mots entiers.
L’exemple de code ci‑dessous met en surbrillance toutes les occurrences des caractères “try” puis ne met en surbrillance que le mot complet “to”.
using (var presentation = new Presentation("sample.pptx"))
{
// Obtenir la première forme de la première diapositive.
var shape = (IAutoShape)presentation.Slides[0].Shapes[0];
// Mettre en surbrillance le mot "try" dans la forme.
shape.TextFrame.HighlightText("try", Color.LightBlue);
var searchOptions = new TextSearchOptions()
{
WholeWordsOnly = true
};
// Mettre en surbrillance le mot "to" dans la forme.
shape.TextFrame.HighlightText("to", Color.Violet, searchOptions, null);
presentation.Save("highlighted_text.pptx", SaveFormat.Pptx);
}
Le résultat :

Mettre en surbrillance du texte à l’aide d’expressions régulières
La ITextFrame.HighlightRegex met en surbrillance les correspondances de texte trouvées par une expression régulière. En .NET, cette API est exposée sur ITextFrame.
L’exemple de code ci‑dessus met en surbrillance tous les mots contenant sept caractères ou plus :
using (var presentation = new Presentation(folderPath + "sample.pptx"))
{
var shape = (IAutoShape)presentation.Slides[0].Shapes[0];
var regex = new Regex(@"\b[^\s]{7,}\b");
// Mettre en surbrillance tous les mots de sept caractères ou plus.
shape.TextFrame.HighlightRegex(regex, Color.Yellow, null);
presentation.Save(folderPath + "highlighted_text_using_regex.pptx", SaveFormat.Pptx);
}
Le résultat :

Définir la couleur d’arrière‑plan du texte
Utilisez IParagraphFormat.DefaultPortionFormat pour définir la couleur de surbrillance par défaut d’un paragraphe, ou utilisez IPortionFormat.HighlightColor pour des portions de texte individuelles.
L’exemple de code suivant montre comment définir la couleur d’arrière‑plan pour le paragraphe entier :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Définir la couleur de surbrillance pour le paragraphe entier.
paragraph.ParagraphFormat.DefaultPortionFormat.HighlightColor.Color = Color.LightGray;
presentation.Save("gray_paragraph.pptx", SaveFormat.Pptx);
}
Le résultat :

L’exemple de code ci‑dessous montre comment définir la couleur d’arrière‑plan pour les portions de texte en gras :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Définir la couleur de surbrillance pour la portion de texte.
portion.PortionFormat.HighlightColor.Color = Color.LightGray;
}
}
presentation.Save("gray_text_portions.pptx", SaveFormat.Pptx);
}
Le résultat :

Aligner les paragraphes de texte
Utilisez IParagraphFormat.Alignment pour définir l’alignement des paragraphes à l’intérieur d’un cadre de texte. La valeur peut être centrée, alignée à gauche, à droite, justifiée, etc.
L’exemple de code suivant montre comment aligner le paragraphe au centre :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Définir l'alignement du paragraphe au centre.
paragraph.ParagraphFormat.Alignment = TextAlignment.Center;
presentation.Save("aligned_paragraph.pptx", SaveFormat.Pptx);
}
Le résultat :

Définir la transparence du texte
La transparence du texte est contrôlée via le composant alpha de la couleur attribuée à IPortionFormat.FillFormat. Dans les exemples ci‑dessous, alpha = 50 est une valeur de canal alpha ARGB sur l’échelle 0‑255, et non un pourcentage de transparence.
L’exemple de code suivant montre comment appliquer la transparence au paragraphe entier :
int alpha = 50;
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Définir la couleur de remplissage du texte en couleur transparente.
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.FillType = FillType.Solid;
paragraph.ParagraphFormat.DefaultPortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Black);
presentation.Save("transparent_paragraph.pptx", SaveFormat.Pptx);
}
Le résultat :

L’exemple de code suivant montre comment appliquer la transparence aux portions de texte en gras :
int alpha = 50;
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Définir la transparence de la portion de texte.
portion.PortionFormat.FillFormat.FillType = FillType.Solid;
portion.PortionFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(alpha, Color.Black);
}
}
presentation.Save("transparent_text_portions.pptx", SaveFormat.Pptx);
}
Le résultat :

Définir l’espacement des caractères du texte
Utilisez IBasePortionFormat.Spacing pour augmenter ou réduire l’espacement entre les caractères dans une zone de texte.
Le code C# suivant montre comment augmenter l’espacement des caractères dans le paragraphe entier :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Remarque : utilisez des valeurs négatives pour comprimer l'espacement des caractères.
paragraph.ParagraphFormat.DefaultPortionFormat.Spacing = 3; // Élargir l'espacement des caractères.
presentation.Save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
}
Le résultat :

L’exemple de code ci‑dessus montre comment augmenter l’espacement des caractères dans les portions de texte en gras :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Remarque : utilisez des valeurs négatives pour comprimer l'espacement des caractères.
portion.PortionFormat.Spacing = 3; // Élargir l'espacement des caractères.
}
}
presentation.Save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
}
Le résultat :

Désactiver le crénage pour des polices spécifiques
Dans certains cas, le texte rendu par Aspose.Slides peut paraître légèrement plus serré que le même texte affiché dans PowerPoint. Cela peut se produire parce que PowerPoint ignore les données de crénage pour certaines polices, même lorsque la police contient des informations de crénage valides et que le crénage est activé dans les paramètres de PowerPoint.
Pour que le rendu soit plus proche de PowerPoint dans ces cas, vous pouvez désactiver le crénage pour les portions de texte qui utilisent la police concernée. Définissez IPortionFormat.KerningMinimalSize sur une valeur nettement supérieure à la taille réelle de la police :
using (var presentation = new Presentation("presentation.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var targetFont = "Roboto";
foreach (var paragraph in autoShape.TextFrame.Paragraphs)
{
foreach (var portion in paragraph.Portions)
{
if ((portion.PortionFormat.LatinFont != null &&
portion.PortionFormat.LatinFont.FontName == targetFont) ||
(portion.PortionFormat.EastAsianFont != null &&
portion.PortionFormat.EastAsianFont.FontName == targetFont) ||
(portion.PortionFormat.ComplexScriptFont != null &&
portion.PortionFormat.ComplexScriptFont.FontName == targetFont))
{
portion.PortionFormat.KerningMinimalSize = 100;
}
}
}
presentation.Save("output.pptx", SaveFormat.Pptx);
}
Ce paramètre empêche l’application du crénage aux portions de texte correspondantes et peut aider à aligner le rendu d’Aspose.Slides sur la sortie visuelle de PowerPoint pour les polices affectées par ce comportement spécifique à PowerPoint.
Gérer les propriétés de police du texte
Les propriétés de police peuvent être définies au niveau du paragraphe via IParagraphFormat.DefaultPortionFormat ou sur des portions individuelles via IPortionFormat.
Le code suivant définit la police et le style de texte pour le paragraphe entier : il applique la taille de police, le gras, l’italique, le soulignement pointillé et la police Times New Roman à toutes les portions du paragraphe.
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
// Définir les propriétés de police pour le paragraphe.
paragraph.ParagraphFormat.DefaultPortionFormat.FontHeight = 12;
paragraph.ParagraphFormat.DefaultPortionFormat.FontBold = NullableBool.True;
paragraph.ParagraphFormat.DefaultPortionFormat.FontItalic = NullableBool.True;
paragraph.ParagraphFormat.DefaultPortionFormat.FontUnderline = TextUnderlineType.Dotted;
paragraph.ParagraphFormat.DefaultPortionFormat.LatinFont = new FontData("Times New Roman");
presentation.Save("font_properties_for_paragraph.pptx", SaveFormat.Pptx);
}
Le résultat :

L’exemple de code ci‑dessous applique des propriétés similaires aux portions de texte en gras :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
foreach (var portion in paragraph.Portions)
{
if (portion.PortionFormat.GetEffective().FontBold)
{
// Définir les propriétés de police pour la portion de texte.
portion.PortionFormat.FontHeight = 13;
portion.PortionFormat.FontItalic = NullableBool.True;
portion.PortionFormat.FontUnderline = TextUnderlineType.Dotted;
portion.PortionFormat.LatinFont = new FontData("Times New Roman");
}
}
presentation.Save("font_properties_for_text_portions.pptx", SaveFormat.Pptx);
}
Le résultat :

Définir la rotation du texte
Utilisez ITextFrameFormat.TextVerticalType pour définir une orientation de texte prédéfinie à l’intérieur d’une forme.
L’exemple de code suivant définit l’orientation du texte dans la forme sur Vertical270, ce qui fait pivoter le texte de 90 degrés dans le sens inverse des aiguilles d’une montre :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
autoShape.TextFrame.TextFrameFormat.TextVerticalType = TextVerticalType.Vertical270;
presentation.Save("text_rotation.pptx", SaveFormat.Pptx);
}
Le résultat :

Définir une rotation personnalisée pour les cadres de texte
Utilisez ITextFrameFormat.RotationAngle pour définir un angle de rotation personnalisé pour un ITextFrame.
L’exemple de code ci‑dessus fait pivoter le cadre de texte de 3 degrés dans le sens des aiguilles d’une montre à l’intérieur de la forme :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
autoShape.TextFrame.TextFrameFormat.RotationAngle = 3;
presentation.Save("custom_text_rotation.pptx", SaveFormat.Pptx);
}
Le résultat :

Définir l’interligne des paragraphes
Aspose.Slides fournit IParagraphFormat.SpaceAfter, IParagraphFormat.SpaceBefore et IParagraphFormat.SpaceWithin pour contrôler l’espacement des paragraphes. Ces propriétés s’utilisent ainsi :
- Utilisez une valeur positive pour spécifier l’interligne en pourcentage de la hauteur de ligne.
- Utilisez une valeur négative pour spécifier l’interligne en points.
L’exemple de code suivant montre comment spécifier l’interligne à l’intérieur du paragraphe :
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.ParagraphFormat.SpaceWithin = 200;
presentation.Save("line_spacing.pptx", SaveFormat.Pptx);
}
Le résultat :

Définir le type d’ajustement automatique pour les cadres de texte
ITextFrameFormat.AutofitType détermine le comportement du texte lorsqu’il dépasse les limites de son conteneur. Utilisez‑le pour contrôler si le texte se rétrécit, déborde ou redimensionne automatiquement la forme.
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
autoShape.TextFrame.TextFrameFormat.AutofitType = TextAutofitType.Shape;
presentation.Save("autofit_type.pptx", SaveFormat.Pptx);
}
Définir l’ancre des cadres de texte
ITextFrameFormat.AnchoringType définit la façon dont le texte est positionné verticalement à l’intérieur d’une forme, par exemple en haut, au centre ou en bas.
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
autoShape.TextFrame.TextFrameFormat.AnchoringType = TextAnchorType.Bottom;
presentation.Save("text_anchor.pptx", SaveFormat.Pptx);
}
Définir la tabulation du texte
Utilisez IParagraphFormat.DefaultTabSize et IParagraphFormat.Tabs pour configurer les tabulations dans un paragraphe.
using (var presentation = new Presentation("sample.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.ParagraphFormat.DefaultTabSize = 100;
paragraph.ParagraphFormat.Tabs.Add(30, TabAlignment.Left);
presentation.Save("paragraph_tabs.pptx", SaveFormat.Pptx);
}
Le résultat :

Définir la langue de vérification
Aspose.Slides fournit IPortionFormat.LanguageId, qui permet de définir la langue de vérification orthographique et grammaticale pour une portion de texte. Cette langue détermine les règles de vérification utilisées dans PowerPoint.
L’exemple de code suivant montre comment définir la langue de vérification pour une portion de texte :
using (var presentation = new Presentation("presentation.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var paragraph = autoShape.TextFrame.Paragraphs[0];
paragraph.Portions.Clear();
var font = new FontData("SimSun");
var textPortion = new Portion();
textPortion.PortionFormat.ComplexScriptFont = font;
textPortion.PortionFormat.EastAsianFont = font;
textPortion.PortionFormat.LatinFont = font;
// Définir l'Id d'une langue de vérification.
textPortion.PortionFormat.LanguageId = "zh-CN";
textPortion.Text = "1。";
paragraph.Portions.Add(textPortion);
presentation.Save("proofing_language.pptx", SaveFormat.Pptx);
}
Définir la langue par défaut
Utilisez LoadOptions.DefaultTextLanguage pour définir la langue par défaut du texte créé lors du chargement ou de la création d’une présentation.
var loadOptions = new LoadOptions();
loadOptions.DefaultTextLanguage = "en-US";
using (var presentation = new Presentation(loadOptions))
{
var slide = presentation.Slides[0];
// Ajouter une nouvelle forme rectangulaire avec du texte.
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
shape.TextFrame.Text = "Sample text";
// Vérifier la langue de la première portion.
var portion = shape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine(portion.PortionFormat.LanguageId);
}
Définir le style de texte par défaut
Pour appliquer un formatage de texte par défaut au niveau de la présentation, utilisez IPresentation.DefaultTextStyle.
L’exemple de code suivant montre comment définir une police en gras de taille 14 pt par défaut pour tout le texte de toutes les diapositives d’une nouvelle présentation.
using (var presentation = new Presentation())
{
// Obtenir le format de paragraphe de niveau supérieur.
var paragraphFormat = presentation.DefaultTextStyle.GetLevel(0);
if (paragraphFormat != null)
{
paragraphFormat.DefaultPortionFormat.FontHeight = 14;
paragraphFormat.DefaultPortionFormat.FontBold = NullableBool.True;
}
presentation.Save("default_text_style.pptx", SaveFormat.Pptx);
}
Extraire du texte avec l’effet « Tout en majuscules »
Dans PowerPoint, appliquer l’effet de police All Caps fait apparaître le texte en majuscules sur la diapositive même s’il a été saisi en minuscules. Lorsque vous récupérez une telle portion de texte avec Aspose.Slides, la bibliothèque renvoie le texte exactement tel qu’il a été entré. Pour obtenir le texte affiché, consultez TextCapType et convertissez la chaîne renvoyée en majuscules lorsque la valeur est All.
Supposons que nous ayons la zone de texte suivante sur la première diapositive du fichier sample2.pptx.

L’exemple de code ci‑dessus montre comment extraire le texte avec l’effet All Caps appliqué :
using (var presentation = new Presentation("sample2.pptx"))
{
var autoShape = (IAutoShape)presentation.Slides[0].Shapes[0];
var textPortion = autoShape.TextFrame.Paragraphs[0].Portions[0];
Console.WriteLine($"Original text: {textPortion.Text}");
var textFormat = textPortion.PortionFormat.GetEffective();
if (textFormat.TextCapType == TextCapType.All)
{
var text = textPortion.Text.ToUpper();
Console.WriteLine($"All-Caps effect: {text}");
}
}
Sortie :
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Comment modifier le texte dans un tableau d’une diapositive ?
Pour modifier le texte dans un tableau d’une diapositive, utilisez ITable. Parcourez les cellules et mettez à jour chaque cellule via ICell.TextFrame et le formatage des paragraphes via IParagraph.ParagraphFormat.
Comment appliquer une couleur dégradée au texte d’une diapositive PowerPoint ?
Pour appliquer une couleur dégradée au texte, utilisez IPortionFormat.FillFormat. Définissez IFillFormat.FillType sur FillType.Gradient et configurez les arrêts du dégradé, la direction et la transparence.