SmartArt beheren in PowerPoint‑presentaties met Java

Overzicht

SmartArt is een PowerPoint‑diagram dat bestaat uit knooppunten, knooppuntvormen en een lay‑out. Met Aspose.Slides for Java kun je SmartArt maken, tekst uit de knooppunten lezen, de lay‑out wijzigen, verborgen knooppunten inspecteren, lay‑outs voor organigrammen configureren en afbeelding‑organigrammen aanmaken.

Tekst ophalen uit een SmartArt‑object

Een SmartArt‑knooppunt kan één of meer vormen bevatten. Om de tekst uit de knooppuntvormen te lezen, doorloop je ISmartArt.getAllNodes en lees je vervolgens het ITextFrame dat wordt geretourneerd door ISmartArtShape.getTextFrame.

Het voorbeeld vereist een presentatie met ten minste één dia en een SmartArt‑object als de eerste vorm op die dia. Het drukt elk beschikbaar tekstframe af naar de console.

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

Lay‑outtype van een SmartArt‑object wijzigen

De SmartArt‑lay‑out bepaalt hoe knooppunten worden gerangschikt en verbonden. Het volgende voorbeeld maakt een SmartArt‑object met de SmartArtLayoutType‑waarde BasicBlockList, wijzigt deze naar de BasicProcess‑waarde en slaat de presentatie op. De positie en afmeting die aan IShapeCollection.addSmartArt worden meegegeven, worden gemeten in punten. Gebruik ISmartArt.setLayout om de lay‑out te wijzigen.

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

Controleren of een SmartArt‑knooppunt verborgen is

ISmartArtNode.isHidden geeft aan of het knooppunt verborgen is in het SmartArt‑datamodel. Verborgen knooppunten kunnen in de structuur bestaan, zelfs wanneer de gekozen lay‑out ze niet als zichtbare diagram­elementen weergeeft.

Het volgende voorbeeld voegt een knooppunt toe aan een SmartArt‑object dat de SmartArtLayoutType‑waarde RadialCycle gebruikt en controleert de verborgen status van het toegevoegde knooppunt. Het drukt een bericht af als het knooppunt verborgen is en slaat het diagram op.

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

Organigramlay‑out ophalen of instellen

Voor SmartArt‑diagrammen die een organigramlay‑out gebruiken, definiëren ISmartArtNode.getOrganizationChartLayout en ISmartArtNode.setOrganizationChartLayout hoe onderliggende knooppunten onder een bovenliggend knooppunt worden gerangschikt. Zo kun je bijvoorbeeld onderliggende knooppunten laten hangen aan de linker‑, rechter‑ of beide zijden, afhankelijk van de geselecteerde OrganizationChartLayoutType.

Het volgende voorbeeld maakt een organigram en stelt de lay‑out voor het eerste knooppunt in op de OrganizationChartLayoutType‑waarde LeftHanging. De index 0 (nul‑gebaseerd) selecteert het eerste knooppunt op hoogste niveau; de onderliggende knooppunten gebruiken de gekozen rangschikking. De gewijzigde presentatie wordt vervolgens opgeslagen.

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

Een afbeelding‑organigram maken

Een afbeelding‑organigram is een SmartArt‑lay‑out ontworpen voor hiërarchische diagrammen met afbeeldings‑plaatsvervangers. Gebruik de SmartArtLayoutType‑waarde PictureOrganizationChart bij het toevoegen van het SmartArt‑object aan een dia. Dit voorbeeld slaat een diagram met afbeeldings‑plaatsvervangers op; het vult de plaatsvervangers niet met afbeeldingen.

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

Legacy‑diagrammen omzetten naar groepen vormen

Bij het moderniseren van een bestaande presentatie moet je mogelijk een organigram bijwerken dat oorspronkelijk is gemaakt in PowerPoint 97–2003. Aspose.Slides vertegenwoordigt deze legacy‑diagrammen als ILegacyDiagram‑objecten. Gebruik LegacyDiagram.convertToGroupShape om een diagram om te zetten naar een groep van vormen, zodat je individuele visuele elementen kunt bewerken. Zie de LegacyDiagram API Reference voor meer details.

De conversie voegt een nieuwe groep toe aan de vormverzameling zonder het oorspronkelijke diagram te verwijderen. Na een geslaagde conversie verwijder je het origineel met IShapeCollection.remove om dubbele inhoud te voorkomen. Verzamel de legacy‑diagrammen in een lijst voordat je ze converteert, zodat het toevoegen en verwijderen van vormen de iteratie niet verstoort.

Het volgende voorbeeld opent een presentatie, doorzoekt elke dia, zet de diagrammen om naar groepen vormen en slaat de bijgewerkte presentatie op als PPTX.

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

De opgeslagen presentatie bevat bewerkbare groepen vormen ter vervanging van de geconverteerde legacy‑diagrammen, zonder dat er originele diagrammen meer naast staan. Open het PPTX‑bestand in PowerPoint om individuele elementen binnen elke groep te bewerken, zoals hun tekst, opvulling of positie.

FAQ

Ondersteunt SmartArt spiegelen of omkeren voor RTL-talen?

Ja. De ISmartArt.setReversed‑methode schakelt de diagramrichting van links‑naar‑rechts naar rechts‑naar‑links, of terug, wanneer de gekozen SmartArt‑lay‑out omkering ondersteunt.

Hoe kan ik SmartArt kopiëren naar dezelfde dia of naar een andere presentatie met behoud van opmaak?

Je kunt de SmartArt‑vorm klonen met ShapeCollection.addClone of de hele dia klonen die de SmartArt bevat. Beide methoden behouden grootte, positie en opmaak.

Hoe render ik SmartArt naar een rasterafbeelding voor voorbeeld of webexport?

Render de dia of de volledige presentatie naar PNG of JPEG. SmartArt wordt gerenderd als onderdeel van de dia.

Hoe kan ik een specifiek SmartArt‑object op een dia vinden als er meerdere zijn?

Gebruik Shape.setAlternativeText of Shape.setName om een onderscheidende alternatieve tekst of naam aan de SmartArt‑vorm toe te wijzen, zoek die waarde op in BaseSlide.getShapes, en controleer vervolgens of de gevonden vorm een ISmartArt is.