Форматирование текста презентации в Python
Обзор
В этой статье показано, как форматировать текст в презентациях PowerPoint и OpenDocument с помощью Aspose.Slides для Python через .NET. Охвачены фоновые цвета, прозрачность, интервал между символами, свойства шрифтов, вращение, отступы абзацев, поведение автоматической подгонки, привязка текста, табуляция и настройки языка.
В примерах ниже мы будем использовать файл с именем “sample.pptx”, который содержит один текстовый блок на первом слайде со следующим текстом:

Чтобы найти и выделить буквальный текст или совпадения регулярных выражений, см. Поиск и замена текста.
Установить цвет фона текста
Используйте ParagraphFormat.default_portion_format чтобы задать цвет выделения по умолчанию для абзаца, либо используйте PortionFormat.highlight_color для отдельных частей текста.
Следующий пример кода показывает, как задать цвет фона для всего абзаца:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Установить цвет выделения для всего абзаца.
paragraph.paragraph_format.default_portion_format.highlight_color.color = draw.Color.light_gray
presentation.save("gray_paragraph.pptx", slides.export.SaveFormat.PPTX)
Результат:

Следующий пример кода демонстрирует, как задать цвет фона для частей текста с полужирным шрифтом:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
for portion in paragraph.portions:
if portion.portion_format.get_effective().font_bold:
# Установить цвет выделения для части текста.
portion.portion_format.highlight_color.color = draw.Color.light_gray
presentation.save("gray_text_portions.pptx", slides.export.SaveFormat.PPTX)
Результат:

Выровнять абзацы текста
Используйте ParagraphFormat.alignment чтобы задать выравнивание абзаца внутри текстового кадра. Значение может быть центрированным, выравненным по левому краю, по правому, выровненным по ширине и т.д.
Следующий пример кода показывает, как выровнять абзац по центру:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Установить выравнивание абзаца по центру.
paragraph.paragraph_format.alignment = slides.TextAlignment.CENTER
presentation.save("aligned_paragraph.pptx", slides.export.SaveFormat.PPTX)
Результат:

Установить прозрачность текста
Прозрачность текста управляется альфа‑компонентой цвета, назначенного PortionFormat.fill_format. В примерах ниже alpha = 50 — это значение альфа‑канала ARGB в диапазоне 0‑255, а не процент прозрачности.
Следующий пример кода показывает, как применить прозрачность к всему абзацу:
import aspose.pydrawing as draw
import aspose.slides as slides
alpha = 50
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Установить цвет заливки текста в прозрачный цвет.
paragraph.paragraph_format.default_portion_format.fill_format.fill_type = slides.FillType.SOLID
paragraph.paragraph_format.default_portion_format.fill_format.solid_fill_color.color = draw.Color.from_argb(alpha, draw.Color.black)
presentation.save("transparent_paragraph.pptx", slides.export.SaveFormat.PPTX)
Результат:

Следующий пример кода показывает, как применить прозрачность к частям текста с полужирным шрифтом:
import aspose.pydrawing as draw
import aspose.slides as slides
alpha = 50
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
for portion in paragraph.portions:
if portion.portion_format.get_effective().font_bold:
# Установить прозрачность части текста.
portion.portion_format.fill_format.fill_type = slides.FillType.SOLID
portion.portion_format.fill_format.solid_fill_color.color = draw.Color.from_argb(alpha, draw.Color.black)
presentation.save("transparent_text_portions.pptx", slides.export.SaveFormat.PPTX)
Результат:

Установить интервал между символами текста
Используйте BasePortionFormat.spacing чтобы увеличить или уменьшить интервал между символами в текстовом блоке.
Следующий Python‑код показывает, как увеличить интервал между символами в всём абзаце:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Примечание: используйте отрицательные значения для сжатия интервала между символами.
paragraph.paragraph_format.default_portion_format.spacing = 3 # Увеличить интервал между символами.
presentation.save("character_spacing_in_paragraph.pptx", slides.export.SaveFormat.PPTX)
Результат:

Следующий пример кода показывает, как увеличить интервал между символами в частях текста с полужирным шрифтом:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
for portion in paragraph.portions:
if portion.portion_format.get_effective().font_bold:
# Примечание: используйте отрицательные значения для сжатия интервала между символами.
portion.portion_format.spacing = 3 # Увеличить интервал между символами.
presentation.save("character_spacing_in_text_portions.pptx", slides.export.SaveFormat.PPTX)
Результат:

Отключить кернинг для определённых шрифтов
В некоторых случаях текст, отрисованный Aspose.Slides, может выглядеть немного более плотным, чем тот же текст в PowerPoint. Это может происходить, потому что PowerPoint может игнорировать данные кернинга для некоторых шрифтов, даже если шрифт содержит корректную информацию о кернинге и кернинг включён в настройках PowerPoint.
Чтобы сделать вывод более похожим на PowerPoint в подобных случаях, можно отключить кернинг для частей текста, использующих затронутый шрифт. Установите BasePortionFormat.kerning_minimal_size в значение, значительно превышающее фактический размер шрифта:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
target_font = "Roboto"
for paragraph in auto_shape.text_frame.paragraphs:
for portion in paragraph.portions:
latin_font = portion.portion_format.latin_font
east_asian_font = portion.portion_format.east_asian_font
complex_script_font = portion.portion_format.complex_script_font
if ((latin_font is not None and latin_font.font_name == target_font) or
(east_asian_font is not None and east_asian_font.font_name == target_font) or
(complex_script_font is not None and complex_script_font.font_name == target_font)):
portion.portion_format.kerning_minimal_size = 100
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Эта настройка предотвращает применение кернинга к соответствующим частям текста и может помочь согласовать рендеринг Aspose.Slides с визуальным выводом PowerPoint для шрифтов, на которые влияет данное специфическое поведение PowerPoint.
Управление свойствами шрифтов текста
Свойства шрифта можно задать на уровне абзаца через ParagraphFormat.default_portion_format либо для отдельных частей через PortionFormat.
Следующий код задаёт шрифт и стиль текста для всего абзаца: он применяет размер шрифта, полужирное начертание, курсив, пунктирное подчёркивание и шрифт Times New Roman ко всем частям абзаца.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
# Установить свойства шрифта для абзаца.
paragraph.paragraph_format.default_portion_format.font_height = 12
paragraph.paragraph_format.default_portion_format.font_bold = slides.NullableBool.TRUE
paragraph.paragraph_format.default_portion_format.font_italic = slides.NullableBool.TRUE
paragraph.paragraph_format.default_portion_format.font_underline = slides.TextUnderlineType.DOTTED
paragraph.paragraph_format.default_portion_format.latin_font = slides.FontData("Times New Roman")
presentation.save("font_properties_for_paragraph.pptx", slides.export.SaveFormat.PPTX)
Результат:

Следующий пример кода применяет аналогичные свойства к частям текста с полужирным шрифтом:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
for portion in paragraph.portions:
if portion.portion_format.get_effective().font_bold:
# Установить свойства шрифта для части текста.
portion.portion_format.font_height = 13
portion.portion_format.font_italic = slides.NullableBool.TRUE
portion.portion_format.font_underline = slides.TextUnderlineType.DOTTED
portion.portion_format.latin_font = slides.FontData("Times New Roman")
presentation.save("font_properties_for_text_portions.pptx", slides.export.SaveFormat.PPTX)
Результат:

Установить вращение текста
Используйте TextFrameFormat.text_vertical_type чтобы задать предопределённую ориентацию текста внутри фигуры.
Следующий пример кода задаёт ориентацию текста в фигуре VERTICAL270, что вращает текст на 90 градусов против часовой стрелки:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
auto_shape.text_frame.text_frame_format.text_vertical_type = slides.TextVerticalType.VERTICAL270
presentation.save("text_rotation.pptx", slides.export.SaveFormat.PPTX)
Результат:

Установить пользовательское вращение для текстовых рамок
Используйте TextFrameFormat.rotation_angle чтобы задать пользовательский угол вращения для TextFrame.
Следующий пример кода вращает текстовую рамку на 3 градуса по часовой стрелке внутри фигуры:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
auto_shape.text_frame.text_frame_format.rotation_angle = 3
presentation.save("custom_text_rotation.pptx", slides.export.SaveFormat.PPTX)
Результат:

Установить межстрочный интервал абзацев
Aspose.Slides предоставляет ParagraphFormat.space_after, ParagraphFormat.space_before, и ParagraphFormat.space_within чтобы управлять интервалами абзацев. Эти свойства используются следующим образом:
- Укажите положительное значение, чтобы задать межстрочный интервал в процентах от высоты строки.
- Укажите отрицательное значение, чтобы задать межстрочный интервал в пунктах.
Следующий пример кода показывает, как указать межстрочный интервал внутри абзаца:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
paragraph.paragraph_format.space_within = 200
presentation.save("line_spacing.pptx", slides.export.SaveFormat.PPTX)
Результат:

Установить тип автоподгонки для текстовых рамок
TextFrameFormat.autofit_type определяет, как текст ведёт себя, когда выходит за границы своего контейнера. Используйте его, чтобы контролировать, будет ли текст сжиматься, вытекать за пределы или автоматически изменять размер фигуры.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
auto_shape.text_frame.text_frame_format.autofit_type = slides.TextAutofitType.SHAPE
presentation.save("autofit_type.pptx", slides.export.SaveFormat.PPTX)
Установить привязку текстовых рамок
TextFrameFormat.anchoring_type определяет, как текст позиционируется вертикально внутри фигуры, например вверху, посередине или внизу.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
auto_shape.text_frame.text_frame_format.anchoring_type = slides.TextAnchorType.BOTTOM
presentation.save("text_anchor.pptx", slides.export.SaveFormat.PPTX)
Установить табуляцию текста
Используйте ParagraphFormat.default_tab_size и ParagraphFormat.tabs чтобы настроить позиции табуляции в абзаце.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
paragraph.paragraph_format.default_tab_size = 100
paragraph.paragraph_format.tabs.add(30, slides.TabAlignment.LEFT)
presentation.save("paragraph_tabs.pptx", slides.export.SaveFormat.PPTX)
Результат:

Установить язык проверки правописания
Aspose.Slides предоставляет PortionFormat.language_id, который позволяет задать язык проверки правописания для части текста. Язык проверки определяет, какой язык используется для проверки орфографии и грамматики в PowerPoint.
Следующий пример кода показывает, как задать язык проверки правописания для части текста:
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
paragraph = auto_shape.text_frame.paragraphs[0]
paragraph.portions.clear()
font = slides.FontData("SimSun")
text_portion = slides.Portion()
text_portion.portion_format.complex_script_font = font
text_portion.portion_format.east_asian_font = font
text_portion.portion_format.latin_font = font
# Установить идентификатор языка проверки правописания.
text_portion.portion_format.language_id = "zh-CN"
text_portion.text = "1。"
paragraph.portions.add(text_portion)
presentation.save("proofing_language.pptx", slides.export.SaveFormat.PPTX)
Установить язык по умолчанию
Используйте LoadOptions.default_text_language чтобы определить язык по умолчанию для текста, создаваемого при загрузке или создании презентации.
import aspose.slides as slides
load_options = slides.LoadOptions()
load_options.default_text_language = "en-US"
with slides.Presentation(load_options) as presentation:
slide = presentation.slides[0]
# Добавить новую прямоугольную фигуру с текстом.
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 150, 50)
shape.text_frame.text = "Sample text"
# Проверить язык первой части.
portion = shape.text_frame.paragraphs[0].portions[0]
print(portion.portion_format.language_id)
Установить стиль текста по умолчанию
Чтобы применить форматирование текста по умолчанию на уровне презентации, используйте Presentation.default_text_style.
Следующий пример кода показывает, как задать шрифт по умолчанию полужирный размером 14 pt для всего текста на всех слайдах в новой презентации.
import aspose.slides as slides
with slides.Presentation() as presentation:
# Получить формат абзаца верхнего уровня.
paragraph_format = presentation.default_text_style.get_level(0)
if paragraph_format is not None:
paragraph_format.default_portion_format.font_height = 14
paragraph_format.default_portion_format.font_bold = slides.NullableBool.TRUE
presentation.save("default_text_style.pptx", slides.export.SaveFormat.PPTX)
Извлечь текст с эффектом All-Caps
В PowerPoint применение эффекта All Caps заставляет текст отображаться заглавными буквами на слайде, даже если он был введён строчными. При получении такой части текста с помощью Aspose.Slides библиотека возвращает текст точно так, как он был введён. Чтобы соответствовать отображаемому тексту, проверьте TextCapType и преобразуйте возвращённую строку в верхний регистр, если значение равно ALL.
Предположим, у нас есть следующий текстовый блок на первом слайде файла sample2.pptx.

Следующий пример кода показывает, как извлечь текст с применённым эффектом All Caps:
import aspose.slides as slides
with slides.Presentation("sample2.pptx") as presentation:
auto_shape = presentation.slides[0].shapes[0]
text_portion = auto_shape.text_frame.paragraphs[0].portions[0]
print("Original text:", text_portion.text)
text_format = text_portion.portion_format.get_effective()
if text_format.text_cap_type == slides.TextCapType.ALL:
text = text_portion.text.upper()
print("All-Caps effect:", text)
Вывод:
Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!
FAQ
Как изменить текст в таблице на слайде?
Чтобы изменить текст в таблице на слайде, используйте Table. Пройдитесь по ячейкам и обновите каждую ячейку через Cell.text_frame и форматирование абзаца — через Paragraph.paragraph_format.
Как применить градиентный цвет к тексту в слайде PowerPoint?
Чтобы применить градиентный цвет к тексту, используйте PortionFormat.fill_format. Установите FillFormat.fill_type в значение FillType.GRADIENT и затем настройте остановки градиента, направление и прозрачность.