Управляйте SmartArt в презентациях PowerPoint с помощью JavaScript
Обзор
SmartArt — это диаграмма PowerPoint, состоящая из узлов, форм узлов и макета. С помощью Aspose.Slides for Node.js via Java вы можете создавать SmartArt, читать текст из его узлов, изменять его макет, просматривать скрытые узлы, настраивать макеты организационных диаграмм и создавать диаграммы организации с изображениями.
Получение текста из объекта SmartArt
Узел SmartArt может содержать одну или несколько форм. Чтобы прочитать видимый текст, пройдитесь по SmartArt.getAllNodes, затем прочитайте TextFrame, возвращаемый 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();
}
Изменение типа макета объекта SmartArt
Макет SmartArt определяет, как узлы размещаются и соединяются. В следующем примере создаётся объект SmartArt с типом SmartArtLayoutType BasicBlockList, затем он изменяется на значение BasicProcess и сохраняется презентация.
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();
}
Проверка, скрыт ли узел SmartArt
SmartArtNode.isHidden указывает, скрыт ли узел в модели данных SmartArt. Скрытые узлы могут существовать в структуре, даже если выбранный макет не отображает их как видимые элементы диаграммы.
В следующем примере добавляется узел к объекту SmartArt, использующему тип SmartArtLayoutType RadialCycle, и проверяется состояние скрытия узла.
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();
}
Получение или установка макета организационной диаграммы
Для диаграмм SmartArt, использующих макет организационной диаграммы, методы SmartArtNode.getOrganizationChartLayout и SmartArtNode.setOrganizationChartLayout определяют, как дочерние узлы располагаются под родительским узлом. Например, вы можете установить, чтобы дочерние узлы висели слева, справа или с обеих сторон, в зависимости от выбранного OrganizationChartLayoutType.
В следующем примере создаётся организационная диаграмма и задаётся макет для первого узла со значением 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();
}
Создание организационной диаграммы с изображением
Организационная диаграмма с изображением — это макет SmartArt, предназначенный для иерархических диаграмм с заполнителями изображений. При добавлении объекта SmartArt на слайд используйте значение SmartArtLayoutType PictureOrganizationChart.
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 зеркальное отражение или обратное отображение для RTL‑языков?
Да. Метод SmartArt.setReversed переключает направление диаграммы с слева направо на справа налево или обратно, если выбранный макет SmartArt поддерживает обратное отображение.
Как скопировать SmartArt на тот же слайд или в другую презентацию, сохранив форматирование?
Вы можете клонировать форму SmartArt с помощью ShapeCollection.addClone или клонировать весь слайд, содержащий SmartArt. Оба подхода сохраняют размер, позицию и форматирование.
Как отрендерить SmartArt в растр‑изображение для предварительного просмотра или веб‑экспорта?
Отрендерите слайд или всю презентацию в PNG или JPEG. SmartArt рендерится как часть слайда.
Как найти конкретный объект SmartArt на слайде, если их несколько?
Установите отличительное значение с помощью Shape.setAlternativeText или Shape.setName для формы SmartArt, выполните поиск этого значения в BaseSlide.getShapes и затем проверьте, что найденная форма является SmartArt.