Управление SmartArt в презентациях PowerPoint с использованием JavaScript

Получить текст из SmartArt

Теперь метод TextFrame был добавлен в класс SmartArtShape и класс SmartArtShape соответственно. Это свойство позволяет получить весь текст из SmartArt, если он содержит не только текст узлов. Следующий пример кода поможет вам получить текст из узла 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();
    }
}

Изменить тип макета SmartArt

Чтобы изменить тип макета [SmartArt], выполните следующие шаги:

  • Создайте экземпляр класса Presentation.
  • Получите ссылку на слайд, используя его индекс.
  • Добавьте SmartArt BasicBlockList.
  • Измените LayoutType на BasicProcess.
  • Сохраните презентацию в файл PPTX.

В приведённом ниже примере мы добавили соединитель между двумя фигурами.

var pres = new aspose.slides.Presentation();
try {
    // Добавить SmartArt BasicProcess
    var smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.BasicBlockList);
    // Сменить LayoutType на BasicProcess
    smart.setLayout(aspose.slides.SmartArtLayoutType.BasicProcess);
    // Сохранение презентации
    pres.save("ChangeSmartArtLayout_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Проверить свойство Visibility SmartArt

Обратите внимание: метод SmartArtNode.isHidden() возвращает true, если данный узел скрыт в модели данных. Чтобы проверить свойство скрытия любого узла [SmartArt], выполните следующие шаги:

  • Создайте экземпляр класса Presentation.
  • Добавьте SmartArt RadialCycle.
  • Добавьте узел в SmartArt.
  • Проверьте свойство видимость.
  • Сохраните презентацию в файл PPTX.

В приведённом ниже примере мы добавили соединитель между двумя фигурами.

var pres = new aspose.slides.Presentation();
try {
    // Добавить SmartArt BasicProcess
    var smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.RadialCycle);
    // Добавить узел в SmartArt
    var node = smart.getAllNodes().addNode();
    // Проверить свойство isHidden
    var hidden = node.isHidden();// Возвращает true
    if (hidden) {
        // Выполнить какие‑то действия или уведомления
    }
    // Сохранение презентации
    pres.save("CheckSmartArtHiddenProperty_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Получить или задать тип организационной диаграммы

Методы SmartArtNode.getOrganizationChartLayout() и setOrganizationChartLayout(int) позволяют получить или задать тип организационной диаграммы, связанный с текущим узлом. Чтобы получить или задать тип организационной диаграммы, выполните следующие шаги:

В приведённом ниже примере мы добавили соединитель между двумя фигурами.

var pres = new aspose.slides.Presentation();
try {
    // Добавить SmartArt BasicProcess
    var smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.OrganizationChart);
    // Получить или задать тип организационной диаграммы
    smart.getNodes().get_Item(0).setOrganizationChartLayout(aspose.slides.OrganizationChartLayoutType.LeftHanging);
    // Сохранение презентации
    pres.save("OrganizeChartLayoutType_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Создать диаграмму Picture Organization

Aspose.Slides для Node.js через Java предоставляет простой API для создания диаграмм PictureOrganization простым способом. Чтобы создать диаграмму на слайде:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте диаграмму с данными по умолчанию и требуемым типом (ChartType.PictureOrganizationChart).
  4. Сохраните изменённую презентацию в файл PPTX.

Следующий код используется для создания диаграммы.

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();
    }
}

Получить или задать состояние SmartArt

Чтобы изменить тип макета [SmartArt], выполните следующие шаги:

  1. Создайте экземпляр класса Presentation.
  2. Добавьте SmartArt на слайд.
  3. [Получить] или [Установить] состояние диаграммы SmartArt.
  4. Сохраните презентацию в файл PPTX.

Следующий код используется для создания диаграммы.

// Создать экземпляр класса Presentation, представляющего файл PPTX
var pres = new aspose.slides.Presentation();
try {
    // Добавить SmartArt BasicProcess
    var smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, aspose.slides.SmartArtLayoutType.BasicProcess);
    // Получить или задать состояние диаграммы SmartArt
    smart.setReversed(true);
    var flag = smart.isReversed();
    // Сохранение презентации
    pres.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

FAQ

Поддерживает ли SmartArt зеркальное отражение/реверс для языков RTL?

Да. Метод setReversed переключает направление диаграммы (LTR/RTL), если выбранный тип SmartArt поддерживает реверс.

Как я могу скопировать SmartArt на тот же слайд или в другую презентацию, сохраняя форматирование?

Вы можете клонировать объект SmartArt через коллекцию фигур (ShapeCollection.addClone) или клонировать весь слайд содержащий эту фигуру. Оба подхода сохраняют размер, позицию и стиль.

Как отрисовать SmartArt в растровое изображение для предварительного просмотра или веб‑экспорта?

Отрендерите слайд (или всю презентацию) в PNG/JPEG с помощью API, который конвертирует слайды/презентации в изображения — SmartArt будет отрисован как часть слайда.

Как программно выбрать конкретный SmartArt на слайде, если их несколько?

Обычной практикой является использование альтернативного текста (Alt Text) или setName и поиск фигуры по этому атрибуту с помощью Slide.getShapes. Затем проверьте тип, чтобы убедиться, что это SmartArt. Документация описывает типичные техники поиска и работы с фигурами.