SmartArt alakzat csomópontok kezelése prezentációkban PHP használatával
Áttekintés
A PowerPoint‑prezentációkban a SmartArt grafikát csomópontok szervezik, amelyek szöveget tartalmaznak és meghatározzák a diagram szerkezetét. Az Aspose.Slides lehetővé teszi, hogy programozottan dolgozzon ezekkel a SmartArt csomópontokkal: új csomópontok és gyermekcsomópontok hozzáadása, gyermekcsomópontok beszúrása 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, hogyan kezelje a SmartArt alakzat csomópontjait. Megmutatja, hogyan távolítson el csomópontokat, hogyan dolgozzon gyermekcsomópontokkal index vagy pozíció alapján, hogyan változtassa asszisztens csomópontot normál csomóponttá, hogyan állítsa be a SmartArt csomópont alakzatok pozícióját, méretét és forgását, hogyan állítsa be a csomópont kitöltési formátumát, és hogyan generáljon bélyegképet egy SmartArt gyermekcsomópontról.
SmartArt csomópont hozzáadása
Az Aspose.Slides for PHP via Java biztosítja a legegyszerűbb API‑t a SmartArt alakzatok kezeléséhez a legegyszerűbb módon. Az alábbi példakód segít csomópont és gyermekcsomópont hozzáadásában egy SmartArt alakzaton belül.
- Hozzon létre egy Presentation osztály példányt és töltse be az előadást SmartArt Shape‑szel.
- Szerezze be az első dia referenciáját az Index segítségével.
- Iteráljon minden alakzaton az első dián.
- Ellenőrizze, hogy az alakzat SmartArt típusú‑e, és ha igen, végezze a típuskonverziót a kiválasztott alakzatra SmartArt.
- Add a new Node a SmartArt shape NodeCollection‑hez és állítsa be a szöveget a TextFrame‑ben.
- Most, Add egy Child Node a most hozzáadott SmartArt Node‑hoz és állítsa be a szöveget a TextFrame‑ben.
- Mentse el az előadást.
# Töltsük be a kívánt prezentációt
$pres = new Presentation("SimpleSmartArt.pptx");
try {
# Bejárjuk az első dián lévő összes alakzatot
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {
# Ellenőrizzük, hogy az alakzat SmartArt típusú-e
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Átcasteljük az alakzatot SmartArt-ra
$smart = $shape;
# Új SmartArt csomópont hozzáadása
$TemNode = $smart->getAllNodes()->addNode();
# Szöveg hozzáadása
$TemNode->getTextFrame()->setText("Test");
# Új gyermekcsomópont hozzáadása a szülőcsomóponthoz. A gyűjtemény végére kerül hozzáadásra
$newNode = $TemNode->getChildNodes()->addNode();
# Szöveg hozzáadása
$newNode->getTextFrame()->setText("New Node Added");
}
}
# Prezentáció mentése
$pres->save("AddSmartArtNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
SmartArt csomópont hozzáadása adott pozícióban
Az alábbi példakódban bemutatjuk, hogyan adhatunk hozzá gyermekcsomópontokat a SmartArt alakzat megfelelő csomópontjaihoz egy meghatározott pozíción.
- Hozzon létre egy Presentation osztály példányt.
- Szerezze be az első dia referenciáját az Index segítségével.
- Adjunk egy StackedList típusú SmartArt alakzatot a hozzáfért diára.
- Hozzáférés az első csomóponthoz a hozzáadott SmartArt shape‑ben.
- Most, adjon hozzá egy Child Node a kiválasztott Node‑hoz a 2. pozíción, és állítsa be a szöveget.
- Mentse el az előadást.
# Prezentáció példány létrehozása
$pres = new Presentation();
try {
# A prezentáció dia elérése
$slide = $pres->getSlides()->get_Item(0);
# Smart Art IShape hozzáadása
$smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::StackedList);
# SmartArt csomópont elérése a 0-s indexen
$node = $smart->getAllNodes()->get_Item(0);
# Új gyermekcsomópont hozzáadása a szülőcsomópontban a 2-es pozíción
$chNode = $node->getChildNodes()->addNodeByPosition(2);
# Szöveg hozzáadása
$chNode->getTextFrame()->setText("Sample Text Added");
# Prezentáció mentése
$pres->save("AddSmartArtNodeByPosition.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
SmartArt csomópont elérése
Az alábbi példakód segít elérni a csomópontokat egy SmartArt shape‑en belül. Kérjük, vegye figyelembe, hogy a SmartArt LayoutType‑ja csak olvasható, és csak akkor állítható be, amikor a SmartArt shape hozzá van adva.
- Hozzon létre egy Presentation osztály példányt és töltse be az előadást SmartArt Shape‑szel.
- Szerezze be az első dia referenciáját az Index segítségével.
- Iteráljon minden alakzaton az első dián.
- Ellenőrizze, hogy az alakzat SmartArt típusú‑e, és ha igen, végezze a típuskonverziót SmartArt típusra.
- Iteráljon minden Nodes‑on a SmartArt Shape‑en belül.
- Hozzáférés és információk megjelenítése, mint például a SmartArt csomópont pozíciója, szintje és szövege.
# Prezentáció osztály példányosítása
$pres = new Presentation("SmartArtShape.pptx");
try {
# Első dia lekérése
$slide = $pres->getSlides()->get_Item(0);
# Bejárás az első dián lévő összes alakzaton
foreach($slide->getShapes() as $shape) {
# Ellenőrzés, hogy az alakzat SmartArt típusú-e
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Átcastolás SmartArt-ra
$smart = $shape;
# Bejárás a SmartArt összes csomópontján
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
# SmartArt csomópont elérése i indexen
$node = $smart->getAllNodes()->get_Item($i);
# SmartArt csomópont paramétereinek kiírása
System->out->print($node->getTextFrame()->getText() . " " . $node->getLevel() . " " . $node->getPosition());
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
SmartArt gyermekcsomópont elérése
Az alábbi példakód segít elérni a gyermekcsomópontokat a SmartArt shape megfelelő csomópontjaihoz.
- Hozzon létre egy Presentation osztály példányt és töltse be az előadást SmartArt Shape‑szel.
- Szerezze be az első dia referenciáját az Index segítségével.
- Iteráljon minden alakzaton az első dián.
- Ellenőrizze, hogy az alakzat SmartArt típusú‑e, és ha igen, végezze a típuskonverziót SmartArt típusra.
- Iteráljon minden Nodes‑on a SmartArt Shape‑en belül.
- Minden kiválasztott SmartArt shape Node‑nél iteráljon minden Child Nodes‑on az adott csomóponton belül.
- Hozzáférés és információk megjelenítése, mint például a Child Node pozíciója, szintje és szövege.
# Prezentáció osztály példányosítása
$pres = new Presentation("AccessChildNodes.pptx");
try {
# Első dia lekérése
$slide = $pres->getSlides()->get_Item(0);
# Bejárás az első dián lévő összes alakzaton
foreach($slide->getShapes() as $shape) {
# Ellenőrzés, hogy az alakzat SmartArt típusú-e
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Átcastolás SmartArt-ra
$smart = $shape;
# Bejárás a SmartArt összes csomópontján
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
# SmartArt csomópont elérése i indexen
$node0 = $smart->getAllNodes()->get_Item($i);
# Gyermekcsomópontok bejárása a SmartArt csomópontban i indexen
for($j = 0; $j < java_values($node0->getChildNodes()->size()) ; $j++) {
# Gyermekcsomópont elérése a SmartArt csomópontban
$node = $node0->getChildNodes()->get_Item($j);
# SmartArt gyermekcsomópont paramétereinek kiírása
System->out->print("j = " . $j . ", Text = " . $node->getTextFrame()->getText() . ", Level = " . $node->getLevel() . ", Position = " . $node->getPosition());
}
}
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
SmartArt gyermekcsomópont elérése adott pozícióban
Ebben a példában megtanuljuk, hogyan érjünk el gyermekcsomópontokat egy adott pozícióban, amely a SmartArt shape megfelelő csomópontjaihoz tartozik.
- Hozzon létre egy Presentation osztály példányt.
- Szerezze be a második dia referenciáját az Index segítségével.
- Adjunk egy StackedList típusú SmartArt shape‑t.
- Hozzáférés a hozzáadott SmartArt shape‑hez.
- Hozzáférés a 0‑s indexű csomóponthoz a hozzáfért SmartArt shape‑ben.
- Most, a get_Item() metódus segítségével érje el a Child Node‑t az 1‑es pozíción a hozzáfért SmartArt node‑nál.
- Hozzáférés és információk megjelenítése, mint például a Child Node pozíciója, szintje és szövege.
# A prezentáció példányosítása
$pres = new Presentation();
try {
# Az első dia elérése
$slide = $pres->getSlides()->get_Item(0);
# SmartArt alakzat hozzáadása az első dián
$smart = $slide->getShapes()->addSmartArt(0, 0, 400, 400, SmartArtLayoutType::StackedList);
# SmartArt csomópont elérése a 0-s indexen
$node = $smart->getAllNodes()->get_Item(0);
# Gyermekcsomópont elérése az 1-es pozícióban a szülőcsomópontban
$position = 1;
$chNode = $node->getChildNodes()->get_Item($position);
# SmartArt gyermekcsomópont paramétereinek kiírása
System->out->print("Text = " . $chNode->getTextFrame()->getText() . ", Level = " . $chNode->getLevel() . ", Position = " . $chNode->getPosition());
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
SmartArt csomópont eltávolítása
Ebben a példában megtanuljuk, hogyan távolítsuk el a csomópontokat a SmartArt shape‑ben.
- Hozzon létre egy Presentation osztály példányt és töltse be az előadást SmartArt Shape‑szel.
- Szerezze be az első dia referenciáját az Index segítségével.
- Iteráljon minden alakzaton az első dián.
- Ellenőrizze, hogy az alakzat SmartArt típusú‑e, és ha igen, végezze a típuskonverziót SmartArt típusra.
- Ellenőrizze, hogy a SmartArt több mint 0 csomóponttal rendelkezik‑e.
- Válassza ki a törlendő SmartArt csomópontot.
- Most, a removeNode metódussal távolítsa el a kiválasztott csomópontot.
- Mentse el az előadást.
# Töltsük be a kívánt prezentációt
$pres = new Presentation("AddSmartArtNode.pptx");
try {
# Bejárjuk az első dián lévő összes alakzatot
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {)
# Ellenőrizzük, hogy az alakzat SmartArt típusú-e
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Átcastoljuk az alakzatot SmartArt-ra
$smart = $shape;
if (java_values($smart->getAllNodes()->size()) > 0) {
# SmartArt csomópont elérése a 0-s indexen
$node = $smart->getAllNodes()->get_Item(0);
# A kiválasztott csomópont eltávolítása
$smart->getAllNodes()->removeNode($node);
}
}
}
# Prezentáció mentése
$pres->save("RemoveSmartArtNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
SmartArt csomópont eltávolítása adott pozícióból
Ebben a példában megtanuljuk, hogyan távolítsuk el a csomópontokat a SmartArt shape‑ben egy adott pozíción.
- Hozzon létre egy Presentation osztály példányt és töltse be az előadást SmartArt Shape‑szel.
- Szerezze be az első dia referenciáját az Index segítségével.
- Iteráljon minden alakzaton az első dián.
- Ellenőrizze, hogy az alakzat SmartArt típusú‑e, és ha igen, végezze a típuskonverziót SmartArt típusra.
- Válassza ki a SmartArt shape csomópontját a 0‑s indexen.
- Most ellenőrizze, hogy a kiválasztott SmartArt csomópont több mint 2 gyermekcsomóponttal rendelkezik‑e.
- Most, a removeNode metódussal távolítsa el az 1‑es Position‑on lévő csomópontot.
- Mentse el az előadást.
# Töltsük be a kívánt prezentációt
$pres = new Presentation("AddSmartArtNode.pptx");
try {
# Bejárjuk az első dián lévő összes alakzatot
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {)
# Ellenőrizzük, hogy az alakzat SmartArt típusú-e
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Átcastoljuk az alakzatot SmartArt-ra
$smart = $shape;
if (java_values($smart->getAllNodes()->size()) > 0) {
# SmartArt csomópont elérése a 0-s indexen
$node = $smart->getAllNodes()->get_Item(0);
if (java_values($node->getChildNodes()->size()) >= 2) {
# A gyermekcsomópont eltávolítása az 1-es pozícióban
$node->getChildNodes()->removeNode(1);
}
}
}
}
# Prezentáció mentése
$pres->save("RemoveSmartArtNodeByPosition.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Egyéni pozíció beállítása egy gyermekcsomóponthoz egy SmartArt objektumban
Az Aspose.Slides for PHP via Java támogatja a SmartArtShape X és Y tulajdonságok beállítását. Az alábbi kódrészlet megmutatja, hogyan állítható be egyedi SmartArtShape pozíció, méret és forgatás; vegye figyelembe, hogy új csomópontok hozzáadása minden csomópont pozíciójának és méretének újraszámítását eredményezi. Az egyéni pozícióbeállításokkal a felhasználó a csomópontokat igények szerint állíthatja be.
# Prezentáció osztály példányosítása
$pres = new Presentation("SimpleSmartArt.pptx");
try {
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(20, 20, 600, 500, SmartArtLayoutType::OrganizationChart);
# SmartArt alakzat áthelyezése új pozícióba
$node = $smart->getAllNodes()->get_Item(1);
$shape = $node->getShapes()->get_Item(1);
$shape->setX($shape->getX() . $shape->getWidth() * 2);
$shape->setY($shape->getY() - $shape->getHeight() * 2);
# SmartArt alakzat szélességének módosítása
$node = $smart->getAllNodes()->get_Item(2);
$shape = $node->getShapes()->get_Item(1);
$shape->setWidth($shape->getWidth() . $shape->getWidth() * 2);
# SmartArt alakzat magasságának módosítása
$node = $smart->getAllNodes()->get_Item(3);
$shape = $node->getShapes()->get_Item(1);
$shape->setHeight($shape->getHeight() . $shape->getHeight() * 2);
# SmartArt alakzat forgatásának módosítása
$node = $smart->getAllNodes()->get_Item(4);
$shape = $node->getShapes()->get_Item(1);
$shape->setRotation(90);
$pres->save("SmartArt.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Asszisztens csomópont ellenőrzése
A vizsgálathoz a következő forrás SmartArt shape‑t használjuk a cikk különböző szakaszaiban.
![]() |
|---|
| Ábra: Forrás SmartArt alakzat a dián |
Az alábbi példakódban azt vizsgáljuk, hogyan azonosíthatók Asszisztens csomópontok a SmartArt csomópontgyűjteményben, és hogyan változtathatók meg.
- Hozzon létre egy Presentation osztály példányt és töltse be az előadást SmartArt Shape‑szel.
- Szerezze be a második dia referenciáját az Index segítségével.
- Iteráljon minden alakzaton az első dián.
- Ellenőrizze, hogy az alakzat SmartArt típusú‑e, és ha igen, végezze a típuskonverziót SmartArt típusra.
- Iteráljon minden csomóponton a SmartArt shape‑en belül, és ellenőrizze, hogy Assistant Nodes‑e‑k‑e.
- Módosítsa az Asszisztens csomópont státuszát normál csomóponttá.
- Mentse el az előadást.
# Prezentáció példányosítása
$pres = new Presentation("AddNodes.pptx");
try {
# Bejárjuk az első dián lévő összes alakzatot
foreach($pres->getSlides()->get_Item(0)->getShapes() as $shape) {)
# Ellenőrizzük, hogy az alakzat SmartArt típusú-e
if (java_instanceof($shape, new JavaClass("com.aspose.slides.SmartArt"))) {
# Átcastoljuk az alakzatot SmartArt-ra
$smart = $shape;
# Bejárás a SmartArt alakzat összes csomópontján
for($i = 0; $i < java_values($smart->getAllNodes()->size()) ; $i++) {
$node = $smart->getAllNodes()->get_Item($i);
# Ellenőrzés, hogy a csomópont Assistant csomópont-e
if ($node->isAssistant()) {
# Az Assistant csomópont állapotának false-ra állítása, hogy normál csomópont legyen
$node->isAssistant();
}
}
}
}
# Prezentáció mentése
$pres->save("ChangeAssitantNode.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
![]() |
|---|
| Ábra: Asszisztens csomópontok megváltoztatva a SmartArt alakzatban a dián |
Csomópont kitöltési formátumának beállítása
Az Aspose.Slides for PHP 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, illetve hogyan állítható be a kitöltési formátumuk az Aspose.Slides for PHP via Java használatával.
Kérjük, kövesse az alábbi lépéseket:
- Hozzon létre egy Presentation osztály példányt.
- Szerezze be egy dia referenciáját az indexe alapján.
- Adjunk egy SmartArt shape‑t a LayoutType beállításával.
- Állítsa be a Fill Format‑ot a SmartArt shape csomópontokhoz.
- Írja ki a módosított prezentációt PPTX fájlként.
# A prezentáció példányosítása
$pres = new Presentation();
try {
# Diának elérése
$slide = $pres->getSlides()->get_Item(0);
# SmartArt shape és csomópontok hozzáadása
$chevron = $slide->getShapes()->addSmartArt(10, 10, 800, 60, SmartArtLayoutType::ClosedChevronProcess);
$node = $chevron->getAllNodes()->addNode();
$node->getTextFrame()->setText("Some text");
# Csomópont kitöltési színének beállítása
foreach($node->getShapes() as $item) {
$item->getFillFormat()->setFillType(FillType::Solid);
$item->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
}
# Prezentáció mentése
$pres->save("TestSmart.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
SmartArt gyermekcsomópont bélyegképének generálása
A fejlesztők a következő lépések szerint generálhatnak bélyegképet egy SmartArt gyermekcsomópontról:
- Hozzon létre egy Presentation osztály példányt.
- Add SmartArt.
- Szerezze be egy csomópont referenciáját az Index segítségével.
- Szerezze meg a bélyegkép képet.
- Mentse el a bélyegképet a kívánt képformátumban.
# Prezentáció osztály példányosítása, amely a PPTX fájlt képviseli
$pres = new Presentation();
try {
# SmartArt hozzáadása
$smart = $pres->getSlides()->get_Item(0)->getShapes()->addSmartArt(10, 10, 400, 300, SmartArtLayoutType::BasicCycle);
# Csomópont referenciájának lekérése az Index használatával
$node = $smart->getNodes()->get_Item(1);
# Bélyegkép lekérése
$slideImage = $node->getShapes()->get_Item(0)->getImage();
# Bélyegkép mentése
try {
$slideImage->save("SmartArt_ChildNote_Thumbnail.png", ImageFormat::Png);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Támogatott a SmartArt animáció?
Igen. A SmartArt‑ot szabályos alakzatként kezelik, így alkalmazhat standard animációkat (belépés, kilépés, hangsúlyozás, mozgásút) és beállíthatja az időzítést. Szükség esetén animálhatja a SmartArt csomópontokon belüli alakzatokat is.
Hogyan találhatom meg megbízhatóan egy adott SmartArt‑ot egy dián, ha a belső azonosítója ismeretlen?
Keressen és azonosítson alternatív szöveg alapján (alternative text). Egy egyedi AltText megadása a SmartArt‑nek lehetővé teszi, hogy programozottan megtalálja anélkül, hogy belső azonosítókra támaszkodna.
Megmarad a SmartArt megjelenése, ha az előadást PDF‑re konvertáljuk?
Igen. Az Aspose.Slides a PDF export során magas vizuális hűséggel rendereli a SmartArt‑ot, megőrizve a elrendezést, színeket és hatásokat.
Kivonhatok képet az egész SmartArt‑ról (például előnézetekhez vagy jelentésekhez)?
Igen. Renderelhet egy SmartArt shape‑t raszteres formátumokba vagy SVG‑be a skálázható vektorkimenethez, ami alkalmas bélyegképekhez, jelentésekhez vagy webes felhasználáshoz.

