SmartArt alakzatcsomópontok kezelése prezentációkban Python segítségével
Áttekintés
A PowerPoint‑prezentációkban a SmartArt‑grafikákat csomópontok szervezik, amelyek szöveget tartalmaznak és meghatározzák a diagram felépítését. Az Aspose.Slides lehetővé teszi ezen SmartArt‑csomópontok programozott kezelését: új csomópontok és alcsomópontok hozzáadása, alcsomópontok beszúrása egy adott pozícióban, meglévő csomópontok elérése, valamint a szövegük, szintjük és pozíciójuk olvasása.
Ez a cikk bemutatja a SmartArt‑alak csomópontok kezelését. Megmutatja, hogyan lehet csomópontokat eltávolítani, alcsomópontokkal index vagy pozíció alapján dolgozni, egy segítő csomópontot normál csomóponttá változtatni, a SmartArt csomópont alakzatok pozícióját, méretét és forgását módosítani, a csomópont kitöltési formátumát beállítani, valamint egy SmartArt alcsomóponthoz bélyegképet generálni.
SmartArt‑csomópont hozzáadása
Az Aspose.Slides for Python via Java API-t biztosít a SmartArt‑alakok kezeléséhez. A következő példa egy csomópontot és egy alcsomópontot ad hozzá egy SmartArt‑alakhoz.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a SmartArt‑alakot tartalmazó prezentációt.
- Szerezze meg az első diát az indexe alapján.
- Iteráljon végig az összes alakzatot az első dián.
- Ellenőrizze, hogy az alakzat SmartArt példány-e.
- Adj hozzá egy új csomópontot a SmartArt alakzat node collection gyűjteményéhez, és állítsa be a szövegét a TextFrame segítségével.
- Adj hozzá egy alcsomópontot az új csomóponthoz, és állítsa be a szövegét a TextFrame segítségével.
- Mentse a prezentációt.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArt
presentation = Presentation("SimpleSmartArt.pptx")
try:
for shape in presentation.getSlides().get_Item(0).getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
node = smart_art.getAllNodes().addNode()
node.getTextFrame().setText("Test")
child_node = node.getChildNodes().addNode()
child_node.getTextFrame().setText("New Node Added")
presentation.save("AddSmartArtNode.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
SmartArt‑csomópont hozzáadása egy adott pozícióban
A következő példa egy alcsomópontot ad hozzá egy SmartArt‑csomóponton belül egy adott pozícióban.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg az első diát az indexe alapján.
- Adjon hozzá egy SmartArt alakzatot a StackedList elrendezéssel a diára.
- Érje el az első csomópontot a hozzáadott SmartArt alakzatban.
- Adj hozzá egy alcsomópontot a kiválasztott csomóponthoz a 2. pozícióban a addNodeByPosition használatával, és állítsa be a szövegét.
- Mentse a prezentációt.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
smart_art = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList)
node = smart_art.getAllNodes().get_Item(0)
child_node = node.getChildNodes().addNodeByPosition(2)
child_node.getTextFrame().setText("Sample Text Added")
presentation.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
SmartArt‑csomópont elérése
A következő példa a SmartArt‑alak csomópontjait érinti. A getLayout által visszaadott elrendezés csak olvasható, és a SmartArt‑alak hozzáadásakor kerül beállításra.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a SmartArt‑alakot tartalmazó prezentációt.
- Szerezze meg az első diát az indexe alapján.
- Iteráljon végig az összes alakzatot az első dián.
- Ellenőrizze, hogy az alakzat SmartArt példány-e.
- Iteráljon végig az összes nodes elemen a SmartArt alakzatban.
- Olvassa ki és mutassa a SmartArt csomópont pozícióját, szintjét és szövegét.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SmartArt
presentation = Presentation("SmartArtShape.pptx")
try:
slide = presentation.getSlides().get_Item(0)
for shape in slide.getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
for i in range(smart_art.getAllNodes().size()):
node = smart_art.getAllNodes().get_Item(i)
print(node.getTextFrame().getText(), " ", node.getLevel(), " ", node.getPosition())
finally:
presentation.dispose()
SmartArt‑alcsomópont elérése
A következő példa a SmartArt‑alak egyes csomópontjainak alcsomópontjait érinti.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a SmartArt‑alakot tartalmazó prezentációt.
- Szerezze meg az első diát az indexe alapján.
- Iteráljon végig az összes alakzatot az első dián.
- Ellenőrizze, hogy az alakzat SmartArt példány-e.
- Iteráljon végig az összes nodes elemen a SmartArt alakzatban.
- Minden csomópontnál iteráljon végig az child nodes elemein.
- Olvassa ki és mutassa az child node pozícióját, szintjét és szövegét.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SmartArt
presentation = Presentation("AccessChildNodes.pptx")
try:
slide = presentation.getSlides().get_Item(0)
for shape in slide.getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
for i in range(smart_art.getAllNodes().size()):
parent_node = smart_art.getAllNodes().get_Item(i)
for j in range(parent_node.getChildNodes().size()):
node = parent_node.getChildNodes().get_Item(j)
print("j = ", j, ", Text = ", node.getTextFrame().getText(), ", Level = ", node.getLevel(), ", Position = ", node.getPosition())
finally:
presentation.dispose()
SmartArt‑alcsomópont elérése egy adott pozícióban
A következő példa egy alcsomópontot ér el egy adott indexen a szülőcsomópont gyűjteményében.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg az első diát az indexe alapján.
- Adjon hozzá egy SmartArt alakzatot a StackedList elrendezéssel.
- Érje el a hozzáadott SmartArt alakzatot.
- Érje el a 0. indexű csomópontot a SmartArt alakzatban.
- Érje el az 1. indexű alcsomópontot a get_Item használatával.
- Olvassa ki és mutassa az child node pozícióját, szintjét és szövegét.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SmartArtLayoutType
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
smart_art = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList)
node = smart_art.getAllNodes().get_Item(0)
position = 1
child_node = node.getChildNodes().get_Item(position)
print("Text = ", child_node.getTextFrame().getText(), ", Level = ", child_node.getLevel(), ", Position = ", child_node.getPosition())
finally:
presentation.dispose()
SmartArt‑csomópont eltávolítása
A következő példa egy csomópontot távolít el egy SmartArt alakzatból.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a SmartArt‑alakot tartalmazó prezentációt.
- Szerezze meg az első diát az indexe alapján.
- Iteráljon végig az összes alakzatot az első dián.
- Ellenőrizze, hogy az alakzat SmartArt példány-e.
- Ellenőrizze, hogy a SmartArt alakzat legalább egy csomópontot tartalmaz.
- Válassza ki a törlendő SmartArt csomópontot.
- Távolítsa el a kiválasztott csomópontot a removeNode használatával.
- Mentse a prezentációt.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArt
presentation = Presentation("AddSmartArtNode.pptx")
try:
for shape in presentation.getSlides().get_Item(0).getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
if smart_art.getAllNodes().size() > 0:
node = smart_art.getAllNodes().get_Item(0)
smart_art.getAllNodes().removeNode(node)
presentation.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
SmartArt‑csomópont eltávolítása egy adott pozícióból
A következő példa egy alcsomópontot távolít el egy adott indexen a SmartArt‑csomópont gyűjteményében.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a SmartArt‑alakot tartalmazó prezentációt.
- Szerezze meg az első diát az indexe alapján.
- Iteráljon végig az összes alakzatot az első dián.
- Ellenőrizze, hogy az alakzat SmartArt példány-e.
- Ha létezik, érje el a 0. indexű SmartArt csomópontot.
- Ellenőrizze, hogy a kiválasztott SmartArt csomópontnak legalább két alcsomópontja van.
- Távolítsa el az 1. indexű alcsomópontot a removeNode használatával.
- Mentse a prezentációt.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArt
presentation = Presentation("AddSmartArtNode.pptx")
try:
for shape in presentation.getSlides().get_Item(0).getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
if smart_art.getAllNodes().size() > 0:
node = smart_art.getAllNodes().get_Item(0)
if node.getChildNodes().size() >= 2:
node.getChildNodes().removeNode(1)
presentation.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Egy alcsomópont egyéni pozíciójának beállítása egy SmartArt objektumban
Az Aspose.Slides for Python via Java támogatja a SmartArtShape pozíciójának beállítását a setX és setY metódusokkal. A következő példa egyedi pozíciót, méretet és forgást állít be a SmartArt csomópont alakzatok számára. Új csomópontok hozzáadása újraszámolja az összes csomópont pozícióját és méretét. Az egyéni pozícionálás lehetővé teszi a csomópontok kívánt elrendezését.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType
presentation = Presentation("SimpleSmartArt.pptx")
try:
smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart)
node = smart_art.getAllNodes().get_Item(1)
shape = node.getShapes().get_Item(1)
shape.setX(shape.getX() + shape.getWidth() * 2)
shape.setY(shape.getY() - shape.getHeight() * 2)
node = smart_art.getAllNodes().get_Item(2)
shape = node.getShapes().get_Item(1)
shape.setWidth(shape.getWidth() + shape.getWidth() * 2)
node = smart_art.getAllNodes().get_Item(3)
shape = node.getShapes().get_Item(1)
shape.setHeight(shape.getHeight() + shape.getHeight() * 2)
node = smart_art.getAllNodes().get_Item(4)
shape = node.getShapes().get_Item(1)
shape.setRotation(90)
presentation.save("SmartArt.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Segítő csomópont ellenőrzése
Megjegyzés
Ez a szakasz a programozottan az Aspose.Slides for Python via Java segítségével a prezentációs diákra hozzáadott SmartArt alakzatokat vizsgálja.A következő forrás SmartArt alakzatot használja a példában.
![]() |
|---|
| Ábra: Forrás SmartArt alakzat a dián |
A következő példa az asszisztens csomópontokat azonosítja a SmartArt csomópontgyűjteményben, és normál csomópontokká változtatja őket.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a SmartArt‑alakot tartalmazó prezentációt.
- Szerezze meg az első diát az indexe alapján.
- Iteráljon végig az összes alakzatot az első dián.
- Ellenőrizze, hogy az alakzat SmartArt példány-e.
- Iteráljon végig a SmartArt alakzat összes csomópontján, és ellenőrizze, hogy Assistant Nodes‑ek-e.
- Minden asszisztens csomópontot változtasson normál csomóponttá.
- Mentse a prezentációt.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArt
presentation = Presentation("AddNodes.pptx")
try:
for shape in presentation.getSlides().get_Item(0).getShapes():
if isinstance(shape, SmartArt):
smart_art = shape
for i in range(smart_art.getAllNodes().size()):
node = smart_art.getAllNodes().get_Item(i)
if node.isAssistant():
node.setAssistant(False)
presentation.save("ChangeAssistantNode.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
![]() |
|---|
| Ábra: Asszisztens csomópontok módosítva egy SmartArt alakzaton a dián |
Csomópont kitöltési formátumának beállítása
Az Aspose.Slides for Python via Java lehetővé teszi egyedi SmartArt alakzatok hozzáadását és a kitöltési formátumuk beállítását. Ez a cikk bemutatja, hogyan hozhatók létre és érhetők el a SmartArt alakzatok, valamint hogyan állítható be a kitöltési formátum az Aspose.Slides for Python via Java‑val.
Kérjük, kövesse az alábbi lépéseket:
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen egy diát az indexe alapján.
- Adjon hozzá egy SmartArt alakzatot a ClosedChevronProcess elrendezéssel.
- Állítsa be a FillFormat formátumot a SmartArt alakzat csomópontjainál.
- Írja ki a módosított prezentációt PPTX fájlként.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType, FillType
from java.awt import Color
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess)
node = chevron.getAllNodes().addNode()
node.getTextFrame().setText("Some text")
for item in node.getShapes():
item.getFillFormat().setFillType(FillType.Solid)
item.getFillFormat().getSolidFillColor().setColor(Color.RED)
presentation.save("TestSmart.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
SmartArt alcsomópont bélyegképének generálása
A SmartArt alcsomópont bélyegképének generálásához kövesse az alábbi lépéseket:
- Hozzon létre egy példányt a Presentation osztályból.
- Adj hozzá egy SmartArt alakzatot.
- Szerezzen egy csomópontot az indexe alapján.
- Szerezze meg a bélyegkép képet.
- Mentse a bélyegkép képet a kívánt képformátumban.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SmartArtLayoutType, ImageFormat
presentation = Presentation()
try:
smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle)
node = smart_art.getNodes().get_Item(1)
image = node.getShapes().get_Item(0).getImage()
try:
image.save("SmartArt_ChildNode_Thumbnail.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
FAQ
Támogatott a SmartArt animáció?
Igen. A SmartArt‑ot szabályos alakzatként kezelik, így alkalmazhatóak a szabványos animációk (belépés, kilépés, hangsúlyozás, mozgási útvonal), valamint beállítható az időzítés. Szükség esetén az SmartArt‑csomópontok belső alakzatait is animálhatja.
Hogyan találhatom meg megbízhatóan egy adott SmartArt‑ot a dián, ha annak belső azonosítója ismeretlen?
Keressen és állítson be alternatív szöveget. Az egyedi alternatív szöveg beállítása a SmartArt‑ra lehetővé teszi a programozott keresést azonosítók nélkül.
Megmarad a SmartArt megjelenése a prezentáció PDF‑be konvertálásakor?
Igen. Az Aspose.Slides a PDF export során magas vizuális pontossággal rendereli a SmartArt‑ot, megőrizve a layoutot, színeket és hatásokat.
Kivonhatok-e egy teljes SmartArt képet (előnézet vagy jelentés céljából)?
Igen. A SmartArt‑alakzatot renderelheti raszteres formátumokba vagy SVG‑be a skálázható vektoros kimenethez, ami alkalmas bélyegképekhez, jelentésekhez vagy webes használatra.

