Administrar SmartArt en presentaciones de PowerPoint en .NET
Obtener texto de un objeto SmartArt
Ahora se ha añadido la propiedad TextFrame a la interfaz ISmartArtShape y a la clase SmartArtShape respectivamente. Esta propiedad le permite obtener todo el texto de SmartArt, no solo el texto de los nodos. El siguiente fragmento de código le ayudará a obtener el texto de un nodo SmartArt.
using (Presentation pres = new Presentation("Presentation.pptx"))
{
ISlide slide = pres.Slides[0];
ISmartArt smartArt = (ISmartArt)slide.Shapes[0];
ISmartArtNodeCollection smartArtNodes = smartArt.AllNodes;
foreach (ISmartArtNode smartArtNode in smartArtNodes)
{
foreach (ISmartArtShape nodeShape in smartArtNode.Shapes)
{
if (nodeShape.TextFrame != null)
Console.WriteLine(nodeShape.TextFrame.Text);
}
}
}
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.
- Añada SmartArt BasicBlockList.
- Cambie LayoutType a BasicProcess.
- Guarde la presentación como un archivo PPTX.
En el ejemplo que se muestra a continuación, hemos añadido un conector entre dos formas.
using (Presentation presentation = new Presentation())
{
// Añadir SmartArt BasicProcess
ISmartArt smart = presentation.Slides[0].Shapes.AddSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);
// Cambiar LayoutType a BasicProcess
smart.Layout = SmartArtLayoutType.BasicProcess;
// Guardar presentación
presentation.Save("ChangeSmartArtLayout_out.pptx", SaveFormat.Pptx);
}
Comprobar la propiedad Oculto de un objeto SmartArt
Nota: el método com.aspose.slides.ISmartArtNode.isHidden() devuelve true si este nodo es un nodo oculto en el modelo de datos. Para comprobar la propiedad Oculto de cualquier nodo de SmartArt, siga los pasos a continuación:
- Cree una instancia de la clase
Presentation. - Añada SmartArt RadialCycle.
- Añada 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 añadido un conector entre dos formas.
using (Presentation presentation = new Presentation())
{
// Añadir SmartArt BasicProcess
ISmartArt smart = presentation.Slides[0].Shapes.AddSmartArt(10, 10, 400, 300, SmartArtLayoutType.RadialCycle);
// Añadir nodo en SmartArt
ISmartArtNode node = smart.AllNodes.AddNode();
// Verificar la propiedad isHidden
bool hidden = node.IsHidden; // Devuelve true
if (hidden)
{
// Realizar algunas acciones o notificaciones
}
// Guardar presentación
presentation.Save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat.Pptx);
}
Obtener o establecer el tipo de organigrama
Los métodos com.aspose.slides.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. - Añada 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 añadido un conector entre dos formas.
using (Presentation presentation = new Presentation())
{
// Añadir SmartArt BasicProcess
ISmartArt smart = presentation.Slides[0].Shapes.AddSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);
// Obtener o establecer el tipo de organigrama
smart.Nodes[0].OrganizationChartLayout = OrganizationChartLayoutType.LeftHanging;
// Guardar presentación
presentation.Save("OrganizeChartLayoutType_out.pptx", SaveFormat.Pptx);
}
Crear un organigrama de imagen
Aspose.Slides para .NET proporciona una API simple para crear diagramas PictureOrganization de forma fácil. Para crear un diagrama en una diapositiva:
- Cree una instancia de la clase
Presentation. - Obtenga la referencia de una diapositiva mediante su índice.
- Añada un diagrama con datos predeterminados y el tipo deseado (ChartType.PictureOrganizationChart).
- Guarde la presentación modificada en un archivo PPTX
El siguiente código se utiliza para crear un diagrama.
public static void Run()
{
using (Presentation pres = new Presentation("test.pptx"))
{
ISmartArt smartArt = pres.Slides[0].Shapes.AddSmartArt(0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart);
pres.Save("OrganizationChart.pptx", SaveFormat.Pptx);
}
}
FAQ
¿SmartArt admite el reflejo/inversión para idiomas RTL?
Sí. La propiedad IsReversed cambia la dirección del diagrama (LTR/RTL) si el tipo de SmartArt seleccionado admite la reversión.
¿Cómo puedo copiar SmartArt a la misma diapositiva o a otra presentación preservando el formato?
Puede clonar la forma SmartArt a través de la colección de formas (ShapeCollection.AddClone) o clonar la diapositiva completa que contiene esta forma. Ambos enfoques conservan el tamaño, la posición y el estilo.
¿Cómo renderizo SmartArt a una imagen rasterizada para vista previa o exportación web?
Renderice la diapositiva (o la presentación completa) 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 Slide.Shapes, luego comprobar el tipo para confirmar que es SmartArt. La documentación describe técnicas típicas para encontrar y trabajar con formas.