Форматирование текста PowerPoint на C++
Выделение текста
Новый метод HighlightText добавлен в классы ITextFrame и TextFrame. Он позволяет выделять часть текста фоном, используя образец текста, аналогично инструменту Text Highlight Color в PowerPoint 2019.
Ниже показан фрагмент кода, демонстрирующий использование этой функции:
Выделение текста с помощью регулярных выражений
Новый метод HighlightRegex добавлен в классы ITextFrame и TextFrame. Он позволяет выделять часть текста фоном, используя регулярное выражение, аналогично инструменту Text Highlight Color в 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"Black");
portion1->get_PortionFormat()->set_FontBold(NullableBool::True);
auto portion2 = System::MakeObject<Portion>(u" Red ");
auto portion3 = System::MakeObject<Portion>(u"Black");
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"Black");
portion1->get_PortionFormat()->set_FontBold(NullableBool::True);
auto portion2 = System::MakeObject<Portion>(u" Red ");
auto portion3 = System::MakeObject<Portion>(u"Black");
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"Red");
};
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 for C++ поддерживает добавление текста на слайды, но в этой теме мы посмотрим, как контролировать выравнивание абзацев текста на слайде. Пожалуйста, выполните следующие шаги для выравнивания абзацев текста с помощью Aspose.Slides for C++ :
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд, используя его индекс.
- Доступ к Placeholder‑формам, присутствующим на слайде, и приведение их к типу AutoShape.
- Получите Paragraph (который нужно выровнять) из TextFrame, предоставляемого AutoShape.
- Выровняйте Paragraph. Абзац может быть выровнен по правому, левому, центральному и выровненному по ширине (Justify) краю.
- Сохраните изменённую презентацию в файл 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 for C++ настроить свойства шрифта абзацев текста на слайдах. Чтобы управлять свойствами шрифта абзаца с помощью Aspose.Slides for C++ :
- Создайте экземпляр класса
Presentation. - Получите ссылку на слайд, используя его индекс.
- Доступ к Placeholder‑формам на слайде и приведение их к AutoShape.
- Получите Paragraph из TextFrame, предоставляемого AutoShape.
- Выравнивайте абзац.
- Доступ к Portion текста абзаца.
- Определите шрифт с помощью FontData и соответственно задайте Font для Portion.
- Установите шрифт полужирным.
- Установите шрифт курсивом.
- Установите цвет шрифта с помощью FillFormat, предоставляемого объектом Portion.
- Сохраните изменённую презентацию в файл PPTX.
Реализация вышеописанных шагов приведена ниже. Она берёт пустую презентацию и форматирует шрифты на одном из слайдов.
Управление семейством шрифтов текста
Portion используется для хранения текста с единым стилем форматирования в абзаце. В этой статье показано, как с помощью Aspose.Slides for C++ создать текстовое поле с некоторым текстом, а затем задать конкретный шрифт и различные свойства семейства шрифтов. Чтобы создать текстовое поле и задать свойства шрифта текста в нём:
- Создайте экземпляр класса
Presentation. - Получите ссылку на слайд, используя его индекс.
- Добавьте AutoShape типа Rectangle на слайд.
- Удалите стиль заливки, связанный с AutoShape.
- Доступ к TextFrame AutoShape.
- Добавьте некоторый текст в TextFrame.
- Доступ к объекту Portion, связанному с TextFrame.
- Определите шрифт, который будет использоваться для Portion.
- Установите другие свойства шрифта, такие как полужирный, курсив, подчёркивание, цвет и высота, используя соответствующие свойства объекта 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 pt для всех текстовых фрагментов в абзаце.
paragraph->get_ParagraphFormat()->get_DefaultPortionFormat()->set_FontHeight(20.0f);
// Устанавливает размер шрифта 20 pt для текущих текстовых фрагментов в абзаце.
for (auto&& portion : paragraph->get_Portions())
{
portion->get_PortionFormat()->set_FontHeight(20.0f);
}
}
presentation->Save(u"output.pptx", SaveFormat::Pptx);
Установка вращения текста
Aspose.Slides for C++ позволяет разработчикам вращать текст. Текст может быть установлен как Horizontal, Vertical, Vertical270, WordArtVertical, EastAsianVertical, MongolianVertical или WordArtVerticalRightToLeft. Чтобы вращать текст любого TextFrame, выполните следующие шаги:
- Создайте экземпляр класса
Presentation. - Доступ к первому слайду.
- Добавьте любую форму на слайд.
- Доступ к TextFrame.
- Поверните текст.
- Сохраните файл на диск.
Вкладки и эффективные вкладки в презентации
- Свойство EffectiveTabs.ExplicitTabCount (2 в нашем случае) равно Tabs.Count.
- Коллекция EffectiveTabs включает все вкладки (из коллекции Tabs и вкладки по умолчанию).
- Свойство EffectiveTabs.ExplicitTabCount (2 в нашем случае) равно Tabs.Count.
- Свойство EffectiveTabs.DefaultTabSize (294) показывает расстояние между вкладками по умолчанию (3 и 4 в нашем примере).
- EffectiveTabs.GetTabByIndex(index) с index = 0 вернёт первую явную вкладку (Position = 731), index = 1 — вторую (Position = 1241). При запросе index = 2 будет возвращена первая вкладка по умолчанию (Position = 1470) и т.д.
- EffectiveTabs.GetTabAfterPosition(pos) используется для получения следующей табуляции после некоторого текста. Например, у вас есть текст: “Helloworld!”. Чтобы отрисовать такой текст, нужно знать, где начать рисовать “world!”. Сначала вычислите длину “Hello” в пикселях и вызовите GetTabAfterPosition с этим значением. Вы получите позицию следующей табуляции для рисования “world!”.
Межстрочный интервал абзаца
Aspose.Slides предоставляет свойства в ParagraphFormat — SpaceAfter, SpaceBefore и SpaceWithin — которые позволяют управлять межстрочным интервалом абзаца. Эти три свойства используются так:
- Чтобы задать межстрочный интервал в процентах, укажите положительное значение.
- Чтобы задать межстрочный интервал в пунктах, укажите отрицательное значение.
Например, чтобы применить интервал 16 pt к абзацу, установите свойство SpaceBefore в -16.
Так задаётся межстрочный интервал для конкретного абзаца:
- Загрузите презентацию, содержащую AutoShape с некоторым текстом.
- Получите ссылку на слайд через его индекс.
- Доступ к TextFrame.
- Доступ к Paragraph.
- Установите свойства Paragraph.
- Сохраните презентацию.
Этот 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();
// Получить доступ к Paragraph
auto para = tf1->get_Paragraphs()->idx_get(0);
// Установить свойства Paragraph
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 for C++ позволяет разработчикам задавать свойство AutofitType для любого текстового фрейма. AutofitType может быть установлен в Normal или Shape. При значении Normal форма остаётся прежней, а текст подстраивается без изменения формы, тогда как при значении Shape форма изменяется так, чтобы в неё помещался только необходимый текст. Чтобы установить свойство AutofitType, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Доступ к первому слайду.
- Добавьте любую форму на слайд.
- Доступ к TextFrame.
- Установите AutofitType TextFrame.
- Сохраните файл на диск.
Установка привязки (Anchor) текстового фрейма
Aspose.Slides for C++ позволяет разработчикам задавать привязку любого TextFrame. TextAnchorType указывает, где располагается текст внутри формы. TextAnchorType может быть установлен в Top, Center, Bottom, Justified или Distributed. Чтобы задать привязку любого TextFrame, выполните следующие шаги:
- Создайте экземпляр класса
Presentation. - Доступ к первому слайду.
- Добавьте любую форму на слайд.
- Доступ к TextFrame.
- Установите TextAnchorType TextFrame.
- Сохраните файл на диск.
Установка пользовательского угла вращения для текстового фрейма
Aspose.Slides for 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");
// set the Id of a proofing language
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"New Text");
// Проверяет язык первой части
System::Console::WriteLine(textFrame->get_Paragraph(0)->get_Portion(0)->get_PortionFormat()->get_LanguageId());
Установка стиля текста по умолчанию
Если вам нужно применить одинаковое форматирование текста ко всем элементам текста презентации сразу, вы можете использовать метод get_DefaultTextStyle интерфейса IPresentation и задать предпочтительное форматирование. Пример кода ниже показывает, как задать полужирный шрифт (14 pt) по умолчанию для текста на всех слайдах новой презентации.
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();
Извлечение текста с эффектом All Caps
В PowerPoint применение эффекта All Caps делает текст заглавными буквами на слайде, даже если он был введён строчными. При получении такой части текста с помощью Aspose.Slides библиотека возвращает текст точно в том виде, в каком он был введён. Чтобы обработать это, проверьте TextCapType — если он указывает All, просто преобразуйте возвращённую строку в верхний регистр, чтобы ваш вывод совпадал с тем, что видят пользователи на слайде.
Предположим, у нас есть следующий текстовый блок на первом слайде файла sample2.pptx.

Пример кода ниже показывает, как извлечь текст с применённым эффектом All Caps:
auto presentation = MakeObject<Presentation>(u"sample2.pptx");
auto autoShape = ExplicitCast<IAutoShape>(presentation->get_Slide(0)->get_Shape(0));
auto textPortion = autoShape->get_TextFrame()->get_Paragraph(0)->get_Portion(0);
Console::WriteLine(u"Original text: " + textPortion->get_Text());
auto textFormat = textPortion->get_PortionFormat()->GetEffective();
if (textFormat->get_TextCapType() == TextCapType::All)
{
auto text = textPortion->get_Text().ToUpper();
Console::WriteLine(u"All-Caps effect: " + text);
}
presentation->Dispose();
Вывод:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Как изменить текст в таблице на слайде?
Чтобы изменить текст в таблице на слайде, необходимо использовать объект ITable. Можно перебрать все ячейки таблицы и изменить текст в каждой ячейке, получив её текстовый фрейм и свойства формата абзаца внутри каждой ячейки.
Как применить градиентный цвет к тексту в слайде PowerPoint?
Чтобы применить градиентный цвет к тексту, используйте метод get_FillFormat в PortionFormat. Установите тип заполнения в Gradient, где можно задать начальный и конечный цвета градиента, а также другие свойства, такие как направление и прозрачность, чтобы создать градиентный эффект для текста.