Crear o Gestionar Nodos de Forma SmartArt en PowerPoint con Java
Agregar Nodo SmartArt en Presentación de PowerPoint usando Java
Aspose.Slides para Android 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 muestra 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 del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
- Agregar un nuevo Nodo en la forma SmartArt NodeCollection y establecer el texto en el TextFrame.
- Ahora, Agregar un Nodo Hijo en el Nodo SmartArt recién agregado y establecer el texto en el TextFrame.
- Guardar la Presentación.
// Cargar la presentación deseada
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
    // Recorrer cada forma dentro de la primera diapositiva
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Verificar si la forma es del tipo SmartArt
        if (shape instanceof SmartArt) 
        {
            // Convertir la forma a SmartArt
            SmartArt smart = (SmartArt) shape;
    
            // Agregar un nuevo Nodo SmartArt
            SmartArtNode TemNode = (SmartArtNode) smart.getAllNodes().addNode();
    
            // Agregar texto
            TemNode.getTextFrame().setText("Prueba");
    
            // Agregar nuevo nodo hijo en el nodo padre. Se agregará al final de la colección
            SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
    
            // Agregar texto
            newNode.getTextFrame().setText("Nuevo Nodo Agregado");
        }
    }
    
    // Guardar la Presentación
    pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
Agregar Nodo SmartArt en Posición Específica
En el siguiente código de muestra hemos explicado cómo agregar los nodos hijo pertenecientes a los nodos respectivos 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 SmartArt tipo StackedList en la diapositiva de acceso.
- 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
Presentation pres = new Presentation();
try {
    // Acceder a la diapositiva de la presentación
    ISlide slide = pres.getSlides().get_Item(0);
    // Agregar Smart Art IShape
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
    // Accediendo al nodo SmartArt en el índice 0
    ISmartArtNode node = smart.getAllNodes().get_Item(0);
    // Agregar nuevo nodo hijo en la posición 2 en el nodo padre
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);
    // Agregar texto
    chNode.getTextFrame().setText("Texto de Ejemplo Agregado");
    // Guardar Presentación
    pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
Acceder al Nodo SmartArt en la Presentación de PowerPoint usando Java
El siguiente código de muestra 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 del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
- 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
Presentation pres = new Presentation("SmartArtShape.pptx");
try {
    // Obtener la primera diapositiva
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Recorrer cada forma dentro de la primera diapositiva
    for (IShape shape : slide.getShapes()) 
    {
        // Verificar si la forma es del tipo SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Convertir la forma a SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            // Recorrer todos los nodos dentro de SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // Accediendo al nodo SmartArt en el índice i
                SmartArtNode node = (SmartArtNode) smart.getAllNodes().get_Item(i);
    
                // Imprimiendo los parámetros del nodo SmartArt
                System.out.print(node.getTextFrame().getText() + " " + node.getLevel() + " " + node.getPosition());
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}
Acceder al Nodo Hijo SmartArt
El siguiente código de muestra ayudará a acceder a los nodos hijo pertenecientes a los nodos respectivos 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 del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
- Recorrer todos los Nodos dentro de la forma SmartArt.
- Para cada forma SmartArt Nodo, recorrer todos los Nodos Hijos dentro del nodo particular.
- Acceder y mostrar información como la posición, nivel y texto del Nodo Hijo.
// Instanciar la clase Presentation
Presentation pres = new Presentation("AccessChildNodes.pptx");
try {
    // Obtener la primera diapositiva
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Recorrer cada forma dentro de la primera diapositiva
    for (IShape shape : slide.getShapes()) 
    {
        // Verificar si la forma es del tipo SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Convertir la forma a SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            // Recorrer todos los nodos dentro de SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // Accediendo al nodo SmartArt en el índice i
                SmartArtNode node0 = (SmartArtNode) smart.getAllNodes().get_Item(i);
                
                // Recorrer los nodos hijo en el nodo SmartArt en el índice i
                for (int j = 0; j < node0.getChildNodes().size(); j++) 
                {
                    // Accediendo al nodo hijo en el nodo SmartArt
                    SmartArtNode node = (SmartArtNode) 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 (pres != null) pres.dispose();
}
Acceder al Nodo Hijo SmartArt en Posición Específica
En este ejemplo, aprenderemos a acceder a los nodos hijo en una posición particular que pertenecen a los nodos respectivos de la forma SmartArt.
- Crear una instancia de la clase Presentation.
- Obtener la referencia de la primera diapositiva utilizando su índice.
- Agregar una forma SmartArt tipo StackedList.
- 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 utilizando el método get_Item().
- Acceder y mostrar información como la posición, nivel y texto del Nodo Hijo.
// Instanciar la presentación
Presentation pres = new Presentation();
try {
    // Accediendo a la primera diapositiva
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Agregando la forma SmartArt en la primera diapositiva
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
    
    // Accediendo al nodo SmartArt en el índice 0
    ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
    // Accediendo al nodo hijo en la posición 1 en el nodo padre
    int position = 1;
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) 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 (pres != null) pres.dispose();
}
Eliminar Nodo SmartArt en la Presentación de PowerPoint usando Java
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 del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
- Verificar si el SmartArt tiene más de 0 nodos.
- Seleccionar el nodo SmartArt que se va a eliminar.
- Ahora, eliminar el nodo seleccionado utilizando el método RemoveNode.
- Guardar la Presentación.
// Cargar la presentación deseada
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // Recorrer cada forma dentro de la primera diapositiva
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Verificar si la forma es del tipo SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Convertir la forma a SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // Accediendo al nodo SmartArt en el índice 0
                ISmartArtNode 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 (pres != null) 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 del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
- Seleccionar el nodo 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
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // Recorrer cada forma dentro de la primera diapositiva
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Verificar si la forma es del tipo SmartArt
        if (shape instanceof SmartArt) 
        {
            // Convertir la forma a SmartArt
            SmartArt smart = (SmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // Accediendo al nodo SmartArt en el índice 0
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                if (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 (pres != null) pres.dispose();
}
Establecer Posición Personalizada para Nodo Hijo en SmartArt
Ahora Aspose.Slides para Android a través de Java soporta el establecimiento de las propiedades X y Y de SmartArtShape. El siguiente fragmento de código muestra cómo establecer la posición, tamaño y rotación personalizados de la forma SmartArt. También tenga en cuenta que agregar nuevos nodos causa un recalculo de las posiciones y tamaños de todos los nodos. Además, con las configuraciones de posición personalizadas, el usuario puede establecer los nodos según requisitos.
// Instanciar la clase Presentation
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try{
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);
    // Mover la forma SmartArt a una nueva posición
    ISmartArtNode node = smart.getAllNodes().get_Item(1);
    ISmartArtShape shape = node.getShapes().get_Item(1);
    shape.setX(shape.getX() + shape.getWidth() * 2);
    shape.setY(shape.getY() - shape.getHeight() * 2);
    // Cambiar los anchos 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 de origen para nuestra investigación en diferentes secciones de este artículo.
|  | 
|---|
| Figura: Forma SmartArt fuente en la diapositiva | 
En el siguiente código de muestra 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 del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
- 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
Presentation pres = new Presentation("AddNodes.pptx");
try {
    // Recorrer cada forma dentro de la primera diapositiva
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Verificar si la forma es del tipo SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Convertir la forma a SmartArt
            ISmartArt smart = (SmartArt) shape;
    
            // Recorrer todos los nodos de la forma SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                ISmartArtNode node = smart.getAllNodes().get_Item(i);
                // Verificar si el nodo es Nodo Asistente
                if (node.isAssistant()) 
                {
                    // Configurar el nodo Asistente a false y convertirlo en nodo normal
                    node.isAssistant();
                }
            }
        }
    }
    
    // Guardar Presentación
    pres.save("ChangeAssitantNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
|  | 
|---|
| Figura: Nodos Asistentes Cambiados en forma SmartArt dentro de la diapositiva | 
Establecer Formato de Relleno del Nodo
Aspose.Slides para Android a través de Java hace que sea posible agregar 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 Android a través de Java.
Por favor, siga los siguientes pasos:
- Crear una instancia de la clase Presentation.
- Obtener la referencia de una diapositiva utilizando su índice.
- Agregar una forma SmartArt configurando 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
Presentation pres = new Presentation();
try {
    // Accediendo a la diapositiva
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Agregando forma SmartArt y nodos
    ISmartArt chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
    ISmartArtNode node = chevron.getAllNodes().addNode();
    node.getTextFrame().setText("Algo de texto");
    
    // Estableciendo el color de relleno del nodo
    for (IShape item : node.getShapes()) 
    {
        item.getFillFormat().setFillType(FillType.Solid);
        item.getFillFormat().getSolidFillColor().setColor(Color.RED);
    }
    
    // Guardar la presentación
    pres.save("TestSmart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
Generar Miniatura del Nodo Hijo SmartArt
Los desarrolladores pueden generar una miniatura del nodo hijo de un SmartArt siguiendo los siguientes pasos:
- Crear una instancia de la clase Presentation.
- Agregar SmartArt.
- Obtener la referencia de un nodo utilizando su índice.
- Obtener la imagen de la miniatura.
- Guardar la imagen de la miniatura en cualquier formato de imagen deseado.
// Instanciar la clase Presentation que representa el archivo PPTX 
Presentation pres = new Presentation();
try {
    // Agregar SmartArt 
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);
    // Obtener la referencia de un nodo utilizando su índice  
    ISmartArtNode node = smart.getNodes().get_Item(1);
    // Obtener miniatura
    IImage slideImage = node.getShapes().get_Item(0).getImage();
    // Guardar miniatura
    try {
          slideImage.save("SmartArt_ChildNote_Thumbnail.png", ImageFormat.Png);
    } finally {
         if (slideImage != null) slideImage.dispose();
    }
} finally {
    if (pres != null) pres.dispose();
}