Управление SmartArt в презентациях PowerPoint в .NET
Получить текст из объекта SmartArt
Сейчас свойство TextFrame добавлено в интерфейс ISmartArtShape и класс SmartArtShape соответственно. Это свойство позволяет получить весь текст из SmartArt, если он содержит не только текст узлов. Следующий пример кода поможет вам получить текст из узла SmartArt.
using (Presentation pres = new Presentation("Presentation.pptx"))
{
ISlide slide = pres.Slides[0];
ISmartArt smartArt = (ISmartArt)slide.Shapes[0];
ISmartArtNodeCollection smartArtNodes = smartArt.AllNodes;
foreach (ISmartArtNode smartArtNode in smartArtNodes)
{
foreach (ISmartArtShape nodeShape in smartArtNode.Shapes)
{
if (nodeShape.TextFrame != null)
Console.WriteLine(nodeShape.TextFrame.Text);
}
}
}
Изменить тип макета объекта SmartArt
Чтобы изменить тип макета SmartArt, выполните следующие шаги:
- Создайте экземпляр класса
Presentation. - Получите ссылку на слайд, используя его индекс.
- Добавьте SmartArt BasicBlockList.
- Измените LayoutType на BasicProcess.
- Запишите презентацию в файл PPTX. В приведённом ниже примере мы добавили соединитель между двумя фигурами.
using (Presentation presentation = new Presentation())
{
// Добавить SmartArt BasicProcess
ISmartArt smart = presentation.Slides[0].Shapes.AddSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);
// Изменить LayoutType на BasicProcess
smart.Layout = SmartArtLayoutType.BasicProcess;
// Сохранение презентации
presentation.Save("ChangeSmartArtLayout_out.pptx", SaveFormat.Pptx);
}
Проверить скрытое свойство объекта SmartArt
Обратите внимание, что метод com.aspose.slides.ISmartArtNode.isHidden() возвращает true, если данный узел скрыт в модели данных. Чтобы проверить скрытое свойство любого узла SmartArt, выполните следующие шаги:
- Создайте экземпляр класса
Presentation. - Добавьте SmartArt RadialCycle.
- Добавьте узел в SmartArt.
- Проверьте свойство isHidden.
- Запишите презентацию в файл PPTX. В приведённом ниже примере мы добавили соединитель между двумя фигурами.
using (Presentation presentation = new Presentation())
{
// Добавить SmartArt BasicProcess
ISmartArt smart = presentation.Slides[0].Shapes.AddSmartArt(10, 10, 400, 300, SmartArtLayoutType.RadialCycle);
// Добавить узел в SmartArt
ISmartArtNode node = smart.AllNodes.AddNode();
// Проверить свойство IsHidden
bool hidden = node.IsHidden; // Возвращает true
if (hidden)
{
// Выполнить некоторые действия или уведомления
}
// Сохранение презентации
presentation.Save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat.Pptx);
}
Получить или установить тип организационной схемы
Методы com.aspose.slides.ISmartArtNode.getOrganizationChartLayout(), setOrganizationChartLayout(int) позволяют получить или установить тип организационной схемы, связанный с текущим узлом. Чтобы получить или установить тип схемы, выполните следующие шаги:
- Создайте экземпляр класса
Presentation. - Добавьте SmartArt на слайд.
- Получите или установите тип организационной схемы.
- Запишите презентацию в файл PPTX. В приведённом ниже примере мы добавили соединитель между двумя фигурами.
using (Presentation presentation = new Presentation())
{
// Добавить SmartArt BasicProcess
ISmartArt smart = presentation.Slides[0].Shapes.AddSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);
// Получить или установить тип организационной схемы
smart.Nodes[0].OrganizationChartLayout = OrganizationChartLayoutType.LeftHanging;
// Сохранение презентации
presentation.Save("OrganizeChartLayoutType_out.pptx", SaveFormat.Pptx);
}
Создать организационную схему с изображением
Aspose.Slides for .NET предоставляет простой API для создания PictureOrganization схем простым способом. Чтобы создать схему на слайде:
- Создайте экземпляр класса
Presentation. - Получите ссылку на слайд по его индексу.
- Добавьте схему с данными по умолчанию и нужным типом (ChartType.PictureOrganizationChart).
- Запишите изменённую презентацию в файл PPTX
Следующий код используется для создания схемы.
public static void Run()
{
using (Presentation pres = new Presentation("test.pptx"))
{
ISmartArt smartArt = pres.Slides[0].Shapes.AddSmartArt(0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart);
pres.Save("OrganizationChart.pptx", SaveFormat.Pptx);
}
}
FAQ
Поддерживает ли SmartArt отражение/инверсию для RTL‑языков?
Да. Свойство IsReversed переключает направление диаграммы (LTR/RTL), если выбранный тип SmartArt поддерживает инверсию.
Как скопировать SmartArt на тот же слайд или в другую презентацию, сохранив форматирование?
Вы можете клонировать форму SmartArt через коллекцию фигур (ShapeCollection.AddClone) или клонировать весь слайд, содержащий эту форму. Оба подхода сохраняют размер, расположение и стили.
Как отрендерить SmartArt в растровое изображение для предварительного просмотра или веб‑экспорта?
Отрендерите слайд (или всю презентацию) в PNG/JPEG с помощью API, который преобразует слайды/презентации в изображения — SmartArt будет отрисован как часть слайда.
Как программно выбрать конкретный SmartArt на слайде, если их несколько?
Обычная практика — использовать альтернативный текст (Alt Text) или Имя и искать форму по этому атрибуту в Slide.Shapes, затем проверять тип, чтобы подтвердить, что это SmartArt. В документации описаны типичные методы поиска и работы с формами.