Управление графикой SmartArt в презентациях с использованием PHP
Создание фигуры SmartArt
Aspose.Slides for PHP via Java предоставляет API для создания фигур SmartArt. Чтобы создать фигуру SmartArt на слайде, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд, используя его индекс.
- Добавить фигуру SmartArt путем установки её LayoutType.
- Сохраните изменённую презентацию в файл PPTX.
# Создать экземпляр класса Presentation
$pres = new Presentation();
try {
# Получить первый слайд
$slide = $pres->getSlides()->get_Item(0);
# Добавить фигуру SmartArt
$smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::BasicBlockList);
# Сохранить презентацию
$pres->save("SimpleSmartArt.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
![]() |
|---|
| Рисунок: Фигура SmartArt добавлена на слайд |
Доступ к фигуре SmartArt на слайде
В следующем коде будет показано, как получить доступ к фигурам SmartArt, добавленным в слайд презентации. В примере кода мы будем проходить по каждой фигуре внутри слайда и проверять, является ли она фигурой SmartArt. Если фигура относится к типу SmartArt, мы приведём её к экземпляру SmartArt .
# Загрузить нужную презентацию
$pres = new Presentation("AccessSmartArtShape.pptx");
try {
# Обойти каждую фигуру на первом слайде
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Проверить, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Привести фигуру к типу SmartArtEx
$smart = $shape;
echo("Shape Name:" . $smart->getName());
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Доступ к фигуре SmartArt с определённым типом макета
В следующем примере кода показано, как получить доступ к фигуре SmartArt с определённым LayoutType. Обратите внимание, что изменить LayoutType у SmartArt нельзя, так как он только для чтения и задаётся только при добавлении фигуры SmartArt.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Пройдитесь по каждой фигуре внутри первого слайда.
- Проверьте, относится ли фигура к типу SmartArt, и приведите выбранную фигуру к SmartArt, если это SmartArt.
- Проверьте фигуру SmartArt с определённым LayoutType и выполните необходимые действия.
$pres = new Presentation("AccessSmartArtShape.pptx");
try {
# Обойти каждую фигуру на первом слайде
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Проверить, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Привести фигуру к типу SmartArtEx
$smart = $shape;
# Проверка макета SmartArt
if ($smart->getLayout() == SmartArtLayoutType::BasicBlockList) {
echo("Do some thing here....");
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Изменение стиля фигуры SmartArt
В этом примере мы научимся изменять быстрый стиль любой фигуры SmartArt.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Пройдитесь по каждой фигуре внутри первого слайда.
- Проверьте, относится ли фигура к типу SmartArt, и приведите выбранную фигуру к SmartArt, если это SmartArt.
- Найдите фигуру SmartArt с определённым Style.
- Установите новый Style для фигуры SmartArt.
- Сохраните презентацию.
# Создать экземпляр класса Presentation
$pres = new Presentation("SimpleSmartArt.pptx");
try {
# Получить первый слайд
$slide = $pres->getSlides()->get_Item(0);
# Обойти каждую фигуру в первом слайде
foreach($slide->getShapes() as $shape) {
# Проверить, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Привести фигуру к типу SmartArtEx
$smart = $shape;
# Проверка стиля SmartArt
if ($smart->getQuickStyle() == SmartArtQuickStyleType::SimpleFill) {
# Изменение стиля SmartArt
$smart->setQuickStyle(SmartArtQuickStyleType::Cartoon);
}
}
}
# Сохранить презентацию
$pres->save("ChangeSmartArtStyle.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
![]() |
|---|
| Рисунок: Фигура SmartArt со изменённым стилем |
Изменение цветового стиля фигуры SmartArt
В этом примере мы научимся изменять цветовой стиль любой фигуры SmartArt. В следующем примере кода будет показано, как получить доступ к фигуре SmartArt с определённым цветовым стилем и изменить его.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Пройдитесь по каждой фигуре внутри первого слайда.
- Проверьте, относится ли фигура к типу SmartArt, и приведите выбранную фигуру к SmartArt, если это SmartArt.
- Найдите фигуру SmartArt с определённым Color Style.
- Установите новый Color Style для фигуры SmartArt.
- Сохраните презентацию.
# Создать экземпляр класса Presentation
$pres = new Presentation("SimpleSmartArt.pptx");
try {
# Получить первый слайд
$slide = $pres->getSlides()->get_Item(0);
# Обойти каждую фигуру в первом слайде
foreach($slide->getShapes() as $shape) {
# Проверить, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Привести фигуру к типу SmartArtEx
$smart = $shape;
# Проверка типа цвета SmartArt
if ($smart->getColorStyle() == SmartArtColorType::ColoredFillAccent1) {
# Изменение типа цвета SmartArt
$smart->setColorStyle(SmartArtColorType::ColorfulAccentColors);
}
}
}
# Сохранить презентацию
$pres->save("ChangeSmartArtColorStyle.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
![]() |
|---|
| Рисунок: Фигура SmartArt с изменённым цветовым стилем |
Часто задаваемые вопросы
Могу ли я анимировать SmartArt как единый объект?
Да. SmartArt является фигурой, поэтому вы можете применять стандартные анимации через API анимаций (вход, выход, акцент, траектории движения), как и для других фигур.
Как найти определённый SmartArt на слайде, если я не знаю его внутренний ID?
Задайте и используйте альтернативный текст (AltText) и ищите фигуру по этому значению — это рекомендуемый способ найти нужную фигуру.
Могу ли я сгруппировать SmartArt с другими фигурами?
Да. Вы можете сгруппировать SmartArt с другими фигурами (изображениями, таблицами и т.д.), а затем управлять группой.
Как получить изображение конкретного SmartArt (например, для предварительного просмотра или отчёта)?
Экспортируйте миниатюру/изображение фигуры; библиотека может рисовать отдельные фигуры в растровые файлы (PNG/JPG/TIFF).
Сохранится ли внешний вид SmartArt при конвертации всей презентации в PDF?
Да. Рендеринговый движок обеспечивает высокую точность при экспорте в PDF, предлагая различные варианты качества и совместимости.

