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

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

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

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

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

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

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

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

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

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

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

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

Добавление 3D‑поворотов
Aspose.Slides позволяет применять 3D‑повороты к фигурам, настраивая их свойства ThreeDFormat.
Чтобы применить 3D‑поворот к фигуре:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте AutoShape на слайд.
- Используйте setCameraType и setLightType для определения 3D‑поворота.
- Сохраните презентацию.
Ниже показан PHP‑код, демонстрирующий применение 3D‑поворота к фигуре:
// Создайте экземпляр класса Presentation.
$presentation = new Presentation();
try {
$slide = $presentation->getSlides()->get_Item(0);
$autoShape = $slide->getShapes()->addAutoShape(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(CameraPresetType::IsometricLeftUp);
$autoShape->getThreeDFormat()->getLightRig()->setLightType(LightRigPresetType::Balanced);
// Сохраните презентацию в файл PPTX.
$presentation->save("3D_rotation_effect.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Результат:

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