Форматирование фигур PowerPoint в JavaScript
Обзор
В PowerPoint вы можете добавлять фигуры на слайды. Поскольку фигуры состоят из линий, их можно форматировать, изменяя или применяя эффекты к контурам. Кроме того, фигуры можно форматировать, задавая параметры, контролирующие заливку их внутренней области.

Aspose.Slides для Node.js через Java предоставляет классы и методы, позволяющие форматировать фигуры, используя те же параметры, что доступны в PowerPoint.
Форматирование линий
Используя Aspose.Slides, вы можете задать пользовательский стиль линии для фигуры. Ниже перечислены шаги процедуры:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Установите стиль линии фигуры.
- Установите ширину линии.
- Установите dash style линии.
- Установите цвет линии для фигуры.
- Сохраните изменённую презентацию в файл PPTX.
Следующий код демонстрирует, как отформатировать прямоугольный AutoShape:
// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let slide = presentation.getSlides().get_Item(0);
// Добавьте автоконтур типа Rectangle.
let shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 150, 150, 75);
// Установите цвет заливки для прямоугольной фигуры.
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
// Примените форматирование к линиям прямоугольника.
shape.getLineFormat().setStyle(java.newByte(aspose.slides.LineStyle.ThickThin));
shape.getLineFormat().setWidth(7);
shape.getLineFormat().setDashStyle(java.newByte(aspose.slides.LineDashStyle.Dash));
// Установите цвет линии прямоугольника.
shape.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLUE"));
// Сохраните файл PPTX на диск.
presentation.save("formatted_lines.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Форматирование стилей соединения
Вот три варианта типа соединения:
- Круглый
- Срезанный
- Скошенный
По умолчанию, когда PowerPoint соединяет две линии под углом (например, в углу фигуры), используется настройка Round. Однако если вы рисуете фигуру с острыми углами, вам может подойти вариант Miter.

Следующий код JavaScript демонстрирует, как три прямоугольника (как показано на изображении выше) были созданы с использованием настроек типа соединения Miter, Bevel и Round:
// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let slide = presentation.getSlides().get_Item(0);
// Добавьте три автоконтурных фигуры типа Rectangle.
let shape1 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 20, 20, 150, 75);
let shape2 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 210, 20, 150, 75);
let shape3 = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 20, 135, 150, 75);
// Установите цвет заливки для каждой прямоугольной фигуры.
shape1.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape1.getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
shape2.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape2.getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
shape3.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape3.getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLACK"));
// Установите ширину линии.
shape1.getLineFormat().setWidth(15);
shape2.getLineFormat().setWidth(15);
shape3.getLineFormat().setWidth(15);
// Установите цвет линии для каждого прямоугольника.
shape1.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape1.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLUE"));
shape2.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape2.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLUE"));
shape3.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape3.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLUE"));
// Установите стиль соединения.
shape1.getLineFormat().setJoinStyle(java.newByte(aspose.slides.LineJoinStyle.Miter));
shape2.getLineFormat().setJoinStyle(java.newByte(aspose.slides.LineJoinStyle.Bevel));
shape3.getLineFormat().setJoinStyle(java.newByte(aspose.slides.LineJoinStyle.Round));
// Добавьте текст к каждому прямоугольнику.
shape1.getTextFrame().setText("Miter Join Style");
shape2.getTextFrame().setText("Bevel Join Style");
shape3.getTextFrame().setText("Round Join Style");
// Сохраните файл PPTX на диск.
presentation.save("join_styles.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Градиентная заливка
В PowerPoint градиентная заливка — это параметр форматирования, позволяющий применять непрерывный переход цветов к фигуре. Например, можно задать два и более цветов так, чтобы один постепенно переходил в другой.
Вот как применить градиентную заливку к фигуре с помощью Aspose.Slides:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Установите свойство [FillType] фигуры в
Gradient. - Добавьте две предпочтительные цвета с определёнными позициями, используя методы
addколлекции остановок градиента, предоставляемой классом GradientFormat. - Сохраните изменённую презентацию в файл PPTX.
// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let slide = presentation.getSlides().get_Item(0);
// Добавьте автофигуру типа Ellipse.
let shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Ellipse, 50, 50, 150, 75);
// Примените градиентное форматирование к эллипсу.
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Gradient));
shape.getFillFormat().getGradientFormat().setGradientShape(java.newByte(aspose.slides.GradientShape.Linear));
// Задайте направление градиента.
shape.getFillFormat().getGradientFormat().setGradientDirection(aspose.slides.GradientDirection.FromCorner2);
// Добавьте два градиентных стопа.
shape.getFillFormat().getGradientFormat().getGradientStops().addPresetColor(1.0, aspose.slides.PresetColor.Purple);
shape.getFillFormat().getGradientFormat().getGradientStops().addPresetColor(0, aspose.slides.PresetColor.Red);
// Сохраните файл PPTX на диск.
presentation.save("gradient_fill.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Заливка шаблоном
В PowerPoint заливка шаблоном — это параметр форматирования, позволяющий применить двухцветный узор (например, точки, полосы, крест‑штриховку или клетки) к фигуре. Можно задать пользовательские цвета переднего плана и фона шаблона.
Aspose.Slides предоставляет более 45 предопределённых стилей шаблонов, которые можно применить к фигурам для улучшения визуального восприятия презентаций. Даже после выбора предопределённого шаблона вы всё равно можете указать точные цвета, которые он будет использовать.
Вот как применить заливку шаблоном к фигуре с помощью Aspose.Slides:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Установите свойство [FillType] фигуры в
Pattern. - Выберите стиль шаблона из предопределённых вариантов.
- Установите Background Color шаблона.
- Установите Foreground Color шаблона.
- Сохраните изменённую презентацию в файл PPTX.
// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let slide = presentation.getSlides().get_Item(0);
// Добавьте автофигуру типа Rectangle.
let shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 150, 75);
// Установите тип заливки в Pattern.
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Pattern));
// Установите стиль узора.
shape.getFillFormat().getPatternFormat().setPatternStyle(java.newByte(aspose.slides.PatternStyle.Trellis));
// Установите фон и передний цвет узора.
shape.getFillFormat().getPatternFormat().getBackColor().setColor(java.getStaticFieldValue("java.awt.Color", "LIGHT_GRAY"));
shape.getFillFormat().getPatternFormat().getForeColor().setColor(java.getStaticFieldValue("java.awt.Color", "YELLOW"));
// Сохраните файл PPTX на диск.
presentation.save("pattern_fill.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Заливка картинкой
В PowerPoint заливка картинкой — это параметр форматирования, позволяющий вставить изображение внутрь фигуры, эффективно используя изображение как фон фигуры.
Вот как использовать Aspose.Slides для применения заливки картинкой к фигуре:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Установите свойство [FillType] фигуры в
Picture. - Установите режим заливки картинкой в
Tile(или другой предпочтительный режим). - Создайте объект PPImage из изображения, которое хотите использовать.
- Передайте изображение методу
ISlidesPicture.setImage. - Сохраните изменённую презентацию в файл PPTX.

// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let slide = presentation.getSlides().get_Item(0);
// Добавьте автофигуру типа Rectangle.
let shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 255, 130);
// Установите тип заливки в Picture.
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Picture));
// Установите режим заливки картинкой.
shape.getFillFormat().getPictureFillFormat().setPictureFillMode(aspose.slides.PictureFillMode.Tile);
// Загрузите изображение и добавьте его в ресурсы презентации.
let image = aspose.slides.Images.fromFile("lotus.png");
let picture = presentation.getImages().addImage(image);
image.dispose();
// Установите изображение.
shape.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// Сохраните файл PPTX на диск.
presentation.save("picture_fill.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Задать картинку‑мозаику как текстуру
Если вы хотите задать картинку‑мозаика в качестве текстуры и настроить поведение мозаики, вы можете использовать следующие методы класса PictureFillFormat:
- setPictureFillMode: Устанавливает режим заливки картинкой —
TileилиStretch. - setTileAlignment: Указывает выравнивание мозаичных элементов внутри фигуры.
- setTileFlip: Определяет, будет ли элемент мозаики отражён по горизонтали, вертикали или оба направления.
- setTileOffsetX: Устанавливает горизонтальное смещение мозаичного элемента (в пунктах) от начала фигуры.
- setTileOffsetY: Устанавливает вертикальное смещение мозаичного элемента (в пунктах) от начала фигуры.
- setTileScaleX: Определяет горизонтальный масштаб мозаичного элемента в процентах.
- setTileScaleY: Определяет вертикальный масштаб мозаичного элемента в процентах.
Следующий пример кода показывает, как добавить прямоугольную фигуру с мозаичной заливкой картинкой и настроить параметры мозаики:
// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let firstSlide = presentation.getSlides().get_Item(0);
// Добавьте автофигуру прямоугольника.
let shape = firstSlide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 190, 95);
// Установите тип заливки фигуры в Picture.
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Picture));
// Загрузите изображение и добавьте его в ресурсы презентации.
let sourceImage = aspose.slides.Images.fromFile("lotus.png");
let presentationImage = presentation.getImages().addImage(sourceImage);
sourceImage.dispose();
// Присвойте изображение фигуре.
let pictureFillFormat = shape.getFillFormat().getPictureFillFormat();
pictureFillFormat.getPicture().setImage(presentationImage);
// Настройте режим заливки картинкой и свойства мозаики.
pictureFillFormat.setPictureFillMode(aspose.slides.PictureFillMode.Tile);
pictureFillFormat.setTileOffsetX(-32);
pictureFillFormat.setTileOffsetY(-32);
pictureFillFormat.setTileScaleX(50);
pictureFillFormat.setTileScaleY(50);
pictureFillFormat.setTileAlignment(java.newByte(aspose.slides.RectangleAlignment.BottomRight));
pictureFillFormat.setTileFlip(aspose.slides.TileFlip.FlipBoth);
// Сохраните файл PPTX на диск.
presentation.save("tile.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Сплошная заливка цветом
В PowerPoint сплошная заливка цветом — это параметр форматирования, который заполняет фигуру одним однородным цветом. Этот простой фоновый цвет применяется без градиентов, текстур или узоров.
Чтобы применить сплошную заливку цветом к фигуре с помощью Aspose.Slides, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Установите свойство [FillType] фигуры в
Solid. - Назначьте предпочтительный цвет заливки фигуре.
- Сохраните изменённую презентацию в файл PPTX.
// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let slide = presentation.getSlides().get_Item(0);
// Добавьте автофигуру типа Rectangle.
let shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 150, 75);
// Установите тип заливки в Solid.
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
// Установите цвет заливки.
shape.getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "YELLOW"));
// Сохраните файл PPTX на диск.
presentation.save("solid_color_fill.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Установить прозрачность
В PowerPoint при применении сплошной, градиентной, картинкой или текстурной заливки к фигурам можно также задать уровень прозрачности, контролирующий непрозрачность заливки. Более высокое значение прозрачности делает фигуру более полупрозрачной, позволяя видеть фон или находящиеся позади объекты.
Aspose.Slides позволяет задать уровень прозрачности, изменяя альфа‑компонент цвета, используемого для заливки. Вот как это сделать:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Установите свойство [FillType] фигуры в
Solid. - Используйте
Color, чтобы определить цвет с прозрачностью (компонентalphaуправляет прозрачностью). - Сохраните презентацию.
// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let slide = presentation.getSlides().get_Item(0);
// Добавьте сплошную прямоугольную автофигуру.
let solidShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 150, 75);
// Добавьте прозрачную прямоугольную автофигуру поверх сплошной фигуры.
let transparentShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 80, 80, 150, 75);
transparentShape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
transparentShape.getFillFormat().getSolidFillColor().setColor(java.newInstanceSync("java.awt.Color", 255, 255, 0, 204));
// Сохраните файл PPTX на диск.
presentation.save("shape_transparency.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Вращение фигур
Aspose.Slides позволяет вращать фигуры в презентациях PowerPoint. Это может быть полезно при размещении визуальных элементов с определённым выравниванием или дизайнерскими требованиями.
Чтобы вращать фигуру на слайде, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Установите свойство вращения фигуры на требуемый угол.
- Сохраните презентацию.
// Создайте экземпляр класса Presentation, представляющий файл презентации.
let presentation = new aspose.slides.Presentation();
try {
// Получите первый слайд.
let slide = presentation.getSlides().get_Item(0);
// Добавьте автофигуру типа Rectangle.
let shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 150, 75);
// Поверните фигуру на 5 градусов.
shape.setRotation(5);
// Сохраните файл PPTX на диск.
presentation.save("shape_rotation.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Добавление 3D‑скосов
Aspose.Slides позволяет применять 3D‑скосы к фигурам, настраивая их свойства [ThreeDFormat].
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Настройте свойства [ThreeDFormat] фигуры, определив параметры скосов.
- Сохраните презентацию.
// Создайте экземпляр класса Presentation.
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
// Добавьте фигуру на слайд.
let shape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Ellipse, 50, 50, 100, 100);
shape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape.getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "GREEN"));
shape.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
shape.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "ORANGE"));
shape.getLineFormat().setWidth(2.0);
// Установите свойства ThreeDFormat фигуры.
shape.getThreeDFormat().setDepth(4);
shape.getThreeDFormat().getBevelTop().setBevelType(aspose.slides.BevelPresetType.Circle);
shape.getThreeDFormat().getBevelTop().setHeight(6);
shape.getThreeDFormat().getBevelTop().setWidth(6);
shape.getThreeDFormat().getCamera().setCameraType(aspose.slides.CameraPresetType.OrthographicFront);
shape.getThreeDFormat().getLightRig().setLightType(aspose.slides.LightRigPresetType.ThreePt);
shape.getThreeDFormat().getLightRig().setDirection(aspose.slides.LightingDirection.Top);
// Сохраните презентацию как файл PPTX.
presentation.save("3D_bevel_effect.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Добавление 3D‑вращения
Aspose.Slides позволяет применять 3D‑вращение к фигурам, настраивая их свойства [ThreeDFormat].
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Используйте методы setCameraType и setLightType для определения 3D‑вращения.
- Сохраните презентацию.
// Создайте экземпляр класса Presentation.
let presentation = new aspose.slides.Presentation();
try {
let slide = presentation.getSlides().get_Item(0);
let autoShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 50, 50, 150, 75);
autoShape.getTextFrame().setText("Hello, Aspose!");
autoShape.getThreeDFormat().setDepth(6);
autoShape.getThreeDFormat().getCamera().setRotation(40, 35, 20);
autoShape.getThreeDFormat().getCamera().setCameraType(aspose.slides.CameraPresetType.IsometricLeftUp);
autoShape.getThreeDFormat().getLightRig().setLightType(aspose.slides.LightRigPresetType.Balanced);
// Сохраните презентацию как файл PPTX.
presentation.save("3D_rotation_effect.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Результат:

Сброс форматирования
Следующий код Java показывает, как сбросить форматирование слайда и вернуть положение, размер и форматирование всех фигур с заполнителями на [LayoutSlide] к их настройкам по умолчанию:
let presentation = new aspose.slides.Presentation("sample.pptx");
try {
for (let i = 0; i < presentation.getSlides().size(); i++) {
let slide = presentation.getSlides().get_Item(i);
// Сбросьте каждую фигуру на слайде, у которой есть заполнитель в макете.
slide.reset();
}
presentation.save("reset_formatting.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
FAQ
Влияет ли форматирование фигур на конечный размер файла презентации?
Только незначительно. Встроенные изображения и медиа‑файлы занимают большую часть объёма файла, тогда как параметры фигур, такие как цвета, эффекты и градиенты, хранятся как метаданные и практически не увеличивают размер.
Как определить фигуры на слайде, имеющие одинаковое форматирование, чтобы сгруппировать их?
Сравните ключевые свойства форматирования каждой фигуры — параметры заливки, линии и эффекты. Если все соответствующие значения совпадают, считается, что стили идентичны, и их можно логически сгруппировать, что упрощает последующее управление стилями.
Можно ли сохранить набор пользовательских стилей фигур в отдельный файл для повторного использования в других презентациях?
Да. Сохраните образцы фигур с нужными стилями в шаблон набора слайдов или в файл шаблона .POTX. При создании новой презентации откройте шаблон, клонируйте необходимые стилизованные фигуры и повторно примените их форматирование там, где это требуется.