Zarządzaj SmartArt w prezentacjach PowerPoint przy użyciu Pythona

Przegląd

SmartArt to diagram PowerPoint składający się z węzłów, kształtów węzłów oraz układu. Za pomocą Aspose.Slides for Python via Java możesz tworzyć SmartArt, odczytywać tekst z jego węzłów, zmieniać układ, przeglądać ukryte węzły, konfigurować układy diagramów organizacyjnych oraz tworzyć diagramy organizacyjne ze zdjęciami.

Pobierz tekst z obiektu SmartArt

Węzeł SmartArt może zawierać jeden lub więcej kształtów. Aby odczytać widoczny tekst, przeiteruj metodą SmartArt.getAllNodes, a następnie odczytaj TextFrame zwrócony przez SmartArtShape.getTextFrame.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SmartArt

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().get_Item(0)

    if isinstance(shape, SmartArt):
        smart_art = shape

        for node in smart_art.getAllNodes():
            for node_shape in node.getShapes():
                if node_shape.getTextFrame() is not None:
                    print(node_shape.getTextFrame().getText())
finally:
    presentation.dispose()

Zmień typ układu obiektu SmartArt

Układ SmartArt określa, w jaki sposób węzły są rozmieszczane i połączone. Poniższy przykład tworzy obiekt SmartArt z wartością SmartArtLayoutType BasicBlockList, zmienia go na wartość BasicProcess i zapisuje prezentację.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType

presentation = Presentation()
try:
    smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList)

    smart_art.setLayout(SmartArtLayoutType.BasicProcess)

    presentation.save("ChangeSmartArtLayout_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sprawdź, czy węzeł SmartArt jest ukryty

SmartArtNode.isHidden wskazuje, czy węzeł jest ukryty w modelu danych SmartArt. Ukryte węzły mogą istnieć w strukturze, nawet gdy wybrany układ nie wyświetla ich jako widoczne elementy diagramu.

Poniższy przykład dodaje węzeł do obiektu SmartArt używającego wartości SmartArtLayoutType RadialCycle i sprawdza stan ukrycia węzła.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType

presentation = Presentation()
try:
    smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.RadialCycle)

    node = smart_art.getAllNodes().addNode()
    is_hidden = node.isHidden()

    if is_hidden:
        print("The node is hidden in the SmartArt data model.")

    presentation.save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Pobierz lub ustaw układ diagramu organizacyjnego

W diagramach SmartArt wykorzystujących układ diagramu organizacyjnego, SmartArtNode.getOrganizationChartLayout i SmartArtNode.setOrganizationChartLayout określają, jak węzły potomne są rozmieszczane pod węzłem nadrzędnym. Na przykład możesz ustawić, aby węzły potomne zwisały po lewej, prawej lub po obu stronach, w zależności od wybranego OrganizationChartLayoutType.

Poniższy przykład tworzy diagram organizacyjny i ustawia układ pierwszego węzła na wartość OrganizationChartLayoutType LeftHanging.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import OrganizationChartLayoutType, Presentation, SaveFormat, SmartArtLayoutType

presentation = Presentation()
try:
    smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart)

    root_node = smart_art.getNodes().get_Item(0)
    root_node.setOrganizationChartLayout(OrganizationChartLayoutType.LeftHanging)

    presentation.save("OrganizationChartLayout_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Utwórz diagram organizacyjny ze zdjęciem

Diagram organizacyjny ze zdjęciem to układ SmartArt przeznaczony do diagramów hierarchicznych zawierających pola na obrazy. Użyj wartości SmartArtLayoutType PictureOrganizationChart przy dodawaniu obiektu SmartArt do slajdu.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType

presentation = Presentation()
try:
    smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart)

    presentation.save("PictureOrganizationChart_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

FAQ

Czy SmartArt obsługuje odbicie lustrzane lub odwrócenie dla języków RTL?

Tak. Metoda SmartArt.setReversed zmienia kierunek diagramu z lewej‑na‑prawą na prawą‑na‑lewą lub odwrotnie, gdy wybrany układ SmartArt obsługuje odwrócenie.

Jak mogę skopiować SmartArt na tę samą slajd lub do innej prezentacji, zachowując formatowanie?

Możesz sklonować kształt SmartArt za pomocą ShapeCollection.addClone lub sklonować cały slajd zawierający SmartArt. Obie metody zachowują rozmiar, pozycję i formatowanie.

Jak wyrenderować SmartArt do obrazu rastrowego w celu podglądu lub eksportu do sieci?

Renderuj slajd lub całą prezentację do formatu PNG lub JPEG. SmartArt jest renderowany jako część slajdu.

Jak mogę znaleźć konkretny obiekt SmartArt na slajdzie, jeśli jest ich kilka?

Ustaw unikalną wartość Shape.getAlternativeText lub Shape.getName dla kształtu SmartArt, wyszukaj tę wartość w BaseSlide.getShapes i sprawdź, czy pasujący kształt jest SmartArt.