Управление SmartArt в презентациях PowerPoint с использованием Python
Обзор
SmartArt — это диаграмма PowerPoint, состоящая из узлов, форм узлов и макета. С помощью Aspose.Slides for Python via .NET вы можете создавать SmartArt, считывать текст из его узлов, менять макет, проверять скрытые узлы, настраивать макеты организационных диаграмм и создавать диаграммы организации с изображениями.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
shape = slide.shapes[0]
if isinstance(shape, smartart.SmartArt):
smart_art = shape
for smart_art_node in smart_art.all_nodes:
for smart_art_shape in smart_art_node.shapes:
if smart_art_shape.text_frame is not None:
print(smart_art_shape.text_frame.text)
Получить текст из объекта SmartArt
Узел SmartArt может содержать одну или несколько форм. Чтобы прочитать видимый текст, пройдитесь по SmartArt.all_nodes, затем прочитайте TextFrame, возвращаемый SmartArtShape.text_frame.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation() as presentation:
smart_art = presentation.slides[0].shapes.add_smart_art(
10, 10, 400, 300, smartart.SmartArtLayoutType.BASIC_BLOCK_LIST)
smart_art.layout = smartart.SmartArtLayoutType.BASIC_PROCESS
presentation.save("ChangeSmartArtLayout_out.pptx", slides.export.SaveFormat.PPTX)
Изменить тип макета объекта SmartArt
Макет SmartArt определяет, как узлы размещаются и соединяются. В следующем примере создаётся объект SmartArt с типом макета SmartArtLayoutType BASIC_BLOCK_LIST, затем он меняется на значение BASIC_PROCESS и сохраняется презентация.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation() as presentation:
smart_art = presentation.slides[0].shapes.add_smart_art(
10, 10, 400, 300, smartart.SmartArtLayoutType.RADIAL_CYCLE)
smart_art_node = smart_art.all_nodes.add_node()
is_hidden = smart_art_node.is_hidden
if is_hidden:
print("The node is hidden in the SmartArt data model.")
presentation.save("CheckSmartArtHiddenProperty_out.pptx", slides.export.SaveFormat.PPTX)
Проверить, скрыт ли узел SmartArt
SmartArtNode.is_hidden указывает, скрыт ли узел в модели данных SmartArt. Скрытые узлы могут существовать в структуре, даже если выбранный макет не отображает их как видимые элементы диаграммы.
В следующем примере добавляется узел к объекту SmartArt, использующему тип макета SmartArtLayoutType RADIAL_CYCLE, и проверяется состояние скрытости узла.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation() as presentation:
smart_art = presentation.slides[0].shapes.add_smart_art(
10, 10, 400, 300, smartart.SmartArtLayoutType.ORGANIZATION_CHART)
root_node = smart_art.nodes[0]
root_node.organization_chart_layout = smartart.OrganizationChartLayoutType.LEFT_HANGING
presentation.save("OrganizationChartLayout_out.pptx", slides.export.SaveFormat.PPTX)
Получить или установить макет организационной диаграммы
Для диаграмм SmartArt, использующих макет организационной диаграммы, SmartArtNode.organization_chart_layout определяет, как дочерние узлы располагаются под родительским узлом. Например, вы можете установить расположение дочерних узлов слева, справа или с обеих сторон в зависимости от выбранного OrganizationChartLayoutType.
В следующем примере создаётся организационная диаграмма и для первого узла устанавливается макет OrganizationChartLayoutType LEFT_HANGING.
import aspose.slides as slides
import aspose.slides.smartart as smartart
with slides.Presentation() as presentation:
smart_art = presentation.slides[0].shapes.add_smart_art(
0, 0, 400, 400, smartart.SmartArtLayoutType.PICTURE_ORGANIZATION_CHART)
presentation.save("PictureOrganizationChart_out.pptx", slides.export.SaveFormat.PPTX)
Создать организационную диаграмму с изображением
Организационная диаграмма с изображением — это макет SmartArt, предназначенный для иерархических диаграмм, включающих места для изображений. При добавлении объекта SmartArt на слайд используйте тип макета SmartArtLayoutType PICTURE_ORGANIZATION_CHART.
FAQ
Поддерживает ли SmartArt зеркальное отображение или обратный порядок для RTL‑языков?
Да. Свойство SmartArt.is_reversed переключает направление диаграммы слева направо на справа налево и обратно, если выбранный макет SmartArt поддерживает обратный порядок.
Как скопировать SmartArt на тот же слайд или в другую презентацию, сохранив форматирование?
Вы можете клонировать форму SmartArt с помощью ShapeCollection.add_clone либо клонировать весь слайд, содержащий SmartArt. Оба подхода сохраняют размер, положение и форматирование.
Как отобразить SmartArt в растре изображения для предварительного просмотра или экспорта в веб?
Отрендерите слайд или всю презентацию в PNG или JPEG. SmartArt отрисовывается как часть слайда.
Как найти конкретный объект SmartArt на слайде, если их несколько?
Установите отличительное значение Shape.alternative_text или Shape.name для формы SmartArt, выполните поиск этого значения в Slide.shapes, затем убедитесь, что найденная форма является SmartArt.