Gestionar gráficos SmartArt en presentaciones con PHP

Crear una forma SmartArt

Aspose.Slides para PHP a través de Java ha proporcionado una API para crear formas SmartArt. Para crear una forma SmartArt en una diapositiva, siga los pasos a continuación:

  1. Crear una instancia de la clase Presentation.
  2. Obtener la referencia de una diapositiva usando su Index.
  3. Agregar una forma SmartArt estableciendo su LayoutType.
  4. Guardar la presentación modificada como archivo PPTX.
  # Instanciar la clase Presentation
  $pres = new Presentation();
  try {
    # Obtener la primera diapositiva
    $slide = $pres->getSlides()->get_Item(0);
    # Añadir forma SmartArt
    $smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::BasicBlockList);
    # Guardar la presentación
    $pres->save("SimpleSmartArt.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }
todo:image_alt_text
Figura: Forma SmartArt añadida a la diapositiva

Acceder a una forma SmartArt en una diapositiva

El siguiente código se usará para acceder a las formas SmartArt añadidas en la diapositiva de la presentación. En el código de ejemplo recorreremos cada forma dentro de la diapositiva y comprobaremos si es una forma SmartArt. Si la forma es del tipo SmartArt, la convertiremos a una instancia SmartArt.

  # Cargar la presentación deseada
  $pres = new Presentation("AccessSmartArtShape.pptx");
  try {
    # Recorrer cada forma dentro de la primera diapositiva
    foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
      # Comprobar si la forma es de tipo SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Convertir la forma a SmartArtEx
        $smart = $shape;
        echo("Shape Name:" . $smart->getName());
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Acceder a una forma SmartArt con un LayoutType concreto

El siguiente código de ejemplo ayudará a acceder a la forma SmartArt con un LayoutType concreto: Tenga en cuenta que no puede cambiar el LayoutType de SmartArt, ya que es de solo lectura y solo se establece cuando se agrega la forma SmartArt.

  1. Crear una instancia de la clase Presentation y cargar la presentación con la forma SmartArt.
  2. Obtener la referencia de la primera diapositiva usando su Index.
  3. Recorrer cada forma dentro de la primera diapositiva.
  4. Comprobar si la forma es del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
  5. Verificar la forma SmartArt con el LayoutType concreto y ejecutar lo que sea necesario a continuación.
  $pres = new Presentation("AccessSmartArtShape.pptx");
  try {
    # Recorrer cada forma dentro de la primera diapositiva
    foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
      # Comprobar si la forma es de tipo SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Convertir la forma a SmartArtEx
        $smart = $shape;
        # Comprobando el diseño de SmartArt
        if ($smart->getLayout() == SmartArtLayoutType::BasicBlockList) {
          echo("Do some thing here....");
        }
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Cambiar el estilo de una forma SmartArt

En este ejemplo, aprenderemos a cambiar el estilo rápido de cualquier forma SmartArt.

  1. Crear una instancia de la clase Presentation y cargar la presentación con la forma SmartArt.
  2. Obtener la referencia de la primera diapositiva usando su Index.
  3. Recorrer cada forma dentro de la primera diapositiva.
  4. Comprobar si la forma es del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
  5. Encontrar la forma SmartArt con un estilo concreto.
  6. Establecer el nuevo estilo para la forma SmartArt.
  7. Guardar la presentación.
  # Instanciar la clase Presentation
  $pres = new Presentation("SimpleSmartArt.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) {
      # Comprobar si la forma es de tipo SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Convertir la forma a SmartArtEx
        $smart = $shape;
        # Comprobando el estilo de SmartArt
        if ($smart->getQuickStyle() == SmartArtQuickStyleType::SimpleFill) {
          # Cambiando el estilo de SmartArt
          $smart->setQuickStyle(SmartArtQuickStyleType::Cartoon);
        }
      }
    }
    # Guardando la presentación
    $pres->save("ChangeSmartArtStyle.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }
todo:image_alt_text
Figura: Forma SmartArt con estilo cambiado

Cambiar el estilo de color de una forma SmartArt

En este ejemplo, aprenderemos a cambiar el estilo de color de cualquier forma SmartArt. En el siguiente código de ejemplo se accederá a la forma SmartArt con un estilo de color concreto y se cambiará su estilo.

  1. Crear una instancia de la clase Presentation y cargar la presentación con la forma SmartArt.
  2. Obtener la referencia de la primera diapositiva usando su Index.
  3. Recorrer cada forma dentro de la primera diapositiva.
  4. Comprobar si la forma es del tipo SmartArt y convertir la forma seleccionada a SmartArt si lo es.
  5. Encontrar la forma SmartArt con un estilo de color concreto.
  6. Establecer el nuevo estilo de color para la forma SmartArt.
  7. Guardar la presentación.
  # Instanciar la clase Presentation
  $pres = new Presentation("SimpleSmartArt.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) {
      # Comprobar si la forma es de tipo SmartArt
      if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
        # Convertir la forma a SmartArtEx
        $smart = $shape;
        # Comprobando el tipo de color de SmartArt
        if ($smart->getColorStyle() == SmartArtColorType::ColoredFillAccent1) {
          # Cambiando el tipo de color de SmartArt
          $smart->setColorStyle(SmartArtColorType::ColorfulAccentColors);
        }
      }
    }
    # Guardando la presentación
    $pres->save("ChangeSmartArtColorStyle.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }
todo:image_alt_text
Figura: Forma SmartArt con estilo de color cambiado

Preguntas frecuentes

¿Puedo animar SmartArt como un solo objeto?

Sí. SmartArt es una forma, por lo que puede aplicar animaciones estándar mediante la API de animaciones (entrada, salida, énfasis, trayectorias de movimiento) al igual que con otras formas.

¿Cómo puedo encontrar un SmartArt específico en una diapositiva si no conozco su ID interno?

Establezca y utilice el Texto alternativo (AltText) y busque la forma por ese valor; esta es una forma recomendada de localizar la forma objetivo.

¿Puedo agrupar SmartArt con otras formas?

Sí. Puede agrupar SmartArt con otras formas (imágenes, tablas, etc.) y luego manipular el grupo.

¿Cómo obtengo una imagen de un SmartArt específico (p. ej., para una vista previa o informe)?

Exporte una miniatura/imagen de la forma; la biblioteca puede renderizar formas individuales a archivos raster (PNG/JPG/TIFF).

¿Se preservará la apariencia de SmartArt al convertir toda la presentación a PDF?

Sí. El motor de renderizado apunta a alta fidelidad para la exportación a PDF, con una variedad de opciones de calidad y compatibilidad.