Gestionar SmartArt en presentaciones de PowerPoint usando JavaScript
Resumen
SmartArt es un diagrama de PowerPoint formado por nodos, formas de nodo y un diseño. Con Aspose.Slides para Node.js a través de Java, puedes crear SmartArt, leer texto de sus nodos, cambiar su diseño, inspeccionar nodos ocultos, configurar diseños de organigramas y crear organigramas de imágenes.
Obtener texto de un objeto SmartArt
Un nodo SmartArt puede contener una o más formas. Para leer el texto visible, recorre SmartArt.getAllNodes, luego lee el TextFrame devuelto por SmartArtShape.getTextFrame.
let presentation = new aspose.slides.Presentation("sample.pptx");
try {
let slide = presentation.getSlides().get_Item(0);
let shape = slide.getShapes().get_Item(0);
if (java.instanceOf(shape, "com.aspose.slides.ISmartArt")) {
let smartArt = shape;
let nodes = smartArt.getAllNodes();
for (let nodeIndex = 0; nodeIndex < nodes.size(); nodeIndex++) {
let node = nodes.get_Item(nodeIndex);
let nodeShapes = node.getShapes();
for (let shapeIndex = 0; shapeIndex < nodeShapes.size(); shapeIndex++) {
let nodeShape = nodeShapes.get_Item(shapeIndex);
if (nodeShape.getTextFrame() != null) {
console.log(nodeShape.getTextFrame().getText());
}
}
}
}
} finally {
presentation.dispose();
}
Cambiar el tipo de diseño de un objeto SmartArt
El diseño de SmartArt controla cómo se disponen y conectan los nodos. El siguiente ejemplo crea un objeto SmartArt con el valor SmartArtLayoutType BasicBlockList, lo cambia al valor BasicProcess y guarda la presentación.
let presentation = new aspose.slides.Presentation();
try {
let smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
10, 10, 400, 300, aspose.slides.SmartArtLayoutType.BasicBlockList);
smartArt.setLayout(aspose.slides.SmartArtLayoutType.BasicProcess);
presentation.save("ChangeSmartArtLayout_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Comprobar si un nodo SmartArt está oculto
SmartArtNode.isHidden indica si el nodo está oculto en el modelo de datos de SmartArt. Los nodos ocultos pueden existir en la estructura incluso cuando el diseño seleccionado no los muestra como elementos visibles del diagrama.
El siguiente ejemplo añade un nodo a un objeto SmartArt que utiliza el valor SmartArtLayoutType RadialCycle y comprueba el estado oculto del nodo.
let presentation = new aspose.slides.Presentation();
try {
let smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
10, 10, 400, 300, aspose.slides.SmartArtLayoutType.RadialCycle);
let node = smartArt.getAllNodes().addNode();
let isHidden = node.isHidden();
if (isHidden) {
console.log("The node is hidden in the SmartArt data model.");
}
presentation.save("CheckSmartArtHiddenProperty_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Obtener o establecer el diseño del organigrama
Para diagramas SmartArt que usan un diseño de organigrama, SmartArtNode.getOrganizationChartLayout y SmartArtNode.setOrganizationChartLayout definen cómo se disponen los nodos secundarios bajo un nodo principal. Por ejemplo, puedes establecer que los nodos secundarios cuelguen por la izquierda, la derecha o ambos lados, según el OrganizationChartLayoutType seleccionado.
El siguiente ejemplo crea un organigrama y establece el diseño del primer nodo al valor OrganizationChartLayoutType LeftHanging.
let presentation = new aspose.slides.Presentation();
try {
let smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
10, 10, 400, 300, aspose.slides.SmartArtLayoutType.OrganizationChart);
let rootNode = smartArt.getNodes().get_Item(0);
rootNode.setOrganizationChartLayout(aspose.slides.OrganizationChartLayoutType.LeftHanging);
presentation.save("OrganizationChartLayout_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Crear un organigrama de imágenes
Un organigrama de imágenes es un diseño SmartArt pensado para diagramas jerárquicos que incluyen marcadores de posición de imágenes. Usa el valor SmartArtLayoutType PictureOrganizationChart al añadir el objeto SmartArt a una diapositiva.
let presentation = new aspose.slides.Presentation();
try {
let smartArt = presentation.getSlides().get_Item(0).getShapes().addSmartArt(
0, 0, 400, 400, aspose.slides.SmartArtLayoutType.PictureOrganizationChart);
presentation.save("PictureOrganizationChart_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
FAQ
¿SmartArt admite la reflexión o inversión para idiomas RTL?
Sí. El método SmartArt.setReversed cambia la dirección del diagrama de izquierda a derecha a derecha a izquierda, o viceversa, cuando el diseño SmartArt seleccionado admite la inversión.
¿Cómo puedo copiar SmartArt a la misma diapositiva o a otra presentación manteniendo el formato?
Puedes Clonar la forma SmartArt con ShapeCollection.addClone o Clonar toda la diapositiva que contiene el SmartArt. Ambos métodos conservan el tamaño, la posición y el formato.
¿Cómo renderizo SmartArt a una imagen raster para vista previa o exportación web?
Renderizar la diapositiva o toda la presentación a PNG o JPEG. SmartArt se renderiza como parte de la diapositiva.
¿Cómo puedo encontrar un objeto SmartArt concreto en una diapositiva si hay varios?
Establece un valor distintivo en Shape.setAlternativeText o Shape.setName del objeto SmartArt, busca ese valor en BaseSlide.getShapes y luego verifica que la forma coincidente sea un SmartArt.