Crear o Administrar Nodo de Forma SmartArt en PowerPoint
Agregar Nodo SmartArt en Presentación de PowerPoint usando PHP
Aspose.Slides para PHP a través de Java ha proporcionado la API más sencilla para gestionar las formas SmartArt de la manera más fácil. El siguiente código de ejemplo ayudará a agregar un nodo y un nodo hijo dentro de la forma SmartArt.
- Crear una instancia de la clase Presentation y cargar la presentación con la Forma SmartArt.
- Obtener la referencia de la primera diapositiva utilizando su índice.
- Recorrer cada forma dentro de la primera diapositiva.
- Verificar si la forma es de tipo SmartArt y convertir el tipo de la forma seleccionada a SmartArt si es SmartArt.
- Agregar un nuevo Nodo en la forma SmartArt NodeCollection y establecer el texto en TextFrame.
- Ahora, Agregar un Nodo Hijo en el nuevo SmartArt Nodo y establecer el texto en TextFrame.
- Guardar la Presentación.
# Cargar la presentación deseada
$pres = new Presentation("SimpleSmartArt.pptx");
try {
# Recorrer cada forma dentro de la primera diapositiva
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Verificar si la forma es de tipo SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Convertir la forma a SmartArt
$smart = $shape;
# Agregar un nuevo Nodo SmartArt
$TemNode = $smart->getAllNodes()->addNode();
# Agregar texto
$TemNode->getTextFrame()->setText("Test");
# Agregar un nuevo nodo hijo en el nodo padre. Se añadirá al final de la colección
$newNode = $TemNode->getChildNodes()->addNode();
# Agregar texto
$newNode->getTextFrame()->setText("Nuevo Nodo Agregado");
}
}
# Guardar presentación
$pres->save("AddSmartArtNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Agregar Nodo SmartArt en Posición Específica
En el siguiente código de ejemplo explicamos cómo agregar los nodos hijos pertenecientes a los respectivos nodos de la forma SmartArt en una posición particular.
- Crear una instancia de la clase Presentation.
- Obtener la referencia de la primera diapositiva utilizando su índice.
- Agregar una forma StackedList tipo SmartArt en la diapositiva accedida.
- Acceder al primer nodo en la forma SmartArt agregada.
- Ahora, agregar el Nodo Hijo para el Nodo seleccionado en la posición 2 y establecer su texto.
- Guardar la Presentación.
# Crear una instancia de presentación
$pres = new Presentation();
try {
# Acceder a la diapositiva de presentación
$slide = $pres->getSlides()->get_Item(0);
# Agregar la forma Smart Art IShape
$smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::StackedList);
# Accediendo al nodo SmartArt en el índice 0
$node = $smart->getAllNodes()->get_Item(0);
# Agregar un nuevo nodo hijo en la posición 2 en el nodo padre
$chNode = $node->getChildNodes()->addNodeByPosition(2);
# Agregar Texto
$chNode->getTextFrame()->setText("Texto de Ejemplo Agregado");
# Guardar Presentación
$pres->save("AddSmartArtNodeByPosition.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Acceder a Nodo SmartArt en Presentación de PowerPoint usando PHP
El siguiente código de ejemplo ayudará a acceder a los nodos dentro de la forma SmartArt. Tenga en cuenta que no puede cambiar el LayoutType del SmartArt, ya que es de solo lectura y se establece solo cuando se agrega la forma SmartArt.
- Crear una instancia de la clase Presentation y cargar la presentación con la Forma SmartArt.
- Obtener la referencia de la primera diapositiva utilizando su índice.
- Recorrer cada forma dentro de la primera diapositiva.
- Verificar si la forma es de tipo SmartArt y convertir el tipo de la forma seleccionada a SmartArt si es SmartArt.
- Recorrer todos los Nodos dentro de la Forma SmartArt.
- Acceder y mostrar información como la posición del Nodo SmartArt, nivel y texto.
# Instanciar la clase Presentation
$pres = new Presentation("SmartArtShape.pptx");
try {
# Obtener la primera diapositiva
$slide = $pres->getSlides()->get_Item(0);
# Recorrer cada forma dentro de la primera diapositiva
foreach($slide->getShapes() as $shape) {
# Verificar si la forma es de tipo SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Convertir forma a SmartArt
$smart = $shape;
# Recorrer todos los nodos dentro del SmartArt
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
# Accediendo al nodo SmartArt en el índice i
$node = $smart->getAllNodes()->get_Item($i);
# Imprimiendo los parámetros del nodo SmartArt
System->out->print($node->getTextFrame()->getText() . " " . $node->getLevel() . " " . $node->getPosition());
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Acceder a Nodo Hijo SmartArt
El siguiente código de ejemplo ayudará a acceder a los nodos hijos pertenecientes a los respectivos nodos de la forma SmartArt.
- Crear una instancia de la clase Presentation y cargar la presentación con la Forma SmartArt.
- Obtener la referencia de la primera diapositiva utilizando su índice.
- Recorrer cada forma dentro de la primera diapositiva.
- Verificar si la forma es de tipo SmartArt y convertir el tipo de la forma seleccionada a SmartArt si es SmartArt.
- Recorrer todos los Nodos dentro de la Forma SmartArt.
- Para cada Nodo, recorrer todos los Nodos Hijos dentro del nodo particular.
- Acceder y mostrar información como la posición del Nodo Hijo, nivel y texto.
# Instanciar la clase Presentation
$pres = new Presentation("AccessChildNodes.pptx");
try {
# Obtener la primera diapositiva
$slide = $pres->getSlides()->get_Item(0);
# Recorrer cada forma dentro de la primera diapositiva
foreach($slide->getShapes() as $shape) {
# Verificar si la forma es de tipo SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Convertir forma a SmartArt
$smart = $shape;
# Recorrer todos los nodos dentro del SmartArt
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
# Accediendo al nodo SmartArt en el índice i
$node0 = $smart->getAllNodes()->get_Item($i);
# Recorrer los nodos hijos en el nodo SmartArt en el índice i
for($j = 0; $j < java_values($node0->getChildNodes()->size()) ; $j++) {
# Accediendo al nodo hijo en el nodo SmartArt
$node = $node0->getChildNodes()->get_Item($j);
# Imprimiendo los parámetros del nodo hijo SmartArt
System->out->print("j = " . $j . ", Texto = " . $node->getTextFrame()->getText() . ", Nivel = " . $node->getLevel() . ", Posición = " . $node->getPosition());
}
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Acceder a Nodo Hijo SmartArt en Posición Específica
En este ejemplo, aprenderemos a acceder a los nodos hijos en una posición particular pertenecientes a los respectivos nodos de la forma SmartArt.
- Crear una instancia de la clase Presentation.
- Obtener la referencia de la primera diapositiva utilizando su índice.
- Agregar una forma StackedList tipo SmartArt.
- Acceder a la forma SmartArt agregada.
- Acceder al nodo en el índice 0 para la forma SmartArt accedida.
- Ahora, acceder al Nodo Hijo en la posición 1 para el nodo SmartArt accedido usando el método get_Item().
- Acceder y mostrar información como la posición del Nodo Hijo, nivel y texto.
# Instanciar la presentación
$pres = new Presentation();
try {
# Accediendo a la primera diapositiva
$slide = $pres->getSlides()->get_Item(0);
# Agregando la forma SmartArt en la primera diapositiva
$smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::StackedList);
# Accediendo al nodo SmartArt en el índice 0
$node = $smart->getAllNodes()->get_Item(0);
# Accediendo al nodo hijo en la posición 1 en el nodo padre
$position = 1;
$chNode = $node->getChildNodes()->get_Item($position);
# Imprimiendo los parámetros del nodo hijo SmartArt
System->out->print("Texto = " . $chNode->getTextFrame()->getText() . ", Nivel = " . $chNode->getLevel() . ", Posición = " . $chNode->getPosition());
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Eliminar Nodo SmartArt en Presentación de PowerPoint usando PHP
En este ejemplo, aprenderemos a eliminar los nodos dentro de la forma SmartArt.
- Crear una instancia de la clase Presentation y cargar la presentación con la Forma SmartArt.
- Obtener la referencia de la primera diapositiva utilizando su índice.
- Recorrer cada forma dentro de la primera diapositiva.
- Verificar si la forma es de tipo SmartArt y convertir la forma seleccionada a SmartArt si es SmartArt.
- Verificar si el SmartArt tiene más de 0 nodos.
- Seleccionar el nodo SmartArt a eliminar.
- Ahora, eliminar el nodo seleccionado utilizando el método RemoveNode .
- Guardar la Presentación.
# Cargar la presentación deseada
$pres = new Presentation("AddSmartArtNode.pptx");
try {
# Recorrer cada forma dentro de la primera diapositiva
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Verificar si la forma es de tipo SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Convertir la forma a SmartArt
$smart = $shape;
if (java_values($smart->getAllNodes()->size()) > 0) {
# Accediendo al nodo SmartArt en el índice 0
$node = $smart->getAllNodes()->get_Item(0);
# Eliminando el nodo seleccionado
$smart->getAllNodes()->removeNode($node);
}
}
}
# Guardar presentación
$pres->save("RemoveSmartArtNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Eliminar Nodo SmartArt en Posición Específica
En este ejemplo, aprenderemos a eliminar los nodos dentro de la forma SmartArt en una posición particular.
- Crear una instancia de la clase Presentation y cargar la presentación con la Forma SmartArt.
- Obtener la referencia de la primera diapositiva utilizando su índice.
- Recorrer cada forma dentro de la primera diapositiva.
- Verificar si la forma es de tipo SmartArt y convertir la forma seleccionada a SmartArt si es SmartArt.
- Seleccionar el nodo de forma SmartArt en el índice 0.
- Ahora, verificar si el nodo SmartArt seleccionado tiene más de 2 nodos hijo.
- Ahora, eliminar el nodo en Posición 1 utilizando el método RemoveNode .
- Guardar la Presentación.
# Cargar la presentación deseada
$pres = new Presentation("AddSmartArtNode.pptx");
try {
# Recorrer cada forma dentro de la primera diapositiva
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Verificar si la forma es de tipo SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Convertir la forma a SmartArt
$smart = $shape;
if (java_values($smart->getAllNodes()->size()) > 0) {
# Accediendo al nodo SmartArt en el índice 0
$node = $smart->getAllNodes()->get_Item(0);
if (java_values($node->getChildNodes()->size()) >= 2) {
# Eliminando el nodo hijo en la posición 1
$node->getChildNodes()->removeNode(1);
}
}
}
}
# Guardar presentación
$pres->save("RemoveSmartArtNodeByPosition.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Establecer Posición Personalizada para Nodo Hijo en SmartArt
Ahora Aspose.Slides para PHP a través de Java admite el establecimiento de las propiedades SmartArtShape X y Y. El fragmento de código a continuación muestra cómo establecer una posición personalizada de SmartArtShape, tamaño y rotación. También tenga en cuenta que añadir nuevos nodos provoca un recalculo de las posiciones y tamaños de todos los nodos. Además, con la configuración de posición personalizada, el usuario puede establecer los nodos según los requisitos.
# Instanciar la clase Presentation
$pres = new Presentation("SimpleSmartArt.pptx");
try {
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(20, 20, 600, 500, SmartArtLayoutType::OrganizationChart);
# Mover la forma SmartArt a una nueva posición
$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);
# Cambiar el ancho de la forma SmartArt
$node = $smart->getAllNodes()->get_Item(2);
$shape = $node->getShapes()->get_Item(1);
$shape->setWidth($shape->getWidth() + $shape->getWidth() * 2);
# Cambiar la altura de la forma SmartArt
$node = $smart->getAllNodes()->get_Item(3);
$shape = $node->getShapes()->get_Item(1);
$shape->setHeight($shape->getHeight() + $shape->getHeight() * 2);
# Cambiar la rotación de la forma 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();
}
Comprobar Nodo Asistente
Usaremos la siguiente forma SmartArt fuente para nuestra investigación en diferentes secciones de este artículo.
Figura: Forma SmartArt fuente en la diapositiva |
En el siguiente código de ejemplo investigaremos cómo identificar Nodos Asistentes en la colección de nodos SmartArt y cambiarlos.
- Crear una instancia de la clase Presentation y cargar la presentación con la Forma SmartArt.
- Obtener la referencia de la segunda diapositiva utilizando su índice.
- Recorrer cada forma dentro de la primera diapositiva.
- Verificar si la forma es de tipo SmartArt y convertir la forma seleccionada a SmartArt si es SmartArt.
- Recorrer todos los nodos dentro de la forma SmartArt y verificar si son Nodos Asistentes.
- Cambiar el estado de Nodo Asistente a nodo normal.
- Guardar la Presentación.
# Crear una instancia de presentación
$pres = new Presentation("AddNodes.pptx");
try {
# Recorrer cada forma dentro de la primera diapositiva
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Verificar si la forma es de tipo SmartArt
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Convertir la forma a SmartArt
$smart = $shape;
# Recorrer todos los nodos de la forma SmartArt
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
$node = $smart->getAllNodes()->get_Item($i);
# Verificar si el nodo es un nodo asistente
if ($node->isAssistant()) {
# Establecer el nodo asistente a falso y convertirlo en un nodo normal
$node->isAssistant(false);
}
}
}
}
# Guardar presentación
$pres->save("ChangeAssitantNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Figura: Nodos Asistentes cambiados en la forma SmartArt dentro de la diapositiva |
Establecer Formato de Relleno de Nodo
Aspose.Slides para PHP a través de Java permite añadir formas SmartArt personalizadas y establecer su formato de relleno. Este artículo explica cómo crear y acceder a las formas SmartArt y establecer su formato de relleno utilizando Aspose.Slides para PHP a través de Java.
Siga los pasos a continuación:
- Crear una instancia de la clase Presentation.
- Obtener la referencia de una diapositiva utilizando su índice.
- Agregar una forma SmartArt estableciendo su LayoutType.
- Establecer el FillFormat para los nodos de la forma SmartArt.
- Escribir la presentación modificada como un archivo PPTX.
# Instanciar la presentación
$pres = new Presentation();
try {
# Accediendo a la diapositiva
$slide = $pres->getSlides()->get_Item(0);
# Agregando forma SmartArt y nodos
$chevron = $slide->getShapes()->addSmartArt(10, 10, 800, 60, SmartArtLayoutType::ClosedChevronProcess);
$node = $chevron->getAllNodes()->addNode();
$node->getTextFrame()->setText("Algún texto");
# Estableciendo el color de relleno del nodo
foreach($node->getShapes() as $item) {
$item->getFillFormat()->setFillType(FillType::Solid);
$item->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
}
# Guardar la presentación
$pres->save("TestSmart.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Generar Miniatura de Nodo Hijo SmartArt
Los desarrolladores pueden generar una miniatura del nodo hijo de un SmartArt siguiendo los pasos a continuación:
- Crear una instancia de la clase Presentation.
- Agregar SmartArt.
- Obtener la referencia de un nodo utilizando su índice.
- Obtener la imagen de miniatura.
- Guardar la imagen de miniatura en cualquier formato de imagen deseado.
# Instanciar la clase Presentation que representa el archivo PPTX
$pres = new Presentation();
try {
# Agregar SmartArt
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicCycle);
# Obtener la referencia de un nodo utilizando su índice
$node = $smart->getNodes()->get_Item(1);
# Obtener miniatura
$slideImage = $node->getShapes()->get_Item(0)->getImage();
# Guardar miniatura
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();
}
}