SmartArt kezelése PowerPoint prezentációkban Androidon
Áttekintés
A SmartArt egy PowerPoint-diagram, amely csomópontokból, csomópont alakzatokból és egy elrendezésből áll. Az Aspose.Slides for Android via Java‑val létrehozhat SmartArt‑ot, beolvashat szöveget a csomópontjaiból, módosíthatja az elrendezését, ellenőrizheti a rejtett csomópontokat, konfigurálhatja a szervezeti ábra elrendezéseket, és létrehozhat képes szervezeti ábrákat.
Szöveg lekérése egy SmartArt objektumból
Egy SmartArt csomópont egy vagy több alakzatot tartalmazhat. A csomópont alakzatok szövegének beolvasásához iteráljon a ISmartArt.getAllNodes listán, majd olvassa el az ITextFrame objektumot, amelyet az ISmartArtShape.getTextFrame visszaad.
A példához egy prezentációra van szükség, amely legalább egy diát és a dián az első alakzatként elhelyezett SmartArt objektumot tartalmaz. Kiírja az elérhető szövegkereteket a konzolra.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = (ISmartArt) slide.getShapes().get_Item(0);
for (ISmartArtNode node : smartArt.getAllNodes()) {
for (ISmartArtShape nodeShape : node.getShapes()) {
if (nodeShape.getTextFrame() != null) {
System.out.println(nodeShape.getTextFrame().getText());
}
}
}
} finally {
presentation.dispose();
}
Az SmartArt objektum elrendezéstípusának módosítása
A SmartArt elrendezése határozza meg, hogyan vannak a csomópontok elrendezve és összekapcsolva. A következő példa egy SmartArt objektumot hoz létre a SmartArtLayoutType BasicBlockList értékkel, átállítja BasicProcess értékre, és elmenti a prezentációt. A IShapeCollection.addSmartArt‑ba átadott pozíciót és méretet pontban mérik. Használja az ISmartArt.setLayout metódust az elrendezés módosításához.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList);
smartArt.setLayout(SmartArtLayoutType.BasicProcess);
presentation.save("ChangeSmartArtLayout.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Ellenőrzés, hogy a SmartArt csomópont rejtett-e
Az ISmartArtNode.isHidden azt jelzi, hogy a csomópont rejtett-e a SmartArt adatmodellben. A rejtett csomópontok létezhetnek a struktúrában akkor is, ha a kiválasztott elrendezés nem jeleníti meg őket látható diagramelemként.
A következő példa egy csomópontot ad egy SmartArt objektumhoz, amely a SmartArtLayoutType RadialCycle értéket használja, és ellenőrzi a hozzáadott csomópont rejtett állapotát. Ha a csomópont rejtett, üzenetet ír ki, majd elmenti a diagramot.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.RadialCycle);
ISmartArtNode node = smartArt.getAllNodes().addNode();
boolean isHidden = node.isHidden();
if (isHidden) {
System.out.println("The node is hidden in the SmartArt data model.");
}
presentation.save("CheckSmartArtHiddenProperty.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
A szervezeti ábra elrendezés lekérése vagy beállítása
Azoknál a SmartArt diagramoknál, amelyek szervezeti ábra elrendezést használnak, az ISmartArtNode.getOrganizationChartLayout és az ISmartArtNode.setOrganizationChartLayout határozzák meg, hogyan rendeződnek a gyermekcsomópontok egy szülőcsomópont alatt. Például a gyermekcsomópontokat a balra, jobbra vagy mindkét oldalra függesztheti, a kiválasztott OrganizationChartLayoutType attól függően.
A következő példa létrehoz egy szervezeti ábrát, és az első csomópont elrendezését a OrganizationChartLayoutType LeftHanging értékre állítja. A nulláról kezdődő index 0 az első felső szintű csomópontot választja; annak gyermekcsomópontjai a kiválasztott elrendezést használják. Ezután a módosított prezentációt elmenti.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart);
ISmartArtNode rootNode = smartArt.getNodes().get_Item(0);
rootNode.setOrganizationChartLayout(OrganizationChartLayoutType.LeftHanging);
presentation.save("OrganizationChartLayout.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Képes szervezeti ábra létrehozása
A képes szervezeti ábra egy SmartArt elrendezés, amely hierarchiai diagramokhoz készült, és képhelyeket tartalmaz. A SmartArtLayoutType PictureOrganizationChart értéket kell használni a SmartArt objektum diára való hozzáadásakor. Ez a példa egy diagramot ment képhelyekkel; a helyfoglalókat nem tölti ki képekkel.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ISmartArt smartArt = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart);
presentation.save("PictureOrganizationChart.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Örökölt diagramok átalakítása alakzatcsoportokká
Egy meglévő prezentáció modernizálásakor előfordulhat, hogy frissíteni kell egy 1997–2003-as PowerPoint‑ban létrehozott szervezeti ábrát. Az Aspose.Slides ezeket az örökölt diagramokat ILegacyDiagram objektumokként reprezentálja. Használja a LegacyDiagram.convertToGroupShape metódust a diagram alakzatcsoportba alakításához, hogy egyedi vizuális elemeket szerkeszthessen. A részletekért tekintse meg a LegacyDiagram API Reference dokumentációt.
A konverzió egy új csoportot ad az alakzatgyűjteményhez az eredeti diagram eltávolítása nélkül. A sikeres konverzió után távolítsa el az eredetit az IShapeCollection.remove segítségével, hogy elkerülje a duplikált tartalmat. Konvertálás előtt gyűjtse össze az örökölt diagramokat egy listába, hogy a alakzatok hozzáadása és eltávolítása ne szakítsa meg az iterációt.
A következő példa megnyit egy prezentációt, minden diát átvizsgál, a diagramokat alakzatcsoportokká konvertálja, és az frissített prezentációt PPTX‑ként elmenti.
import com.aspose.slides.*;
import java.util.ArrayList;
import java.util.List;
Presentation presentation = new Presentation("legacy-diagrams.ppt");
try {
for (ISlide slide : presentation.getSlides()) {
List<ILegacyDiagram> legacyDiagrams = new ArrayList<>();
for (IShape shape : slide.getShapes()) {
if (shape instanceof ILegacyDiagram) {
legacyDiagrams.add((ILegacyDiagram) shape);
}
}
for (ILegacyDiagram legacyDiagram : legacyDiagrams) {
IGroupShape groupShape = legacyDiagram.convertToGroupShape();
if (groupShape != null) {
slide.getShapes().remove(legacyDiagram);
}
}
}
presentation.save("modernized.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az elmentett prezentáció szerkeszthető alakzatcsoportokat tartalmaz a konvertált örökölt diagramok helyén, az eredeti diagramok már nem szerepelnek. Nyissa meg a PPTX‑et a PowerPointban, hogy szerkessze a csoportok egyes elemeit, például a szöveget, kitöltést vagy pozíciót.
GYIK
Támogatja a SmartArt a tükrözést vagy fordítást jobbról balra nyelvek esetén?
Igen. Az ISmartArt.setReversed metódus átváltja a diagram irányát balról jobbra és jobbról balra, vagy vissza, ha a kiválasztott SmartArt elrendezés támogatja a fordítást.
Hogyan másolhatom a SmartArt-ot ugyanarra a diára vagy egy másik prezentációba a formázás megőrzése mellett?
A SmartArt alakzat klónozásával a ShapeCollection.addClone vagy a SmartArt‑ot tartalmazó teljes dia klónozásával másolhatja. Mindkét módszer megőrzi a méretet, pozíciót és a formázást.
Hogyan renderelhetem a SmartArt-ot raszteres képpé előnézethez vagy webes exporthoz?
Renderelje a diát vagy a teljes prezentációt PNG‑re vagy JPEG‑re. A SmartArt a dia részeként kerül renderelésre.
Hogyan találhatok meg egy konkrét SmartArt objektumot egy dián, ha több is van?
Használja a Shape.setAlternativeText vagy a Shape.setName metódust, hogy egyedi alternatív szöveget vagy nevet rendeljön a SmartArt alakzathoz, keresse meg ezt az értéket a BaseSlide.getShapes‑ben, majd ellenőrizze, hogy a megtalált alakzat egy ISmartArt.