Gestionar SmartArt en presentaciones de PowerPoint usando JavaScript

Obtener texto de SmartArt

Ahora se ha añadido el método TextFrame a la clase SmartArtShape y a la clase SmartArtShape respectivamente. Esta propiedad le permite obtener todo el texto de SmartArt aunque no solo contenga texto de los nodos. El siguiente código de ejemplo le ayudará a obtener el texto de un nodo de SmartArt.

var pres = new aspose.slides.Presentation("Presentation.pptx");
try {
    var slide = pres.getSlides().get_Item(0);
    var smartArt = slide.getShapes().get_Item(0);
    var smartArtNodes = smartArt.getAllNodes();
    
    for (let i = 0; i < smartArtNodes.size(); i++) {
        const smartArtNode = smartArtNodes.get_Item(i);
        for (let j = 0; j < smartArtNode.getShapes().size(); j++) {
            const nodeShape = smartArtNode.getShapes().get_Item(j);
            if (nodeShape.getTextFrame() != null) {
                console.log(nodeShape.getTextFrame().getText());
            }
        }
    }
    
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Cambiar el tipo de diseño de 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 mediante su índice.
  • Añada SmartArt BasicBlockList.
  • Cambie LayoutType a BasicProcess.
  • Grabe la presentación como un archivo PPTX.

En el ejemplo que se muestra a continuación, hemos añadido un conector entre dos formas.

var pres = new aspose.slides.Presentation();
try {
    // Añadir SmartArt BasicProcess
    var smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.BasicBlockList);
    // Cambiar LayoutType a BasicProcess
    smart.setLayout(aspose.slides.SmartArtLayoutType.BasicProcess);
    // Guardar presentación
    pres.save("ChangeSmartArtLayout_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Comprobar la propiedad Visibility de SmartArt

Nota: el método SmartArtNode.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.
  • Añada SmartArt RadialCycle.
  • Añada un nodo en SmartArt.
  • Compruebe la propiedad visibility.
  • Grabe la presentación como un archivo PPTX.

En el ejemplo que se muestra a continuación, hemos añadido un conector entre dos formas.

var pres = new aspose.slides.Presentation();
try {
    // Añadir SmartArt BasicProcess
    var smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.RadialCycle);
    // Añadir nodo en SmartArt
    var node = smart.getAllNodes().addNode();
    // Comprobar la propiedad isHidden
    var hidden = node.isHidden();// Devuelve true
    if (hidden) {
        // Realizar algunas acciones o notificaciones
    }
    // Guardar presentación
    pres.save("CheckSmartArtHiddenProperty_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Obtener o establecer el tipo de organigrama

Los métodos SmartArtNode.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:

En el ejemplo que se muestra a continuación, hemos añadido un conector entre dos formas.

var pres = new aspose.slides.Presentation();
try {
    // Añadir SmartArt BasicProcess
    var smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.OrganizationChart);
    // Obtener o establecer el tipo de organigrama
    smart.getNodes().get_Item(0).setOrganizationChartLayout(aspose.slides.OrganizationChartLayoutType.LeftHanging);
    // Guardar presentación
    pres.save("OrganizeChartLayoutType_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Crear organigrama de imagen

Aspose.Slides for Node.js via Java ofrece una API simple para crear gráficos PictureOrganization de forma fácil. Para crear un gráfico 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 gráfico con datos predeterminados y el tipo deseado (ChartType.PictureOrganizationChart).
  4. Grabe la presentación modificada en un archivo PPTX

El siguiente código se utiliza para crear un gráfico.

var pres = new aspose.slides.Presentation("test.pptx");
try {
    var smartArt = pres.getSlides().get_Item(0).getShapes().addSmartArt(0, 0, 400, 400, aspose.slides.SmartArtLayoutType.PictureOrganizationChart);
    pres.save("OrganizationChart.pptx", aspose.slides.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:

  1. Cree una instancia de la clase Presentation.
  2. Añada SmartArt en la diapositiva.
  3. Get o Set el estado del diagrama SmartArt.
  4. Grabe la presentación como un archivo PPTX.

El siguiente código se utiliza para crear un gráfico.

// Instanciar la clase Presentation que representa el archivo PPTX
var pres = new aspose.slides.Presentation();
try {
    // Añadir SmartArt BasicProcess
    var smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.BasicProcess);
    // Obtener o establecer el estado del diagrama SmartArt
    smart.setReversed(true);
    var flag = smart.isReversed();
    // Guardar la presentación
    pres.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

FAQ

¿SmartArt admite la inversión/volteado 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 conservando el formato?

Puede clone the SmartArt shape a través de la colección de formas (ShapeCollection.addClone) o clone the entire slide que contiene esta forma. Ambos enfoques preservan el tamaño, la posición y el estilo.

¿Cómo renderizo SmartArt a una imagen raster para vista previa o exportación web?

Render the slide (o toda la presentación) a PNG/JPEG mediante la API que convierte diapositivas/presentaciones en imágenes—SmartArt se dibujará como parte de la diapositiva.

¿Cómo puedo seleccionar programáticamente un SmartArt concreto en una diapositiva si hay varios?

Una práctica habitual es utilizar alternative text (Alt Text) o setName y buscar la forma por ese atributo usando Slide.getShapes, luego comprobar el tipo para confirmar que es SmartArt. La documentación describe técnicas típicas para encontrar y trabajar con formas.