Создание и применение эффектов WordArt в Python
О WordArt?
WordArt или Word Art — это функция, позволяющая применять эффекты к тексту, чтобы он выделялся. С помощью WordArt, например, можно обвести текст контуром или заполнить его цветом (или градиентом), добавить 3D‑эффекты и т.д. Также можно наклонять, изгибать и растягивать форму текста.
WordArt в Microsoft PowerPoint
Чтобы использовать WordArt в Microsoft PowerPoint, необходимо выбрать один из предопределённых шаблонов WordArt. Шаблон WordArt — это набор эффектов, которые применяются к тексту или его форме.
WordArt в Aspose.Slides
В Aspose.Slides для Python через .NET 20.10 была реализована поддержка WordArt, а в последующих версиях Aspose.Slides для Python через .NET функциональность была улучшена.
С Aspose.Slides для Python через .NET вы можете легко создавать собственный шаблон WordArt (один эффект или комбинацию эффектов) в Python и применять его к текстам.
Создание простого шаблона WordArt и применение его к тексту
Использование Aspose.Slides
Сначала мы создаём простой текст с помощью этого кода Python:
import aspose.slides as slides
with slides.Presentation() as pres:
slide = pres.slides[0]
autoShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 200, 200, 400, 200)
textFrame = autoShape.text_frame
portion = textFrame.paragraphs[0].portions[0]
portion.text = "Aspose.Slides"
pres.save("wordart-1.pptx", slides.export.SaveFormat.PPTX)
Теперь мы задаём высоту шрифта текста большим значением, чтобы эффект был более заметным, используя следующий код:
fontData = slides.FontData("Arial Black")
portion.portion_format.latin_font = fontData
portion.portion_format.font_height = 36
Использование Microsoft PowerPoint
Перейдите в меню эффектов WordArt в Microsoft PowerPoint:

В правой части меню можно выбрать предопределённый эффект WordArt. В левой части меню можно задать настройки нового WordArt.
Ниже перечислены некоторые доступные параметры или опции:

Использование Aspose.Slides
Здесь мы применяем к тексту цвет шаблона SmallGrid и добавляем чёрную границу шириной 1 пкс с помощью следующего кода:
portion.portion_format.fill_format.fill_type = slides.FillType.PATTERN
portion.portion_format.fill_format.pattern_format.fore_color.color = draw.Color.dark_orange
portion.portion_format.fill_format.pattern_format.back_color.color = draw.Color.white
portion.portion_format.fill_format.pattern_format.pattern_style = slides.PatternStyle.SMALL_GRID
portion.portion_format.line_format.fill_format.fill_type = slides.FillType.SOLID
portion.portion_format.line_format.fill_format.solid_fill_color.color = draw.Color.black
Полученный текст:

Применение других эффектов WordArt
Использование Microsoft PowerPoint
Из интерфейса программы можно применять эти эффекты к тексту, текстовому блоку, фигуре или аналогичному элементу:

Например, к тексту можно применить эффекты Тень, Отражение и Свечение; к текстовому блоку — эффекты 3D Формат и 3D Вращение; к объекту формы — свойство Мягкие края (оно действует, даже если не задано свойство 3D Формат).
Применение теневых эффектов
Здесь мы будем менять свойства, относящиеся только к тексту. Применяем теневой эффект к тексту с помощью следующего кода Python:
portion.portion_format.effect_format.enable_outer_shadow_effect()
portion.portion_format.effect_format.outer_shadow_effect.shadow_color.color = draw.Color.black
portion.portion_format.effect_format.outer_shadow_effect.scale_horizontal = 100
portion.portion_format.effect_format.outer_shadow_effect.scale_vertical = 65
portion.portion_format.effect_format.outer_shadow_effect.blur_radius = 4.73
portion.portion_format.effect_format.outer_shadow_effect.direction = 230
portion.portion_format.effect_format.outer_shadow_effect.distance = 2
portion.portion_format.effect_format.outer_shadow_effect.skew_horizontal = 30
portion.portion_format.effect_format.outer_shadow_effect.skew_vertical = 0
portion.portion_format.effect_format.outer_shadow_effect.shadow_color.color_transform.add(slides.ColorTransformOperation.SET_ALPHA, 0.32)
API Aspose.Slides поддерживает три типа теней: OuterShadow, InnerShadow и PresetShadow.
С помощью PresetShadow можно применить тень к тексту (используя предустановленные значения).
Использование Microsoft PowerPoint
В PowerPoint доступен только один тип тени. Пример:

Использование Aspose.Slides
Aspose.Slides позволяет одновременно применять два типа теней: InnerShadow и PresetShadow.
Примечания:
- При одновременном использовании OuterShadow и PresetShadow применяется только эффект OuterShadow.
- Если OuterShadow и InnerShadow используются одновременно, применяемый эффект зависит от версии PowerPoint. Например, в PowerPoint 2013 эффект удваивается, а в PowerPoint 2007 применяется OuterShadow.
Применение отображения к текстам
Мы добавляем отображение к тексту с помощью следующего примера кода Python:
portion.portion_format.effect_format.enable_reflection_effect()
portion.portion_format.effect_format.reflection_effect.blur_radius = 0.5
portion.portion_format.effect_format.reflection_effect.distance = 4.72
portion.portion_format.effect_format.reflection_effect.start_pos_alpha = 0
portion.portion_format.effect_format.reflection_effect.end_pos_alpha = 60
portion.portion_format.effect_format.reflection_effect.direction = 90
portion.portion_format.effect_format.reflection_effect.scale_horizontal = 100
portion.portion_format.effect_format.reflection_effect.scale_vertical = -100
portion.portion_format.effect_format.reflection_effect.start_reflection_opacity = 60
portion.portion_format.effect_format.reflection_effect.end_reflection_opacity = 0.9
portion.portion_format.effect_format.reflection_effect.rectangle_align = slides.RectangleAlignment.BOTTOM_LEFT
Применение эффекта свечения к текстам
Мы применяем эффект свечения к тексту, чтобы он сиял или выделялся, используя следующий код:
portion.portion_format.effect_format.enable_glow_effect()
portion.portion_format.effect_format.glow_effect.color.r = 255
portion.portion_format.effect_format.glow_effect.color.color_transform.add(slides.ColorTransformOperation.SET_ALPHA, 0.54)
portion.portion_format.effect_format.glow_effect.radius = 7
Результат операции:

Использование трансформаций в WordArt
Мы применяем свойство Transform (действующее на весь блок текста) с помощью следующего кода:
textFrame.text_frame_format.transform = slides.TextShapeType.ARCH_UP_POUR
Результат:

Использование PowerPoint
Для доступа к предопределённым типам трансформаций перейдите: Format -> TextEffect -> Transform
Использование Aspose.Slides
Для выбора типа трансформации используйте перечисление TextShapeType.
Применение 3D‑эффектов к текстам и фигурам
Мы задаём 3D‑эффект форме текста с помощью следующего примера кода:
autoShape.three_d_format.bevel_bottom.bevel_type = slides.BevelPresetType.CIRCLE
autoShape.three_d_format.bevel_bottom.height = 10.5
autoShape.three_d_format.bevel_bottom.width = 10.5
autoShape.three_d_format.bevel_top.bevel_type = slides.BevelPresetType.CIRCLE
autoShape.three_d_format.bevel_top.height = 12.5
autoShape.three_d_format.bevel_top.width = 11
autoShape.three_d_format.extrusion_color.color = draw.Color.orange
autoShape.three_d_format.extrusion_height = 6
autoShape.three_d_format.contour_color.color = draw.Color.dark_red
autoShape.three_d_format.contour_width = 1.5
autoShape.three_d_format.depth = 3
autoShape.three_d_format.material = slides.MaterialPresetType.PLASTIC
autoShape.three_d_format.light_rig.direction = slides.LightingDirection.TOP
autoShape.three_d_format.light_rig.light_type = slides.LightRigPresetType.BALANCED
autoShape.three_d_format.light_rig.set_rotation(0, 0, 40)
autoShape.three_d_format.camera.camera_type = slides.CameraPresetType.PERSPECTIVE_CONTRASTING_RIGHT_FACING
Полученный текст и его форма:

Мы применяем 3D‑эффект к тексту с помощью этого кода Python:
textFrame.text_frame_format.three_d_format.bevel_bottom.bevel_type = slides.BevelPresetType.CIRCLE
textFrame.text_frame_format.three_d_format.bevel_bottom.height = 3.5
textFrame.text_frame_format.three_d_format.bevel_bottom.width = 3.5
textFrame.text_frame_format.three_d_format.bevel_top.bevel_type = slides.BevelPresetType.CIRCLE
textFrame.text_frame_format.three_d_format.bevel_top.height = 4
textFrame.text_frame_format.three_d_format.bevel_top.width = 4
textFrame.text_frame_format.three_d_format.extrusion_color.color = draw.Color.orange
textFrame.text_frame_format.three_d_format.extrusion_height= 6
textFrame.text_frame_format.three_d_format.contour_color.color = draw.Color.dark_red
textFrame.text_frame_format.three_d_format.contour_width = 1.5
textFrame.text_frame_format.three_d_format.depth= 3
textFrame.text_frame_format.three_d_format.material = slides.MaterialPresetType.PLASTIC
textFrame.text_frame_format.three_d_format.light_rig.direction = slides.LightingDirection.TOP
textFrame.text_frame_format.three_d_format.light_rig.light_type = slides.LightRigPresetType.BALANCED
textFrame.text_frame_format.three_d_format.light_rig.set_rotation(0, 0, 40)
textFrame.text_frame_format.three_d_format.camera.camera_type = slides.CameraPresetType.PERSPECTIVE_CONTRASTING_RIGHT_FACING
Результат операции:

Применение 3D‑эффектов к текстам или их формам и взаимодействие между эффектами основывается на определённых правилах.
Рассмотрим сцену для текста и формы, содержащей этот текст. 3D‑эффект включает представление 3D‑объекта и сцену, на которой объект размещён.
- Когда сцена задаётся как для фигуры, так и для текста, приоритет имеет сцена фигуры — сцена текста игнорируется.
- Когда у фигуры нет собственной сцены, но есть 3D‑представление, используется сцена текста.
- Иначе — когда у формы изначально нет 3D‑эффекта, форма остаётся плоской, а 3D‑эффект применяется только к тексту.
Эти описания связаны со свойствами ThreeDFormat.LightRig и ThreeDFormat.Camera.
Применение внешних теней к текстам
Aspose.Slides для Python через .NET предоставляет классы IOuterShadow и IInnerShadow, позволяющие применять теневые эффекты к тексту, содержащемуся в TextFrame. Выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд, используя его индекс.
- Добавьте к слайду AutoShape типа Rectangle.
- Получите доступ к TextFrame, связанному с AutoShape.
- Установите свойство FillType у AutoShape в значение NoFill.
- Создайте экземпляр класса OuterShadow.
- Задайте BlurRadius тени.
- Установите Direction тени.
- Задайте Distance тени.
- Установите RectanglelAlign в TopLeft.
- Установите PresetColor тени в Black.
- Сохраните презентацию в файл PPTX.
Этот пример кода на Python, реализующий описанные шаги, показывает, как применить внешний теневой эффект к тексту:
import aspose.slides as slides
import aspose.pydrawing as draw
with slides.Presentation() as pres:
# Получить ссылку на слайд
sld = pres.slides[0]
# Добавить AutoShape типа Rectangle
ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)
# Добавить TextFrame к Rectangle
ashp.add_text_frame("Aspose TextBox")
# Отключить заливку фигуры, если нужно получить тень текста
ashp.fill_format.fill_type = slides.FillType.NO_FILL
# Добавить внешнюю тень и установить все необходимые параметры
ashp.effect_format.enable_outer_shadow_effect()
shadow = ashp.effect_format.outer_shadow_effect
shadow.blur_radius = 4.0
shadow.direction = 45
shadow.distance = 3
shadow.rectangle_align = slides.RectangleAlignment.TOP_LEFT
shadow.shadow_color.preset_color = slides.PresetColor.BLACK
#Сохранить презентацию на диск
pres.save("pres_out.pptx", slides.export.SaveFormat.PPTX)
Применение внутренней тени к фигурам
Выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд.
- Добавьте AutoShape типа Rectangle.
- Включите InnerShadowEffect.
- Задайте все необходимые параметры.
- Установите ColorType в Scheme.
- Установите Scheme Color.
- Сохраните презентацию в файл PPTX.
Этот пример кода (основанный на вышеуказанных шагах) показывает, как добавить соединитель между двумя фигурами в Python:
import aspose.slides as slides
import aspose.pydrawing as draw
with slides.Presentation() as presentation:
# Получить ссылку на слайд
slide = presentation.slides[0]
# Добавить AutoShape типа Rectangle
ashp = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 400, 300)
ashp.fill_format.fill_type = slides.FillType.NO_FILL
# Добавить TextFrame к Rectangle
ashp.add_text_frame("Aspose TextBox")
port = ashp.text_frame.paragraphs[0].portions[0]
pf = port.portion_format
pf.font_height = 50
# Включить inner_shadow_effect
ef = pf.effect_format
ef.enable_inner_shadow_effect()
# Установить все необходимые параметры
ef.inner_shadow_effect.blur_radius = 8.0
ef.inner_shadow_effect.direction = 90.0
ef.inner_shadow_effect.distance = 6.0
ef.inner_shadow_effect.shadow_color.b = 189
# Установить ColorType как Scheme
ef.inner_shadow_effect.shadow_color.color_type = slides.ColorType.SCHEME
# Установить Scheme Color
ef.inner_shadow_effect.shadow_color.scheme_color = slides.SchemeColor.ACCENT1
# Сохранить презентацию
presentation.save("WordArt_out.pptx", slides.export.SaveFormat.PPTX)
FAQ
Можно ли использовать эффекты WordArt с разными шрифтами или скриптами (например, арабский, китайский)?
Да, Aspose.Slides поддерживает Unicode и работает со всеми основными шрифтами и скриптами. Эффекты WordArt, такие как тень, заливка и контур, можно применять независимо от языка, хотя доступность шрифтов и их отображение зависят от системных шрифтов.
Можно ли применять эффекты WordArt к элементам шаблона слайдов?
Да, вы можете применять эффекты WordArt к фигурам на шаблонах слайдов, включая заполнитель заголовка, нижний колонтитул или фоновый текст. Изменения, внесённые в шаблон, отразятся на всех связанных слайдах.
Влияют ли эффекты WordArt на размер файла презентации?
Слегка. Такие эффекты, как тени, свечение и градиентные заливки, могут немного увеличить размер файла за счёт добавления метаданных форматирования, но разница обычно незначительна.
Можно ли предварительно просмотреть результат эффектов WordArt без сохранения презентации?
Да, вы можете отрисовать слайды с WordArt в изображения (например, PNG, JPEG), используя метод get_image классов Shape или Slide. Это позволяет увидеть результат в памяти или на экране перед сохранением или экспортом полной презентации.