Создание или управление узлом фигуры SmartArt в PowerPoint
Добавление узла SmartArt в презентацию PowerPoint с использованием PHP
Aspose.Slides для PHP через Java предоставляет самый простой API для управления фигурами SmartArt простым способом. Следующий пример кода поможет добавить узел и дочерний узел внутри фигуры SmartArt.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Перейдите через каждую фигуру на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и преобразуйте выбранную фигуру в SmartArt, если это SmartArt.
- Добавьте новый узел в фигуре SmartArt NodeCollection и установите текст в TextFrame.
- Теперь добавьте дочерний узел в недавно добавленный SmartArt узел и установите текст в TextFrame.
- Сохраните презентацию.
# Загрузите нужную презентацию
$pres = new Presentation("SimpleSmartArt.pptx");
try {
# Перейдите через каждую фигуру на первом слайде
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Проверьте, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Преобразуйте фигуру в SmartArt
$smart = $shape;
# Добавление нового узла SmartArt
$TemNode = $smart->getAllNodes()->addNode();
# Добавление текста
$TemNode->getTextFrame()->setText("Тест");
# Добавление нового дочернего узла в родительский узел. Он будет добавлен в конец коллекции
$newNode = $TemNode->getChildNodes()->addNode();
# Добавление текста
$newNode->getTextFrame()->setText("Новый узел добавлен");
}
}
# Сохранение презентации
$pres->save("AddSmartArtNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Добавление узла SmartArt в конкретной позиции
В следующем примере кода мы объяснили, как добавить дочерние узлы, принадлежащие соответствующим узлам фигуры SmartArt, в определённой позиции.
- Создайте экземпляр класса Presentation.
- Получите ссылку на первый слайд, используя его индекс.
- Добавьте фигуру типа StackedList в доступный слайд.
- Получите доступ к первому узлу в добавленной фигуре SmartArt.
- Теперь добавьте дочерний узел для выбранного узла в позиции 2 и установите его текст.
- Сохраните презентацию.
# Создайте экземпляр презентации
$pres = new Presentation();
try {
# Доступ к слайду презентации
$slide = $pres->getSlides()->get_Item(0);
# Добавление фигуры Smart Art IShape
$smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::StackedList);
# Получение доступа к узлу SmartArt по индексу 0
$node = $smart->getAllNodes()->get_Item(0);
# Добавление нового дочернего узла в позиции 2 в родительском узле
$chNode = $node->getChildNodes()->addNodeByPosition(2);
# Добавить текст
$chNode->getTextFrame()->setText("Добавлен образец текста");
# Сохранить презентацию
$pres->save("AddSmartArtNodeByPosition.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Доступ к узлу SmartArt в презентации PowerPoint с использованием PHP
Следующий пример кода поможет получить доступ к узлам внутри фигуры SmartArt. Пожалуйста, обратите внимание, что вы не можете изменить LayoutType SmartArt, так как он является только для чтения и устанавливается только при добавлении фигуры SmartArt.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Перейдите через каждую фигуру на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и преобразуйте выбранную фигуру в SmartArt, если это SmartArt.
- Перейдите через все узлы внутри фигуры SmartArt.
- Получите и отобразите информацию, такую как позиция узла SmartArt, уровень и текст.
# Создание экземпляра класса Presentation
$pres = new Presentation("SmartArtShape.pptx");
try {
# Получите первый слайд
$slide = $pres->getSlides()->get_Item(0);
# Перейдите через каждую фигуру на первом слайде
foreach($slide->getShapes() as $shape) {
# Проверьте, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Преобразуйте фигуру в SmartArt
$smart = $shape;
# Перейдите через все узлы внутри SmartArt
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
# Получение узла SmartArt по индексу i
$node = $smart->getAllNodes()->get_Item($i);
# Печать параметров узла SmartArt
System->out->print($node->getTextFrame()->getText() . " " . $node->getLevel() . " " . $node->getPosition());
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Доступ к дочернему узлу SmartArt
Следующий пример кода поможет получить доступ к дочерним узлам, принадлежащим соответствующим узлам фигуры SmartArt.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Перейдите через каждую фигуру на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и преобразуйте выбранную фигуру в SmartArt, если это SmartArt.
- Перейдите через все узлы внутри фигуры SmartArt.
- Для каждого выбранного узла SmartArt узла пройдите через все дочерние узлы внутри конкретного узла.
- Получите и отобразите информацию, такую как позиция дочернего узла, уровень и текст.
# Создание экземпляра класса Presentation
$pres = new Presentation("AccessChildNodes.pptx");
try {
# Получение первого слайда
$slide = $pres->getSlides()->get_Item(0);
# Перейдите через каждую фигуру на первом слайде
foreach($slide->getShapes() as $shape) {
# Проверьте, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Преобразуйте фигуру в SmartArt
$smart = $shape;
# Перейдите через все узлы внутри SmartArt
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
# Получение узла SmartArt по индексу i
$node0 = $smart->getAllNodes()->get_Item($i);
# Перейдите через дочерние узлы в узле SmartArt по индексу i
for($j = 0; $j < java_values($node0->getChildNodes()->size()) ; $j++) {
# Получение дочернего узла в узле SmartArt
$node = $node0->getChildNodes()->get_Item($j);
# Печать параметров дочернего узла SmartArt
System->out->print("j = " . $j . ", Text = " . $node->getTextFrame()->getText() . ", Level = " . $node->getLevel() . ", Position = " . $node->getPosition());
}
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Доступ к дочернему узлу SmartArt в конкретной позиции
В этом примере мы изучим, как получить доступ к дочерним узлам в определённой позиции, принадлежащей соответствующим узлам фигуры SmartArt.
- Создайте экземпляр класса Presentation.
- Получите ссылку на первый слайд, используя его индекс.
- Добавьте фигуру типа StackedList.
- Получите доступ к добавленной фигуре SmartArt.
- Получите узел по индексу 0 для доступа к фигуре SmartArt.
- Теперь получите доступ к дочернему узлу в позиции 1 для доступа к узлу SmartArt, используя метод get_Item().
- Получите и отобразите информацию, такую как позиция дочернего узла, уровень и текст.
# Создание экземпляра презентации
$pres = new Presentation();
try {
# Доступ к первому слайду
$slide = $pres->getSlides()->get_Item(0);
# Добавление фигуры SmartArt на первый слайд
$smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::StackedList);
# Доступ к узлу SmartArt по индексу 0
$node = $smart->getAllNodes()->get_Item(0);
# Получение дочернего узла в позиции 1 в родительском узле
$position = 1;
$chNode = $node->getChildNodes()->get_Item($position);
# Печать параметров дочернего узла SmartArt
System->out->print("Text = " . $chNode->getTextFrame()->getText() . ", Level = " . $chNode->getLevel() . ", Position = " . $chNode->getPosition());
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Удаление узла SmartArt в презентации PowerPoint с использованием PHP
В этом примере мы изучим, как удалить узлы внутри фигуры SmartArt.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Перейдите через каждую фигуру на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и преобразуйте выбранную фигуру в SmartArt, если это SmartArt.
- Проверьте, содержит ли SmartArt более 0 узлов.
- Выберите узел SmartArt для удаления.
- Теперь удалите выбранный узел с помощью метода RemoveNode.
- Сохраните презентацию.
# Загрузите нужную презентацию
$pres = new Presentation("AddSmartArtNode.pptx");
try {
# Перейдите через каждую фигуру на первом слайде
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Проверьте, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Преобразуйте фигуру в SmartArt
$smart = $shape;
if (java_values($smart->getAllNodes()->size()) > 0) {
# Получение узла SmartArt по индексу 0
$node = $smart->getAllNodes()->get_Item(0);
# Удаление выбранного узла
$smart->getAllNodes()->removeNode($node);
}
}
}
# Сохранить презентацию
$pres->save("RemoveSmartArtNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Удаление узла SmartArt в конкретной позиции
В этом примере мы изучим, как удалить узлы внутри фигуры SmartArt в конкретной позиции.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на первый слайд, используя его индекс.
- Перейдите через каждую фигуру на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и преобразуйте выбранную фигуру в SmartArt, если это SmartArt.
- Выберите узел фигуры SmartArt по индексу 0.
- Теперь проверьте, имеет ли выбранный узел SmartArt более 2 дочерних узлов.
- Теперь удалите узел по позиции 1 с помощью метода RemoveNode.
- Сохраните презентацию.
# Загрузите нужную презентацию
$pres = new Presentation("AddSmartArtNode.pptx");
try {
# Перейдите через каждую фигуру на первом слайде
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Проверьте, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Преобразуйте фигуру в SmartArt
$smart = $shape;
if (java_values($smart->getAllNodes()->size()) > 0) {
# Получение узла SmartArt по индексу 0
$node = $smart->getAllNodes()->get_Item(0);
if (java_values($node->getChildNodes()->size()) >= 2) {
# Удаление дочернего узла на позиции 1
$node->getChildNodes()->removeNode(1);
}
}
}
}
# Сохранить презентацию
$pres->save("RemoveSmartArtNodeByPosition.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Установить пользовательскую позицию для дочернего узла в SmartArt
Теперь Aspose.Slides для PHP через Java поддерживает установку свойств X и Y для SmartArtShape. Код ниже демонстрирует, как установить пользовательскую позицию SmartArtShape, размер и вращение; также обратите внимание, что добавление новых узлов вызывает перерасчет позиций и размеров всех узлов. Кроме того, с помощью пользовательских настроек позиции пользователь может устанавливать узлы в соответствии с требованиями.
# Создание экземпляра класса Presentation
$pres = new Presentation("SimpleSmartArt.pptx");
try {
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(20, 20, 600, 500, SmartArtLayoutType::OrganizationChart);
# Перемещаем фигуру SmartArt в новую позицию
$node = $smart->getAllNodes()->get_Item(1);
$shape = $node->getShapes()->get_Item(1);
$shape->setX($shape->getX() . $shape->getWidth() * 2);
$shape->setY($shape->getY() - $shape->getHeight() * 2);
# Изменение ширины фигуры SmartArt
$node = $smart->getAllNodes()->get_Item(2);
$shape = $node->getShapes()->get_Item(1);
$shape->setWidth($shape->getWidth() . $shape->getWidth() * 2);
# Изменение высоты фигуры SmartArt
$node = $smart->getAllNodes()->get_Item(3);
$shape = $node->getShapes()->get_Item(1);
$shape->setHeight($shape->getHeight() . $shape->getHeight() * 2);
# Изменение вращения фигуры SmartArt
$node = $smart->getAllNodes()->get_Item(4);
$shape = $node->getShapes()->get_Item(1);
$shape->setRotation(90);
$pres->save("SmartArt.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Проверка вспомогательного узла
Мы будем использовать следующую исходную фигуру SmartArt для нашего исследования в различных разделах этой статьи.
Рисунок: Исходная фигура SmartArt на слайде |
В следующем примере кода мы изучим, как идентифицировать вспомогательные узлы в коллекции узлов SmartArt и изменить их.
- Создайте экземпляр класса Presentation и загрузите презентацию с фигурой SmartArt.
- Получите ссылку на второй слайд, используя его индекс.
- Перейдите через каждую фигуру на первом слайде.
- Проверьте, является ли фигура типом SmartArt, и преобразуйте выбранную фигуру в SmartArt, если это SmartArt.
- Перейдите через все узлы внутри фигуры SmartArt и проверьте, являются ли они вспомогательными узлами.
- Измените статус вспомогательного узла на обычный узел.
- Сохраните презентацию.
# Создание экземпляра презентации
$pres = new Presentation("AddNodes.pptx");
try {
# Перейдите через каждую фигуру на первом слайде
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Проверьте, является ли фигура типом SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Преобразуйте фигуру в SmartArt
$smart = $shape;
# Перейдите через все узлы фигуры SmartArt
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
$node = $smart->getAllNodes()->get_Item($i);
# Проверьте, является ли узел вспомогательным
if ($node->isAssistant()) {
# Установите вспомогательный узел в false и сделайте его обычным узлом
$node->isAssistant();
}
}
}
}
# Сохранение презентации
$pres->save("ChangeAssitantNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Рисунок: Измененные вспомогательные узлы в фигуре SmartArt внутри слайда |
Установить формат заливки узла
Aspose.Slides для PHP через Java позволяет добавлять пользовательские фигуры SmartArt и устанавливать их формат заливки. Эта статья объясняет, как создавать и получать доступ к фигурам SmartArt и устанавливать их формат заливки с использованием Aspose.Slides для PHP через Java.
Пожалуйста, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд, используя его индекс.
- Добавьте фигуру SmartArt, установив ее LayoutType.
- Установите FillFormat для узлов фигуры SmartArt.
- Запишите измененную презентацию в файл PPTX.
# Создание экземпляра презентации
$pres = new Presentation();
try {
# Получение доступа к слайду
$slide = $pres->getSlides()->get_Item(0);
# Добавление фигуры SmartArt и узлов
$chevron = $slide->getShapes()->addSmartArt(10, 10, 800, 60, SmartArtLayoutType::ClosedChevronProcess);
$node = $chevron->getAllNodes()->addNode();
$node->getTextFrame()->setText("Некоторый текст");
# Установка цвета заливки узла
foreach($node->getShapes() as $item) {
$item->getFillFormat()->setFillType(FillType::Solid);
$item->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
}
# Сохранение презентации
$pres->save("TestSmart.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Генерация миниатюры дочернего узла SmartArt
Разработчики могут генерировать миниатюру дочернего узла SmartArt, следуя приведенным ниже шагам:
- Создайте экземпляр класса Presentation.
- Добавьте SmartArt.
- Получите ссылку на узел, используя его индекс.
- Получите изображение миниатюры.
- Сохраните изображение миниатюры в любом желаемом формате.
# Создание экземпляра класса Presentation, представляющего файл PPTX
$pres = new Presentation();
try {
# Добавьте SmartArt
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicCycle);
# Получите ссылку на узел, используя его индекс
$node = $smart->getNodes()->get_Item(1);
# Получите миниатюру
$slideImage = $node->getShapes()->get_Item(0)->getImage();
# Сохраните миниатюру
try {
$slideImage->save("SmartArt_ChildNote_Thumbnail.png", ImageFormat::Png);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}