Gestionar SmartArt en presentaciones PowerPoint usando Java
Obtener texto de un objeto SmartArt
Ahora se ha añadido el método TextFrame a la interfaz ISmartArtShape y a la clase SmartArtShaperespectivamente. Esta propiedad le permite obtener todo el texto de SmartArt si no solo tiene texto de nodos. El siguiente ejemplo de código le ayudará a obtener el texto de un nodo SmartArt.
Presentation pres = new Presentation("Presentation.pptx");
try {
ISlide slide = pres.getSlides().get_Item(0);
ISmartArt smartArt = (ISmartArt)slide.getShapes().get_Item(0);
ISmartArtNodeCollection smartArtNodes = smartArt.getAllNodes();
for (ISmartArtNode smartArtNode : smartArtNodes)
{
for (ISmartArtShape nodeShape : smartArtNode.getShapes())
{
if (nodeShape.getTextFrame() != null)
System.out.println(nodeShape.getTextFrame().getText());
}
}
} finally {
if (pres != null) pres.dispose();
}
Cambiar el tipo de diseño de un objeto SmartArt
Para cambiar el tipo de diseño de SmartArt. siga los pasos a continuación:
- Cree una instancia de la clase Presentation.
- Obtenga la referencia de una diapositiva usando su índice.
- Agregue SmartArt BasicBlockList.
- Cambie LayoutType a BasicProcess.
- Guarde la presentación como un archivo PPTX. En el ejemplo que se muestra a continuación, hemos agregado un conector entre dos formas.
Presentation pres = new Presentation();
try {
// Añadir SmartArt BasicProcess
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);
// Cambiar LayoutType a BasicProcess
smart.setLayout(SmartArtLayoutType.BasicProcess);
// Guardando la presentación
pres.save("ChangeSmartArtLayout_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Comprobar la propiedad Oculto de un objeto SmartArt
Nota: el método ISmartArtNode.isHidden() devuelve true si este nodo está oculto en el modelo de datos. Para comprobar la propiedad oculta de cualquier nodo de SmartArt. siga los pasos a continuación:
-
Cree una instancia de la clase Presentation.
-
Agregue SmartArt RadialCycle.
-
Agregue un nodo en SmartArt.
-
Compruebe la propiedad isHidden .
-
Guarde la presentación como un archivo PPTX.
En el ejemplo que se muestra a continuación, hemos agregado un conector entre dos formas.
Presentation pres = new Presentation();
try {
// Añadir SmartArt BasicProcess
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.RadialCycle);
// Añadir nodo en SmartArt
ISmartArtNode node = smart.getAllNodes().addNode();
// Comprobar la propiedad isHidden
boolean hidden = node.isHidden(); // Devuelve true
if (hidden)
{
// Realizar algunas acciones o notificaciones
}
// Guardando presentación
pres.save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Obtener o establecer el tipo de organigrama
Los métodos ISmartArtNode.getOrganizationChartLayout() y setOrganizationChartLayout(int) permiten obtener o establecer el tipo de organigrama asociado al nodo actual. Para obtener o establecer el tipo de organigrama, siga los pasos a continuación:
- Cree una instancia de la clase Presentation.
- Agregue SmartArt en la diapositiva.
- Obtenga o establezca el tipo de organigrama.
- Guarde la presentación como un archivo PPTX. En el ejemplo que se muestra a continuación, hemos agregado un conector entre dos formas.
Presentation pres = new Presentation();
try {
// Añadir SmartArt BasicProcess
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);
// Obtener o establecer el tipo de organigrama
smart.getNodes().get_Item(0).setOrganizationChartLayout(OrganizationChartLayoutType.LeftHanging);
// Guardando la presentación
pres.save("OrganizeChartLayoutType_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Crear un organigrama de imagen
Aspose.Slides for Java ofrece una API sencilla para crear gráficos de PictureOrganization de forma fácil. Para crear un gráfico en una diapositiva:
- Cree una instancia de la clase Presentation .
- Obtenga la referencia de una diapositiva por su índice.
- Agregue un gráfico con datos predeterminados junto con el tipo deseado (ChartType.PictureOrganizationChart).
- Guarde la presentación modificada en un archivo PPTX
El siguiente código se usa para crear un gráfico.
Presentation pres = new Presentation("test.pptx");
try {
ISmartArt smartArt = pres.getSlides().get_Item(0).getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart);
pres.save("OrganizationChart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Obtener o establecer el estado de SmartArt
Para cambiar el tipo de diseño de SmartArt. siga los pasos a continuación:
- Cree una instancia de la clase Presentation .
- Agregue SmartArt en la diapositiva.
- Get o Set el estado del diagrama SmartArt.
- Guarde la presentación como un archivo PPTX.
En el ejemplo que se muestra a continuación, hemos agregado un conector entre dos formas.
// Instanciar la clase Presentation que representa el archivo PPTX
Presentation pres = new Presentation();
try {
// Añadir SmartArt BasicProcess
ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicProcess);
// Obtener o establecer el estado del diagrama SmartArt
smart.setReversed(true);
boolean flag = smart.isReversed();
// Guardar la presentación
pres.save("output.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
¿SmartArt admite reflejo/inversión para idiomas RTL?
Sí. El método setReversed cambia la dirección del diagrama (LTR/RTL) si el tipo de SmartArt seleccionado admite la inversión.
¿Cómo puedo copiar SmartArt a la misma diapositiva o a otra presentación manteniendo el formato?
Puede clonar la forma SmartArt a través de la colección de formas (ShapeCollection.addClone) o clonar toda la diapositiva que contiene esta forma. Ambos enfoques conservan el tamaño, la posición y el estilo.
¿Cómo renderizo SmartArt a una imagen raster para vista previa o exportación web?
Renderice la diapositiva (o toda la presentación) a PNG/JPEG mediante la API que convierte diapositivas/presentaciones a imágenes—SmartArt se dibujará como parte de la diapositiva.
¿Cómo puedo seleccionar programáticamente un SmartArt específico en una diapositiva si hay varios?
Una práctica común es usar texto alternativo (Alt Text) o un nombre y buscar la forma por ese atributo dentro de formas de la diapositiva , luego comprobar el tipo para confirmar que es SmartArt. La documentación describe técnicas típicas para encontrar y trabajar con formas.