Форматирование текста
Выделение текста
В классах ITextFrame и TextFrame был добавлен новый метод HighlightText. Он позволяет выделять часть текста на фоне, используя образец текста, аналогично инструменту цвета выделения текста в PowerPoint 2019.
Ниже приведен фрагмент кода, демонстрирующий, как использовать эту функцию:
Выделение текста с использованием регулярного выражения
В классах ITextFrame и TextFrame был добавлен новый метод HighlightRegex. Он позволяет выделять часть текста на фоне с использованием регулярных выражений, аналогично инструменту цвета выделения текста в PowerPoint 2019.
Ниже приведен фрагмент кода, демонстрирующий, как использовать эту функцию:
Установка фона текста
Aspose.Slides позволяет вам указать предпочитаемый цвет фона для текста.
Этот код на C++ показывает, как установить цвет фона для всего текста:
{
auto pres = System::MakeObject<Presentation>();
System::SharedPtr<IAutoShape> autoShape = pres->get_Slide(0)->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50.0f, 50.0f, 200.0f, 100.0f);
auto paragraphs = autoShape->get_TextFrame()->get_Paragraphs();
paragraphs->Clear();
System::SharedPtr<Paragraph> para = System::MakeObject<Paragraph>();
auto portion1 = System::MakeObject<Portion>(u"Черный");
portion1->get_PortionFormat()->set_FontBold(NullableBool::True);
auto portion2 = System::MakeObject<Portion>(u" Красный ");
auto portion3 = System::MakeObject<Portion>(u"Черный");
portion3->get_PortionFormat()->set_FontBold(NullableBool::True);
auto paragraphPortions = para->get_Portions();
paragraphPortions->Add(portion1);
paragraphPortions->Add(portion2);
paragraphPortions->Add(portion3);
paragraphs->Add(para);
pres->Save(u"text.pptx", SaveFormat::Pptx);
}
{
auto pres = System::MakeObject<Presentation>(u"text.pptx");
auto autoShape = System::ExplicitCast<IAutoShape>(pres->get_Slide(0)->get_Shape(0));
auto portions = autoShape->get_TextFrame()->get_Paragraph(0)->get_Portions();
for (auto&& portion : portions)
{
portion->get_PortionFormat()->get_HighlightColor()->set_Color(System::Drawing::Color::get_Blue());
}
pres->Save(u"text-red.pptx", SaveFormat::Pptx);
}
Этот код на C++ показывает, как установить цвет фона только для части текста:
{
auto pres = System::MakeObject<Presentation>();
System::SharedPtr<IAutoShape> autoShape = pres->get_Slide(0)->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50.0f, 50.0f, 200.0f, 100.0f);
auto paragraphs = autoShape->get_TextFrame()->get_Paragraphs();
paragraphs->Clear();
System::SharedPtr<Paragraph> para = System::MakeObject<Paragraph>();
auto portion1 = System::MakeObject<Portion>(u"Черный");
portion1->get_PortionFormat()->set_FontBold(NullableBool::True);
auto portion2 = System::MakeObject<Portion>(u" Красный ");
auto portion3 = System::MakeObject<Portion>(u"Черный");
portion3->get_PortionFormat()->set_FontBold(NullableBool::True);
auto paragraphPortions = para->get_Portions();
paragraphPortions->Add(portion1);
paragraphPortions->Add(portion2);
paragraphPortions->Add(portion3);
paragraphs->Add(para);
pres->Save(u"text.pptx", SaveFormat::Pptx);
}
{
auto pres = System::MakeObject<Presentation>(u"text.pptx");
auto autoShape = System::ExplicitCast<IAutoShape>(pres->get_Slide(0)->get_Shape(0));
auto predicate = [](System::SharedPtr<IPortion> portion) -> bool {
return portion->get_Text().Contains(u"Красный");
};
auto portions = autoShape->get_TextFrame()->get_Paragraph(0)->get_Portions();
System::SharedPtr<IPortion> redPortion;
for (auto&& portion : portions)
if (predicate(portion))
redPortion = portion;
redPortion->get_PortionFormat()->get_HighlightColor()->set_Color(System::Drawing::Color::get_Red());
pres->Save(u"text-red.pptx", SaveFormat::Pptx);
}
Выравнивание текстового абзаца
Форматирование текста является одним из ключевых элементов при создании любых документов или презентаций. Мы знаем, что Aspose.Slides для C++ поддерживает добавление текста на слайды, но в этой теме мы увидим, как можно контролировать выравнивание текстовых абзацев на слайде. Пожалуйста, выполните следующие шаги, чтобы выровнять текстовые абзацы с использованием Aspose.Slides для C++:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд, используя его индекс.
- Получите доступ к фигурам-заместителям на слайде и приведите их к типу AutoShape.
- Получите абзац (который нужно выровнять) из TextFrame, доступного через AutoShape.
- Выровняйте абзац. Абзац можно выровнять по правому краю, левому, центру и по ширине.
- Запишите измененную презентацию как файл PPTX.
Имплементация вышеперечисленных шагов представлена ниже.
Установка прозрачности для текста
Эта статья демонстрирует, как установить свойство прозрачности для любой текстовой фигуры с использованием Aspose.Slides. Чтобы установить прозрачность текста, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд.
- Установите цвет тени.
- Запишите презентацию как файл PPTX.
Имплементация вышеперечисленных шагов представлена ниже.
Установка межбуквенного интервала для текста
Aspose.Slides позволяет вам устанавливать расстояние между буквами в текстовом блоке. Таким образом, вы можете регулировать визуальную плотность строки или блока текста, расширяя или сжимая промежутки между символами.
Этот код на C++ показывает, как расширить промежуток для одной строки текста и сжать промежуток для другой строки:
auto presentation = System::MakeObject<Presentation>(u"in.pptx");
auto slide = presentation->get_Slides()->idx_get(0);
auto textBox1 = System::ExplicitCast<IAutoShape>(slide->get_Shapes()->idx_get(0));
auto textBox2 = System::ExplicitCast<IAutoShape>(slide->get_Shapes()->idx_get(1));
textBox1->get_TextFrame()->get_Paragraph(0)->get_ParagraphFormat()->get_DefaultPortionFormat()->set_Spacing(20.0f); // расширить
textBox2->get_TextFrame()->get_Paragraph(0)->get_ParagraphFormat()->get_DefaultPortionFormat()->set_Spacing(-2.0f); // сжать
presentation->Save(u"out.pptx", SaveFormat::Pptx);
Управление свойствами шрифта абзаца
Презентации обычно содержат как текст, так и изображения. Текст можно форматировать различными способами, либо чтобы выделить конкретные разделы и слова, либо чтобы соответствовать корпоративным стилям. Форматирование текста помогает пользователям разнообразить внешний вид содержимого презентации. Эта статья показывает, как использовать Aspose.Slides для C++, чтобы настроить свойства шрифта абзацев текста на слайдах. Для управления свойствами шрифта абзаца с помощью Aspose.Slides для C++:
- Создайте экземпляр класса
Presentation
. - Получите ссылку на слайд, используя его индекс.
- Получите доступ к фигурным заместителям на слайде и приведите их к типу AutoShape.
- Получите абзац из TextFrame, доступного через AutoShape.
- Выровняйте абзац по ширине.
- Получите доступ к текстовой порции абзаца.
- Определите шрифт с помощью FontData и установите шрифт текстовой порции соответственно.
- Установите шрифт как полужирный.
- Установите шрифт как курсивный.
- Установите цвет шрифта с помощью FillFormat, доступного через объект Portion.
- Запишите измененную презентацию в файл PPTX.
Имплементация вышеперечисленных шагов представлена ниже. Она берет неоформленную презентацию и форматирует шрифты на одном из слайдов.
Управление семейством шрифтов текста
Порция используется для хранения текста с аналогичным стилем форматирования в абзаце. Эта статья показывает, как использовать Aspose.Slides для C++, чтобы создать текстовое поле с некоторым текстом, а затем определить конкретный шрифт и различные другие свойства из категории семейства шрифтов. Чтобы создать текстовое поле и установить свойства шрифта текста в нём:
- Создайте экземпляр класса
Presentation
. - Получите ссылку на слайд, используя его индекс.
- Добавьте AutoShape типа Rectangle на слайд.
- Удалите стиль заливки, связанный с AutoShape.
- Получите доступ к TextFrame AutoShape.
- Добавьте текст в TextFrame.
- Получите доступ к объекту Portion, связанному с TextFrame.
- Определите шрифт, который будет использоваться для порции.
- Установите другие свойства шрифта, такие как полужирный, курсивный, подчеркнутый, цвет и высота, используя соответствующие свойства, предоставленные объектом Portion.
- Запишите измененную презентацию как файл PPTX.
Имплементация вышеперечисленных шагов представлена ниже.
Установка размера шрифта для текста
Aspose.Slides позволяет вам выбрать предпочитаемй размер шрифта для существующего текста в абзаце и других текстов, которые могут быть добавлены в абзац позже.
Этот код на C++ показывает, как установить размер шрифта для текстов, содержащихся в абзаце:
auto presentation = System::MakeObject<Presentation>(u"example.pptx");
// Получает первую фигуру, например.
auto shape = presentation->get_Slide(0)->get_Shape(0);
if (System::ObjectExt::Is<IAutoShape>(shape))
{
auto autoShape = System::ExplicitCast<IAutoShape>(shape);
// Получает первый абзац, например.
auto paragraph = autoShape->get_TextFrame()->get_Paragraph(0);
// Устанавливает размер шрифта по умолчанию на 20 пт для всех текстовых порций в абзаце.
paragraph->get_ParagraphFormat()->get_DefaultPortionFormat()->set_FontHeight(20.0f);
// Устанавливает размер шрифта на 20 пт для текущих текстовых порций в абзаце.
for (auto&& portion : paragraph->get_Portions())
{
portion->get_PortionFormat()->set_FontHeight(20.0f);
}
}
presentation->Save(u"output.pptx", SaveFormat::Pptx);
Установка вращения текста
Aspose.Slides для C++ позволяет разработчикам вращать текст. Текст можно настроить таким образом, чтобы он отображался горизонтально, вертикально, вертикально270, WordArtVertical, EastAsianVertical, MongolianVertical или WordArtVerticalRightToLeft. Чтобы повернуть текст в любой TextFrame, выполните следующие шаги:
- Создайте экземпляр класса
Presentation
. - Получите доступ к первому слайду.
- Добавьте любую фигуру на слайд.
- Получите доступ к TextFrame.
- Поверните текст.
- Сохраните файл на диск.
Вкладки и EffectiveTabs в презентации
- Свойство EffectiveTabs.ExplicitTabCount (2 в нашем случае) равно Tabs.Count.
- Коллекция EffectiveTabs включает все вкладки (из коллекции Tabs и стандартные вкладки).
- Свойство EffectiveTabs.DefaultTabSize (294) показывает расстояние между стандартными вкладками (3 и 4 в нашем примере).
- EffectiveTabs.GetTabByIndex(index) с index = 0 вернет первую явную вкладку (Положение = 731), index = 1 - вторую вкладку (Положение = 1241). Если вы попытаетесь получить следующую вкладку с index = 2, она вернет первую стандартную вкладку (Положение = 1470) и т.д.
- EffectiveTabs.GetTabAfterPosition(pos) используется для получения следующей табуляции после некоторого текста. Например, у вас есть текст: “Helloworld!”. Чтобы отобразить этот текст, вы должны знать, с какого места начинать рисовать “world!”. Сначала вам нужно рассчитать длину “Hello” в пикселях и вызвать GetTabAfterPosition с этим значением. Вы получите следующую позицию табуляции для отрисовки “world!”.
Межстрочный интервал абзаца
Aspose.Slides предоставляет свойства в рамках ParagraphFormat
— SpaceAfter
, SpaceBefore
и SpaceWithin
— которые позволяют вам управлять межстрочным интервалом для абзаца. Три свойства используются следующим образом:
- Чтобы указать межстрочный интервал для абзаца в процентах, используйте положительное значение.
- Чтобы указать межстрочный интервал для абзаца в пунктах, используйте отрицательное значение.
Например, вы можете применить межстрочный интервал в 16 пунктов для абзаца, установив свойство SpaceBefore
в -16.
Вот как вы можете указать межстрочный интервал для конкретного абзаца:
- Загрузите презентацию, содержащую AutoShape с текстом в нём.
- Получите ссылку на слайд по его индексу.
- Получите доступ к TextFrame.
- Получите доступ к абзацу.
- Установите свойства абзаца.
- Сохраните презентацию.
Этот код на C++ показывает, как указать межстрочный интервал для абзаца:
// Путь к каталогу документов.
System::String dataDir = GetDataPath();
// Создать экземпляр класса Presentation
auto presentation = System::MakeObject<Presentation>(dataDir + u"Fonts.pptx");
// Получите ссылку на слайд по его индексу
auto sld = presentation->get_Slides()->idx_get(0);
// Получите доступ к TextFrame
auto tf1 = (System::ExplicitCast<IAutoShape>(sld->get_Shapes()->idx_get(0)))->get_TextFrame();
// Получите доступ к абзацу
auto para = tf1->get_Paragraphs()->idx_get(0);
// Установите свойства абзаца
para->get_ParagraphFormat()->set_SpaceWithin(80.0f);
para->get_ParagraphFormat()->set_SpaceBefore(40.0f);
para->get_ParagraphFormat()->set_SpaceAfter(40.0f);
// Сохраните презентацию
presentation->Save(dataDir + u"LineSpacing_out.pptx", SaveFormat::Pptx);
Установка свойства AutofitType текстовой рамки
В этой теме мы рассмотрим различные свойства форматирования текстовой рамки. Эта статья охватывает, как установить свойство AutofitType текстовой рамки, якорь текста и вращение текста в презентации. Aspose.Slides для C++ позволяет разработчикам устанавливать свойство AutofitType для любой текстовой рамки. AutofitType может быть установлен на Normal или Shape. Если установлен на Normal, то форма останется прежней, в то время как текст будет отрегулирован без изменения самой формы, в то время как если свойство AutofitType установлено на Shape, то форма будет изменена таким образом, чтобы в ней содержался только требуемый текст. Чтобы установить свойство AutofitType текстовой рамки, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите доступ к первому слайду.
- Добавьте любую фигуру на слайд.
- Получите доступ к TextFrame.
- Установите AutofitType для TextFrame.
- Сохраните файл на диск.
Установка якоря текстовой рамки
Aspose.Slides для C++ позволяет разработчикам устанавливать якорь для любой текстовой рамки. TextAnchorType указывает, где размещен этот текст в форме. TextAnchorType может быть установлен на Top, Center, Bottom, Justified или Distributed. Чтобы установить якорь для любой текстовой рамки, выполните следующие шаги:
- Создайте экземпляр класса
Presentation
. - Получите доступ к первому слайду.
- Добавьте любую фигуру на слайд.
- Получите доступ к TextFrame.
- Установите TextAnchorType для TextFrame.
- Сохраните файл на диск.
Установка пользовательского угла вращения для текстовой рамки
Aspose.Slides для C++ теперь поддерживает установку пользовательского угла вращения для текстовой рамки. В этой теме мы увидим пример, как установить свойство RotationAngle в Aspose.Slides. Новое свойство RotationAngle было добавлено в интерфейсы IChartTextBlockFormat и ITextFrameFormat, позволяющее установить пользовательский угол вращения для текстовой рамки. Чтобы установить свойство RotationAngle, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Добавьте диаграмму на слайд.
- Установите свойство RotationAngle.
- Запишите презентацию как файл PPTX.
В приведённом ниже примере мы устанавливаем свойство RotationAngle.
Установка языка проверки
Aspose.Slides предоставляет свойство LanguageId (предоставленное классом PortionFormat), которое позволяет вам установить язык проверки для документа PowerPoint. Язык проверки — это язык, для которого проверяются орфография и грамматика в PowerPoint.
Этот код на C++ показывает, как установить язык проверки для PowerPoint:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(pptxFileName);
System::SharedPtr<AutoShape> autoShape = System::ExplicitCast<AutoShape>(pres->get_Slide(0)->get_Shape(0));
System::SharedPtr<IParagraph> paragraph = autoShape->get_TextFrame()->get_Paragraph(0);
System::SharedPtr<IPortionCollection> portions = paragraph->get_Portions();
portions->Clear();
System::SharedPtr<Portion> newPortion = System::MakeObject<Portion>();
System::SharedPtr<IFontData> font = System::MakeObject<FontData>(u"SimSun");
System::SharedPtr<IPortionFormat> portionFormat = newPortion->get_PortionFormat();
portionFormat->set_ComplexScriptFont(font);
portionFormat->set_EastAsianFont(font);
portionFormat->set_LatinFont(font);
portionFormat->set_LanguageId(u"zh-CN"); // установите идентификатор языка проверки
newPortion->set_Text(u"1。");
portions->Add(newPortion);
Установка языка по умолчанию
Этот код на C++ показывает, как установить язык по умолчанию для всей презентации PowerPoint:
System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>();
loadOptions->set_DefaultTextLanguage(u"en-US");
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(loadOptions);
// Добавляет новую фигуру прямоугольной формы с текстом
System::SharedPtr<IAutoShape> shp = pres->get_Slide(0)->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50.0f, 50.0f, 150.0f, 50.0f);
System::SharedPtr<ITextFrame> textFrame = shp->get_TextFrame();
textFrame->set_Text(u"Новый текст");
// Проверка языка первой порции
System::Console::WriteLine(textFrame->get_Paragraph(0)->get_Portion(0)->get_PortionFormat()->get_LanguageId());
Установка стиля текста по умолчанию
Если вам нужно применить одно и то же форматирование текста по умолчанию ко всем текстовым элементам презентации сразу, вы можете использовать метод get_DefaultTextStyle
из интерфейса IPresentation и установить предпочитаемое форматирование. Пример кода ниже показывает, как установить шрифт по умолчанию (14 пт) для текста на всех слайдах новой презентации.
auto presentation = MakeObject<Presentation>();
// Получите формат абзаца верхнего уровня.
auto paragraphFormat = presentation->get_DefaultTextStyle()->GetLevel(0);
if (paragraphFormat != NULL) {
paragraphFormat->get_DefaultPortionFormat()->set_FontHeight(14);
paragraphFormat->get_DefaultPortionFormat()->set_FontBold(NullableBool::True);
}
presentation->Save(u"DefaultTextStyle.pptx", SaveFormat::Pptx);
presentation->Dispose();