Управление SmartArt в презентациях PowerPoint с использованием PHP
Получить текст из объекта SmartArt
Теперь метод TextFrame был добавлен в класс SmartArtShape. Это свойство позволяет получать весь текст из SmartArt, если у него есть не только текст узлов. Следующий пример кода поможет получить текст из узла SmartArt.
$pres = new Presentation("Presentation.pptx");
try {
$slide = $pres->getSlides()->get_Item(0);
$smartArt = $slide->getShapes()->get_Item(0);
$smartArtNodes = $smartArt->getAllNodes();
foreach($smartArtNodes as $smartArtNode) {
foreach($smartArtNode->getShapes() as $nodeShape) {
if (!java_is_null($nodeShape->getTextFrame())) {
echo($nodeShape->getTextFrame()->getText());
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Изменить тип макета объекта SmartArt
Чтобы изменить тип макета SmartArt, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд, используя его индекс.
- Добавьте SmartArt BasicBlockList.
- Измените LayoutType на BasicProcess.
- Запишите презентацию в файл PPTX. В приведённом ниже примере мы добавили соединитель между двумя фигурами.
$pres = new Presentation();
try {
# Добавить SmartArt BasicProcess
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicBlockList);
# Изменить LayoutType на BasicProcess
$smart->setLayout(SmartArtLayoutType::BasicProcess);
# Сохранение презентации
$pres->save("ChangeSmartArtLayout_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Проверка свойства Hidden у объекта SmartArt
Обратите внимание: метод SmartArtNode::isHidden() возвращает true, если этот узел скрыт в модели данных. Чтобы проверить свойство скрытия любого узла SmartArt, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Добавьте SmartArt RadialCycle.
- Добавьте узел в SmartArt.
- Проверьте свойство visibility.
- Запишите презентацию в файл PPTX. В приведённом ниже примере мы добавили соединитель между двумя фигурами.
$pres = new Presentation();
try {
# Добавить SmartArt BasicProcess
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::RadialCycle);
# Добавить узел в SmartArt
$node = $smart->getAllNodes()->addNode();
# Проверить свойство isHidden
$hidden = $node->isHidden();// Возвращает true
if ($hidden) {
# Выполнить некоторые действия или уведомления
}
# Сохранение презентации
$pres->save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Получить или установить тип организационной диаграммы
Методы SmartArtNode::getOrganizationChartLayout() и SmartArtNode::setOrganizationChartLayout(int) позволяют получить или задать тип организационной диаграммы, связанный с текущим узлом. Чтобы получить или задать тип организационной диаграммы, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Добавьте SmartArt на слайд.
- Получите или set the organization chart type.
- Запишите презентацию в файл PPTX. В приведённом ниже примере мы добавили соединитель между двумя фигурами.
$pres = new Presentation();
try {
# Добавить SmartArt BasicProcess
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::OrganizationChart);
# Получить или установить тип организационной диаграммы
$smart->getNodes()->get_Item(0)->setOrganizationChartLayout(OrganizationChartLayoutType::LeftHanging);
# Сохранение презентации
$pres->save("OrganizeChartLayoutType_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Создать диаграмму Picture Organization
Aspose.Slides for PHP via Java предоставляет простой API для создания диаграмм PictureOrganization простым способом. Чтобы создать диаграмму на слайде:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте диаграмму с данными по умолчанию и нужным типом (ChartType::PictureOrganizationChart).
- Запишите изменённую презентацию в файл PPTX
Следующий код используется для создания диаграммы.
$pres = new Presentation("test.pptx");
try {
$smartArt = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::PictureOrganizationChart);
$pres->save("OrganizationChart.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Получить или установить состояние SmartArt
Чтобы изменить тип макета SmartArt, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Добавьте SmartArt на слайд.
- Get или Set состояние диаграммы SmartArt.
- Запишите презентацию в файл PPTX.
Следующий код используется для создания диаграммы.
# Создать экземпляр класса Presentation, представляющего файл PPTX
$pres = new Presentation();
try {
# Добавить SmartArt BasicProcess
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicProcess);
# Получить или установить состояние диаграммы SmartArt
$smart->setReversed(true);
$flag = $smart->isReversed();
# Сохранение презентации
$pres->save("output.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Поддерживает ли SmartArt зеркальное отображение/реверсирование для RTL-языков?
Да. Метод setReversed переключает направление диаграммы (LTR/RTL), если выбранный тип SmartArt поддерживает реверс.
Как скопировать SmartArt на тот же слайд или в другую презентацию, сохранив форматирование?
Вы можете клонировать форму SmartArt через коллекцию фигур (ShapeCollection::addClone) или клонировать весь слайд, содержащий эту форму. Оба подхода сохраняют размер, положение и стили.
Как отобразить SmartArt в растровом изображении для предварительного просмотра или веб-экспорта?
Отрендерите слайд (или всю презентацию) в PNG/JPEG с помощью API, преобразующего слайды/презентации в изображения — SmartArt будет отрисован как часть слайда.
Как программно выбрать конкретный SmartArt на слайде, если их несколько?
Обычной практикой является использование альтернативного текста (Alt Text) или имени, и поиск фигуры по этому атрибуту в фигурах слайда. Затем проверьте тип, чтобы убедиться, что это SmartArt. Документация описывает типичные методы поиска и работы с фигурами.