Управление SmartArt в презентациях PowerPoint с помощью Python
Обзор
Это руководство показывает, как создавать и изменять SmartArt в Aspose.Slides для Python. Вы узнаете, как извлекать текст из SmartArt (включая содержимое TextFrame внутри фигур узлов), добавлять SmartArt на слайды и менять его макет, обнаруживать и обрабатывать скрытые узлы, настраивать макеты организационных схем и создавать схемы организации с изображениями — всё это с помощью лаконичных, готовых к копированию примеров на Python, которые открывают Presentation, работают со слайдами и узлами SmartArt и сохраняют результаты в PPTX.
Получить текст из SmartArt
Свойство text_frame объекта SmartArtShape позволяет получить весь текст из фигуры SmartArt — не только текст, содержащийся в её узлах. Следующий пример кода показывает, как получить текст из узла SmartArt.
import aspose.slides as slides
with slides.Presentation("SmartArt.pptx") as presentation:
slide = presentation.slides[0]
smart_art = slide.shapes[0]
for smart_art_node in smart_art.all_nodes:
for node_shape in smart_art_node.shapes:
if node_shape.text_frame is not None:
print(node_shape.text_frame.text)
Изменить тип макета SmartArt
Чтобы изменить тип макета SmartArt, выполните следующие действия:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте фигуру SmartArt с макетом
BASIC_BLOCK_LIST. - Измените её макет на
BASIC_PROCESS. - Сохраните презентацию в файл PPTX.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Добавьте форму SmartArt с макетом BASIC_BLOCK_LIST.
smart = slide.shapes.add_smart_art(10, 10, 400, 300, smartart.SmartArtLayoutType.BASIC_BLOCK_LIST)
# Измените тип макета на BASIC_PROCESS.
smart.layout = smartart.SmartArtLayoutType.BASIC_PROCESS
# Сохраните презентацию.
presentation.save("ChangedSmartArtLayout.pptx", slides.export.SaveFormat.PPTX)
Проверить свойство Hidden у SmartArt
Свойство SmartArtNode.is_hidden возвращает True, если узел скрыт в модели данных. Чтобы проверить, скрыт ли узел SmartArt, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Добавьте фигуру SmartArt с макетом
RADIAL_CYCLE. - Добавьте узел в SmartArt.
- Проверьте свойство
is_hidden.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Добавьте форму SmartArt с макетом RADIAL_CYCLE.
smart = slide.shapes.add_smart_art(10, 10, 400, 300, smartart.SmartArtLayoutType.RADIAL_CYCLE)
# Добавьте узел в SmartArt.
node = smart.all_nodes.add_node()
# Проверьте свойство is_hidden.
if node.is_hidden:
print("The node is hidden.")
Получить или установить тип организационной схемы
Свойство SmartArtNode.organization_chart_layout получает или задает тип организационной схемы, связанный с текущим узлом. Чтобы получить или установить тип схемы, выполните следующие шаги:
- Создайте экземпляр класса Presentation.
- Добавьте фигуру SmartArt на слайд.
- Получите или задайте тип организационной схемы.
- Сохраните презентацию в файл PPTX.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# Добавьте форму SmartArt с макетом ORGANIZATION_CHART.
smart = slide.shapes.add_smart_art(10, 10, 400, 300, smartart.SmartArtLayoutType.ORGANIZATION_CHART)
# Установите тип организационной схемы.
smart.nodes[0].organization_chart_layout = smartart.OrganizationChartLayoutType.LEFT_HANGING
# Сохраните презентацию.
presentation.save("OrganizationChartLayout.pptx", slides.export.SaveFormat.PPTX)
Создать организационную схему с изображениями
Aspose.Slides для Python предоставляет простой API для лёгкого создания организационных схем с изображениями. Чтобы создать схему на слайде:
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте схему с данными по умолчанию нужного типа.
- Сохраните изменённую презентацию в файл PPTX.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation() as presentation:
slide = presentation.slides[0]
smart_art = slide.shapes.add_smart_art(0, 0, 400, 400, smartart.SmartArtLayoutType.PICTURE_ORGANIZATION_CHART)
presentation.save("OrganizationChart.pptx", slides.export.SaveFormat.PPTX)
FAQ
Поддерживает ли SmartArt зеркальное отображение/обратное направление для RTL‑языков?
Да. Свойство is_reversed переключает направление диаграммы (LTR/RTL), если выбранный тип SmartArt поддерживает обратное отображение.
Как скопировать SmartArt на тот же слайд или в другую презентацию, сохранив форматирование?
Вы можете клонировать форму SmartArt через коллекцию фигур (ShapeCollection.add_clone) или клонировать весь слайд, содержащий эту форму. Оба подхода сохраняют размер, позицию и стили.
Как отрендерить SmartArt в растровое изображение для предварительного просмотра или экспорта в веб?
Отрендерите слайд (или всю презентацию) в PNG/JPEG с помощью API, который преобразует слайды/презентации в изображения — SmartArt будет отрисован как часть слайда.
Как программно выбрать конкретный SmartArt на слайде, если их несколько?
Обычной практикой является использование альтернативного текста (Alt Text) или имени и поиск фигуры по этому атрибуту в рамках Slide.shapes, затем проверка типа, чтобы подтвердить, что это SmartArt. В документации описаны типичные приёмы поиска и работы с фигурами.