Как форматировать текст в .NET

Как форматировать текст в .NET

Aspose.Slides FOSS for .NET provides fine-grained text formatting through the PortionFormat класс. A Portion является наименьшей независимой единицей текста; она соответствует одному запуску форматирования внутри абзаца. Это руководство показывает, как применять полужирный, курсив, размер шрифта и цветовое форматирование к тексту в презентации.

Пошаговое руководство

Шаг 1: Установите пакет

dotnet add package Aspose.Slides.Foss

Шаг 2: Добавьте форму с текстовым фреймом

Прежде чем форматировать текст, фигура должна содержать TextFrame. Используйте shape.AddTextFrame() чтобы создать её.

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);

Шаг 3: Получите доступ к TextFrame

shape.AddTextFrame() возвращает TextFrame объект. Вы также можете получить его позже через shape.TextFrame.

var tf = shape.TextFrame;          // if the frame already exists
var tf = shape.AddTextFrame("");   // creates a new frame

A TextFrame содержит список Paragraph объектов (tf.Paragraphs) Paragraph содержит Portion объектов (paragraph.Portions).


Шаг 4: Примените полужирный и курсивный формат

Используйте PortionFormat.FontBold и PortionFormat.FontItalic. Эти свойства принимают NullableBool.True, NullableBool.False, или NullableBool.NotDefined (наследовать от master).

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);

Шаг 5: Установите размер шрифта и цвет

Установить PortionFormat.FontHeight для размера (в пунктах) и использовать FillFormat для цвета.

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) принимает значения 0-255 для каждого канала.


Шаг 6: Несколько фрагментов в одном абзаце

Один абзац может содержать несколько частей с разным форматированием. Добавьте новый Portion к абзацу’s Portions коллекция:

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);

Распространённые проблемы и их решения

Текст остаётся чёрным даже после установки цвета

Убедитесь FillFormat.FillType = FillType.Solid установлен перед назначением цвета. Без установки типа заливки изменение цвета может не дать эффекта.

NullableBool.True против true

PortionFormat.FontBold ожидает NullableBool.True, а не C# true. Присваивание C# true не скомпилируется, потому что типы несовместимы.

Шрифт не отображается в сохранённом файле

Эта LatinFont свойство задаёт семейство шрифтов Latin. Если не указано, используется шрифт темы презентации. Пользовательские шрифты должны быть встроены или доступны на машине просмотра.


Часто задаваемые вопросы

Как изменить семейство шрифта?

Установить PortionFormat.LatinFont:

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

FontData принимает название семейства шрифтов в виде строки.

Как задать выравнивание абзаца?

Использовать ParagraphFormat.Alignment:

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

Поддерживаемые значения: Left, Center, Right, Justify.

Как задать межстрочный интервал?

Использовать ParagraphFormat.SpaceBefore (точки перед абзацем) или ParagraphFormat.SpaceAfter (пункты после абзаца):

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

См. также

 Русский