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:

  1. Cree una instancia de la clase Presentation.
  2. Obtenga la referencia de una diapositiva mediante su índice.
  3. Añada un diagrama con datos predeterminados y el tipo deseado (ChartType.PictureOrganizationChart).
  4. 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.