SmartArt kezelése PowerPoint prezentációkban Java segítségével

Áttekintés

A SmartArt egy PowerPoint diagram, amely csomópontokból, csomópont alakzatokból és elrendezésből áll. Az Aspose.Slides for Java-val létrehozhat SmartArt-ot, beolvashatja a szöveget a csomópontokból, módosíthatja az elrendezését, ellenőrizheti a rejtett csomópontokat, konfigurálhatja a szervezeti diagram elrendezéseket, és létrehozhat képes szervezeti diagramokat.

Szöveg lekérése 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 végén, majd olvassa el a ITextFrame objektumot, amelyet a ISmartArtShape.getTextFrame visszaad.

A példához egy prezentációra van szükség, amely legalább egy diát és egy SmartArt objektumot tartalmaz első alakzatként azon a dián. Kiírja a konzolra az összes elérhető szövegkeretet.

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();
}

A SmartArt objektum elrendezés típusának módosítása

A SmartArt elrendezés szabályozza, hogyan helyezkednek el és kapcsolódnak a csomópontok. A következő példa egy SmartArt objektumot hoz létre a SmartArtLayoutType BasicBlockList értékkel, átváltja a BasicProcess értékre, és elmenti a prezentációt. A IShapeCollection.addSmartArt‑nek átadott pozíció és méret pontban van megadva. Az elrendezés módosításához használja az ISmartArt.setLayout metódust.

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őrizze, hogy egy 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ó diagram elemekként.

A következő példa egy csomópontot ad egy SmartArt objektumhoz, amely a SmartArtLayoutType RadialCycle értéket használ, és ellenőrzi a hozzáadott csomópont rejtett állapotát. Ha a csomópont rejtett, üzenetet ír ki, és 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 diagram elrendezésének lekérdezése vagy beállítása

A szervezeti diagram elrendezést használó SmartArt diagramok esetén az ISmartArtNode.getOrganizationChartLayout és az ISmartArtNode.setOrganizationChartLayout határozzák meg, hogy a gyermek csomópontok hogyan helyezkednek el egy szülőcsomópont alatt. Például a gyermek csomópontokat felállíthatja balról, jobbról vagy mindkét oldalról függően a kiválasztott OrganizationChartLayoutType értéktől.

A következő példa létrehoz egy szervezeti diagramot, és az első csomópont elrendezését a OrganizationChartLayoutType LeftHanging értékre állítja. A nullártól kezdődő index 0 az első felső szintű csomópontot választja; annak gyermek csomó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 diagram létrehozása

A képes szervezeti diagram egy SmartArt elrendezés, amely hierarchikus diagramokhoz készült, és képre helyettesítőket tartalmaz. A SmartArtLayoutType PictureOrganizationChart értéket használja, amikor a SmartArt objektumot egy diára helyezi. Ez a példa egy diagramot ment képlehelyekkel; a helyettesítőket nem tölti fel 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égi diagramok átalakítása alakzatcsoportokká

A meglévő prezentáció modernizálásakor előfordulhat, hogy frissíteni kell egy eredetileg PowerPoint 97–2003-ban létrehozott szervezeti diagramot. Az Aspose.Slides ezeket a régi diagramokat ILegacyDiagram objektumokként reprezentálja. Használja a LegacyDiagram.convertToGroupShape metódust, hogy a diagramot alakzatcsoporttá alakítsa, így egyedi vizuális elemeket szerkeszthet. A részletekért tekintse meg a LegacyDiagram API Reference dokumentációt.

Az átalakítás új csoportot ad a alakzatgyűjteményhez az eredeti diagram eltávolítása nélkül. Sikeres átalakítás után távolítsa el az eredetit az IShapeCollection.remove segítségével, hogy elkerülje a duplikált tartalmat. A régi diagramokat gyűjtse össze egy listába az átalakítás előtt, hogy az 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á alakítja, és elmenti a frissített prezentációt PPTX formátumban.

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égi diagramok helyett, az eredeti diagramok már nem maradtak bennük. Nyissa meg a PPTX-et a PowerPointban, hogy szerkessze az egyes csoportok elemeit, például a szöveget, kitöltést vagy pozíciót.

FAQ

Támogatja a SmartArt a tükrözést vagy a fordítást jobb‑bal (RTL) nyelvekhez?

Igen. Az ISmartArt.setReversed metódus a diagram irányát balról jobbra és jobbról balra (vagy vissza) váltja, 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, miközben megőrzöm a formázást?

A SmartArt alakzat klónozásával a ShapeCollection.addClone vagy a SmartArt-ot tartalmazó teljes dia klónozásával tudja. Mindkét módszer megőrzi a méretet, a pozíciót és a formázást.

Hogyan jeleníthetem meg a SmartArt-ot raszteres képként előnézethez vagy webes exporthoz?

A diát renderelheti vagy a teljes prezentációt PNG vagy JPEG formátumba. 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ék a SmartArt alakzathoz, keresse meg ezt az értéket a BaseSlide.getShapes között, majd ellenőrizze, hogy a megtalált alakzat egy ISmartArt.