Správa SmartArt v prezentacích PowerPoint pomocí Pythonu

Přehled

SmartArt je diagram PowerPointu vytvořený z uzlů, tvarů uzlů a rozložení. Pomocí Aspose.Slides pro Python přes .NET můžete vytvářet SmartArt, číst text z jeho uzlů, měnit jeho rozložení, prohlížet skryté uzly, konfigurovat rozložení organizačních diagramů a vytvářet obrázkové organizační diagramy.

Získání textu z objektu SmartArt

Uzol SmartArt může obsahovat jeden nebo více tvarů. Pro čtení textu z tvarů uzlu iterujte přes SmartArt.all_nodes, pak přečtěte TextFrame který vrací SmartArtShape.text_frame.

Příklad vyžaduje prezentaci s alespoň jedním snímkem a objektem SmartArt jako prvním tvarem na tomto snímku. Vypíše každý dostupný textový rámec do konzoly.

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):
        for node in shape.all_nodes:
            for node_shape in node.shapes:
                if node_shape.text_frame is not None:
                    print(node_shape.text_frame.text)

Změna typu rozložení objektu SmartArt

Rozložení SmartArt řídí, jak jsou uzly uspořádány a propojeny. Následující příklad vytvoří objekt SmartArt s hodnotou SmartArtLayoutType BASIC_BLOCK_LIST, změní ji na hodnotu BASIC_PROCESS a uloží prezentaci. Pozice a velikost předávané metodě ShapeCollection.add_smart_art jsou měřeny v bodech. Nastavte SmartArt.layout, chcete-li změnit rozložení.

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(10, 10, 400, 300, smartart.SmartArtLayoutType.BASIC_BLOCK_LIST)
    smart_art.layout = smartart.SmartArtLayoutType.BASIC_PROCESS

    presentation.save("ChangeSmartArtLayout.pptx", slides.export.SaveFormat.PPTX)

Kontrola, zda je uzel SmartArt skrytý

SmartArtNode.is_hidden udává, zda je uzel skrytý v datovém modelu SmartArt. Skryté uzly mohou existovat ve struktuře, i když vybrané rozložení nezobrazuje je jako viditelné prvky diagramu.

Následující příklad přidá uzel do objektu SmartArt, který používá hodnotu SmartArtLayoutType RADIAL_CYCLE, a zkontroluje stav skrytí přidaného uzlu. Vypíše zprávu, pokud je uzel skrytý, a uloží diagram.

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(10, 10, 400, 300, smartart.SmartArtLayoutType.RADIAL_CYCLE)
    node = smart_art.all_nodes.add_node()
    is_hidden = node.is_hidden

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

    presentation.save("CheckSmartArtHiddenProperty.pptx", slides.export.SaveFormat.PPTX)

Získání nebo nastavení rozložení organizačního diagramu

U diagramů SmartArt, které používají rozložení organizačního diagramu, SmartArtNode.organization_chart_layout určuje, jak jsou podřízené uzly uspořádány pod rodičovským uzlem. Například můžete nastavit podřízené uzly, aby visely zleva, zprava nebo z obou stran, v závislosti na vybraném OrganizationChartLayoutType.

Následující příklad vytvoří organizační diagram a nastaví rozložení pro první uzel na hodnotu OrganizationChartLayoutType LEFT_HANGING. Index založený na nule 0 vybere první uzel nejvyšší úrovně; jeho podřízené uzly použijí vybrané uspořádání. Upravená prezentace je poté uložena.

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(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.pptx", slides.export.SaveFormat.PPTX)

Vytvoření obrázkového organizačního diagramu

Obrázkový organizační diagram je rozložení SmartArt navržené pro hierarchické diagramy, které obsahují zástupné obrázky. Použijte hodnotu SmartArtLayoutType PICTURE_ORGANIZATION_CHART při přidávání objektu SmartArt na snímek. Tento příklad uloží diagram se zástupnými obrázky; nezaplní však zástupné obrázky obrázky.

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("PictureOrganizationChart.pptx", slides.export.SaveFormat.PPTX)

Převod starých diagramů na skupiny tvarů

Při modernizaci existující prezentace můžete potřebovat aktualizovat organizační diagram původně vytvořený v PowerPointu 97-2003. Aspose.Slides představuje tyto staré diagramy jako objekty LegacyDiagram. Použijte LegacyDiagram.convert_to_group_shape, chcete-li převést diagram na skupinu tvarů, abyste mohli upravovat jednotlivé vizuální prvky. Podrobnosti najdete v LegacyDiagram API Reference.

Převod přidá novou skupinu do kolekce tvarů, aniž by odstranil původní diagram. Po úspěšném převodu odstraňte originál pomocí ShapeCollection.remove, abyste se vyhnuli duplicitnímu obsahu. Před převodem sesbírejte staré diagramy do seznamu, aby přidávání a odstraňování tvarů nepřerušilo iteraci.

Následující příklad otevře prezentaci, prohledá každý snímek, převede diagramy na skupiny tvarů a uloží aktualizovanou prezentaci jako PPTX.

import aspose.slides as slides

with slides.Presentation("legacy-diagrams.ppt") as presentation:
    for slide in presentation.slides:
        legacy_diagrams = [shape for shape in slide.shapes if isinstance(shape, slides.LegacyDiagram)]
        for legacy_diagram in legacy_diagrams:
            group_shape = legacy_diagram.convert_to_group_shape()

            if group_shape is not None:
                slide.shapes.remove(legacy_diagram)

    presentation.save("modernized.pptx", slides.export.SaveFormat.PPTX)

Uložená prezentace obsahuje editovatelné skupiny tvarů místo převedených starých diagramů, přičemž žádné původní diagramy již nebývají. Otevřete PPTX v PowerPointu a upravujte jednotlivé prvky v každé skupině, například jejich text, výplň nebo pozici.

Často kladené otázky

Podporuje SmartArt zrcadlení nebo obrácení pro RTL jazyky?

Ano. Vlastnost SmartArt.is_reversed přepíná směr diagramu zleva-doprava na zprava-doleva, nebo zpět, pokud vybrané rozložení SmartArt podporuje obrácení.

Jak mohu zkopírovat SmartArt na stejný snímek nebo do jiné prezentace při zachování formátování?

Můžete klonovat tvar SmartArt pomocí ShapeCollection.add_clone nebo klonovat celý snímek, který SmartArt obsahuje. Oba přístupy zachovávají velikost, pozici a formátování.

Jak mohu renderovat SmartArt do rastrového obrazu pro náhled nebo export na web?

Vykreslete snímek nebo celou prezentaci do PNG nebo JPEG. SmartArt je vykreslen jako součást snímku.

Jak mohu najít konkrétní objekt SmartArt na snímku, pokud jich je několik?

Nastavte výrazný Shape.alternative_text nebo Shape.name na tvar SmartArt, vyhledejte tuto hodnotu v Slide.shapes, a pak ověřte, že odpovídající tvar je SmartArt.