Создание и применение эффектов WordArt в Java
О WordArt?
WordArt или Word Art — это функция, позволяющая применять эффекты к тексту, чтобы он выделялся. С помощью WordArt, например, можно обвести текст контуром или заполнить его цветом (или градиентом), добавить 3D‑эффекты и т.д. Также можно наклонять, изгибать и растягивать форму текста.
WordArt в Microsoft PowerPoint Чтобы использовать WordArt в Microsoft PowerPoint, необходимо выбрать один из предопределённых шаблонов WordArt. Шаблон WordArt — это набор эффектов, применяемых к тексту или его форме.
WordArt в Aspose.Slides В Aspose.Slides для Java 20.10 мы внедрили поддержку WordArt и улучшили эту функцию в последующих версиях Aspose.Slides для Java. С помощью Aspose.Slides для Java вы можете легко создавать собственные шаблоны WordArt (один эффект или комбинацию эффектов) на Java и применять их к текстам.
Создание простого шаблона WordArt и применение его к тексту
Использование Aspose.Slides Сначала мы создаём простой текст с помощью следующего Java‑кода:
Presentation pres = new Presentation();
try {
ISlide slide = pres.getSlides().get_Item(0);
IAutoShape autoShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 400, 200);
ITextFrame textFrame = autoShape.getTextFrame();
Portion portion = (Portion)textFrame.getParagraphs().get_Item(0).getPortions().get_Item(0);
portion.setText("Aspose.Slides");
} finally {
if (pres != null) pres.dispose();
}
Теперь мы задаём высоту шрифта текста большим значением, чтобы эффект был более заметным, используя следующий код:
FontData fontData = new FontData("Arial Black");
portion.getPortionFormat().setLatinFont(fontData);
portion.getPortionFormat().setFontHeight(36);
Использование Microsoft PowerPoint Откройте меню эффектов WordArt в Microsoft PowerPoint:

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

Использование Aspose.Slides Здесь мы применяем цвет шаблона SmallGrid к тексту и добавляем чёрную рамку шириной 1 пиксель с помощью следующего кода:
portion.getPortionFormat().getFillFormat().setFillType(FillType.Pattern);
portion.getPortionFormat().getFillFormat().getPatternFormat().getForeColor().setColor(Color.ORANGE);
portion.getPortionFormat().getFillFormat().getPatternFormat().getBackColor().setColor(Color.WHITE);
portion.getPortionFormat().getFillFormat().getPatternFormat().setPatternStyle(PatternStyle.SmallGrid);
portion.getPortionFormat().getLineFormat().getFillFormat().setFillType(FillType.Solid);
portion.getPortionFormat().getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK);
Получившийся текст:

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

Например, к тексту можно применить эффекты Тень, Отражение и Свечение; к текстовому блоку — эффекты 3D‑формат и 3D‑поворот; к объекту Shape — свойство Мягкие края (оно работает и без свойства 3D‑формат).
Применение эффектов тени
Здесь мы планируем задать свойства, относящиеся только к тексту. Применяем эффект тени к тексту с помощью следующего кода на Java:
portion.getPortionFormat().getEffectFormat().enableOuterShadowEffect();
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().getShadowColor().setColor(Color.BLACK);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setScaleHorizontal(100);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setScaleVertical(65);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setBlurRadius(4.73);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setDirection(230);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setDistance(2);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setSkewHorizontal(30);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().setSkewVertical(0);
portion.getPortionFormat().getEffectFormat().getOuterShadowEffect().getShadowColor().getColorTransform().add(ColorTransformOperation.SetAlpha, 0.32f);
API Aspose.Slides поддерживает три типа теней: OuterShadow, InnerShadow и PresetShadow. С помощью PresetShadow можно применить тень к тексту (используя предустановленные значения).
Использование Microsoft PowerPoint
В PowerPoint можно использовать один тип тени. Пример:

Использование Aspose.Slides Aspose.Slides действительно позволяет одновременно применять два типа теней: InnerShadow и PresetShadow.
Notes:
- Если одновременно использовать OuterShadow и PresetShadow, применяется только эффект OuterShadow.
- Если одновременно использовать OuterShadow и InnerShadow, результирующий эффект зависит от версии PowerPoint. Например, в PowerPoint 2013 эффект удваивается, а в PowerPoint 2007 применяется эффект OuterShadow.
Применение отображения к текстам
Мы добавляем отображение к тексту с помощью следующего примера кода на Java:
portion.getPortionFormat().getEffectFormat().enableReflectionEffect();
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setBlurRadius(0.5);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setDistance(4.72);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setStartPosAlpha(0f);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setEndPosAlpha(60f);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setDirection(90);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setScaleHorizontal(100);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setScaleVertical(-100);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setStartReflectionOpacity(60f);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setEndReflectionOpacity(0.9f);
portion.getPortionFormat().getEffectFormat().getReflectionEffect().setRectangleAlign(RectangleAlignment.BottomLeft);
Применение эффекта свечения к текстам
Мы применяем эффект свечения к тексту, чтобы он блестел или выделялся, с помощью следующего кода:
portion.getPortionFormat().getEffectFormat().enableGlowEffect();
portion.getPortionFormat().getEffectFormat().getGlowEffect().getColor().setR((byte)255);
portion.getPortionFormat().getEffectFormat().getGlowEffect().getColor().getColorTransform().add(ColorTransformOperation.SetAlpha, 0.54f);
portion.getPortionFormat().getEffectFormat().getGlowEffect().setRadius(7);
Результат выполнения:

Использование трансформаций в WordArt
Мы используем свойство Transform (присущее всему блоку текста) с помощью следующего кода:
textFrame.getTextFrameFormat().setTransform(TextShapeType.ArchUpPour);
Результат:

Использование PowerPoint Чтобы перейти к предопределённым типам трансформаций, откройте: Format -> TextEffect -> Transform
Использование Aspose.Slides Для выбора типа трансформации используйте перечисление TextShapeType.
Применение 3D‑эффектов к текстам и фигурам
Мы задаём 3D‑эффект для текстовой фигуры с помощью следующего примера кода:
autoShape.getThreeDFormat().getBevelBottom().setBevelType(BevelPresetType.Circle);
autoShape.getThreeDFormat().getBevelBottom().setHeight(10.5);
autoShape.getThreeDFormat().getBevelBottom().setWidth(10.5);
autoShape.getThreeDFormat().getBevelTop().setBevelType(BevelPresetType.Circle);
autoShape.getThreeDFormat().getBevelTop().setHeight(12.5);
autoShape.getThreeDFormat().getBevelTop().setWidth(11);
autoShape.getThreeDFormat().getExtrusionColor().setColor(Color.ORANGE);
autoShape.getThreeDFormat().setExtrusionHeight(6);
autoShape.getThreeDFormat().getContourColor().setColor(Color.RED);
autoShape.getThreeDFormat().setContourWidth(1.5);
autoShape.getThreeDFormat().setDepth(3);
autoShape.getThreeDFormat().setMaterial(MaterialPresetType.Plastic);
autoShape.getThreeDFormat().getLightRig().setDirection(LightingDirection.Top);
autoShape.getThreeDFormat().getLightRig().setLightType(LightRigPresetType.Balanced);
autoShape.getThreeDFormat().getLightRig().setRotation(0, 0, 40);
autoShape.getThreeDFormat().getCamera().setCameraType(CameraPresetType.PerspectiveContrastingRightFacing);
Получившийся текст и его форма:

Мы применяем 3D‑эффект к тексту с помощью следующего кода на Java:
textFrame.getTextFrameFormat().getThreeDFormat().getBevelBottom().setBevelType(BevelPresetType.Circle);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelBottom().setHeight(3.5);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelBottom().setWidth(3.5);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelTop().setBevelType(BevelPresetType.Circle);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelTop().setHeight(4);
textFrame.getTextFrameFormat().getThreeDFormat().getBevelTop().setWidth(4);
textFrame.getTextFrameFormat().getThreeDFormat().getExtrusionColor().setColor(Color.ORANGE);
textFrame.getTextFrameFormat().getThreeDFormat().setExtrusionHeight(6);
textFrame.getTextFrameFormat().getThreeDFormat().getContourColor().setColor(Color.RED);
textFrame.getTextFrameFormat().getThreeDFormat().setContourWidth(1.5);
textFrame.getTextFrameFormat().getThreeDFormat().setDepth(3);
textFrame.getTextFrameFormat().getThreeDFormat().setMaterial(MaterialPresetType.Plastic);
textFrame.getTextFrameFormat().getThreeDFormat().getLightRig().setDirection(LightingDirection.Top);
textFrame.getTextFrameFormat().getThreeDFormat().getLightRig().setLightType(LightRigPresetType.Balanced);
textFrame.getTextFrameFormat().getThreeDFormat().getLightRig().setRotation(0, 0, 40);
textFrame.getTextFrameFormat().getThreeDFormat().getCamera().setCameraType(CameraPresetType.PerspectiveContrastingRightFacing);
Результат выполнения:

Применение 3D‑эффектов к текстам или их фигурам и взаимодействие между эффектами основаны на определённых правилах. Рассмотрим сцену для текста и фигуры, содержащей этот текст. 3D‑эффект включает представление 3D‑объекта и сцену, на которой объект размещён.
- Если сцена задаётся как для фигуры, так и для текста, приоритет имеет сцена фигуры — сцена текста игнорируется.
- Если у фигуры нет собственной сцены, но есть 3D‑представление, используется сцена текста.
- В остальных случаях, когда у фигуры изначально нет 3D‑эффекта, фигура остаётся плоской, а 3D‑эффект применяется только к тексту. Эти описания связаны с методами ThreeDFormat.getLightRig() и ThreeDFormat.getCamera().
Применение внешних теней к текстам
Aspose.Slides для Java предоставляет классы IOuterShadow и IInnerShadow, позволяющие применять теневые эффекты к тексту, находящемуся в TextFrame. Выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд, используя его индекс.
- Добавьте к слайду AutoShape типа Rectangle.
- Получите доступ к TextFrame, связанному с AutoShape.
- Установите свойство FillType AutoShape в значение NoFill.
- Создайте экземпляр класса OuterShadow.
- Задайте BlurRadius тени.
- Установите Direction тени.
- Задайте Distance тени.
- Установите RectanglelAlign в TopLeft.
- Задайте PresetColor тени в Black.
- Сохраните презентацию в файл PPTX . Этот пример кода на Java — реализация перечисленных шагов — показывает, как применить внешний теневой эффект к тексту:
Presentation pres = new Presentation();
try {
// Получить ссылку на слайд
ISlide sld = pres.getSlides().get_Item(0);
// Добавить AutoShape типа Rectangle
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 150, 50);
// Добавить TextFrame к Rectangle
ashp.addTextFrame("Aspose TextBox");
// Отключить заливку фигуры, если нужно получить тень текста
ashp.getFillFormat().setFillType(FillType.NoFill);
// Добавить внешнюю тень и задать все необходимые параметры
ashp.getEffectFormat().enableOuterShadowEffect();
IOuterShadow shadow = ashp.getEffectFormat().getOuterShadowEffect();
shadow.setBlurRadius(4.0);
shadow.setDirection(45);
shadow.setDistance(3);
shadow.setRectangleAlign(RectangleAlignment.TopLeft);
shadow.getShadowColor().setPresetColor(PresetColor.Black);
// Сохранить презентацию на диск
pres.save("pres_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Применение внутренней тени к фигурам
Выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд.
- Добавьте AutoShape типа Rectangle.
- Включите InnerShadowEffect.
- Задайте все необходимые параметры.
- Установите ColorType в значение Scheme.
- Задайте Scheme Color.
- Сохраните презентацию в файл PPTX . Этот пример кода (основанный на вышеуказанных шагах) показывает, как добавить соединитель между двумя фигурами на Java:
Presentation pres = new Presentation();
try {
// Получить ссылку на слайд
ISlide slide = pres.getSlides().get_Item(0);
// Добавить AutoShape типа Rectangle
IAutoShape ashp = slide.getShapes().addAutoShape(ShapeType.Rectangle, 150, 75, 400, 300);
ashp.getFillFormat().setFillType(FillType.NoFill);
// Добавить TextFrame к прямоугольнику
ashp.addTextFrame("Aspose TextBox");
IPortion port = ashp.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
IPortionFormat pf = port.getPortionFormat();
pf.setFontHeight(50);
// Включить InnerShadowEffect
IEffectFormat ef = pf.getEffectFormat();
ef.enableInnerShadowEffect();
// Задать все необходимые параметры
ef.getInnerShadowEffect().setBlurRadius(8.0);
ef.getInnerShadowEffect().setDirection(90.0F);
ef.getInnerShadowEffect().setDistance(6.0);
ef.getInnerShadowEffect().getShadowColor().setB((byte)189);
// Установить ColorType как Scheme
ef.getInnerShadowEffect().getShadowColor().setColorType(ColorType.Scheme);
// Установить цвет схемы
ef.getInnerShadowEffect().getShadowColor().setSchemeColor(SchemeColor.Accent1);
// Сохранить презентацию
pres.save("WordArt_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Можно ли использовать эффекты WordArt с разными шрифтами или системами письменности (например, арабским, китайским)? Да, Aspose.Slides поддерживает Unicode и работает со всеми основными шрифтами и системами письменности. Эффекты WordArt, такие как тень, заливка и контур, могут применяться независимо от языка, хотя доступность шрифтов и их отображение могут зависеть от системных шрифтов.
Можно ли применять эффекты WordArt к элементам шаблона слайдов? Да, вы можете применять эффекты WordArt к фигурам на мастер‑слайдах, включая заполнители заголовков, нижние колонтитулы или фоновый текст. Изменения в макете мастера отразятся на всех связанных слайдах.
Влияют ли эффекты WordArt на размер файла презентации? Незначительно. Эффекты WordArt, такие как тени, свечения и градиентные заливки, могут немного увеличить размер файла из‑за добавления метаданных форматирования, но разница обычно несущественная.
Можно ли просмотреть результат эффектов WordArt без сохранения презентации?
Да, вы можете отрисовать слайды с WordArt в изображения (например, PNG, JPEG) с помощью метода getImage из интерфейсов IShape или ISlide. Это позволяет просмотреть результат в памяти или на экране до сохранения или экспорта полной презентации.