Správa uzlů tvaru SmartArt v prezentacích pomocí Javy

Přehled

Grafika SmartArt v prezentacích PowerPoint je organizována pomocí uzlů, které obsahují text a definují strukturu diagramu. Aspose.Slides vám umožňuje pracovat s těmito uzly SmartArt programově: přidávat nové uzly a poduzly, vkládat poduzly na konkrétní pozici, přistupovat k existujícím uzlům a číst jejich text, úroveň a pozici.

Tento článek vysvětluje, jak spravovat uzly tvarů SmartArt. Ukazuje, jak odstranit uzly, pracovat s poduzly podle indexu nebo pozice, změnit asistenční uzel na běžný uzel, upravit pozici, velikost a otočení tvarů uzlů SmartArt, nastavit výplňové formáty uzlů a vygenerovat miniaturu obrázku pro poduzel SmartArt.

Přidání uzlu SmartArt

Aspose.Slides pro Java poskytuje nejjednodušší rozhraní API pro správu tvarů SmartArt nejjednodušším způsobem. Následující ukázkový kód vám pomůže přidat uzel a poduzel uvnitř tvaru SmartArt.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci s tvarem SmartArt.
  2. Získejte odkaz na první snímek pomocí jeho indexu.
  3. Projděte všechny tvary na prvním snímku.
  4. Zkontrolujte, zda je tvar typu SmartArt a pokud ano, přetypujte vybraný tvar na SmartArt.
  5. Přidejte nový uzel v tvaru SmartArt NodeCollection a nastavte text v TextFrame.
  6. Nyní Přidejte poduzel do nově přidaného uzlu SmartArt a nastavte text v TextFrame
  7. Uložte prezentaci.
// Načtěte požadovanou prezentaci
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
    // Projděte všechny tvary na prvním snímku
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Zkontrolujte, zda je tvar typu SmartArt
        if (shape instanceof SmartArt) 
        {
            // Přetypujte tvar na SmartArt
            SmartArt smart = (SmartArt) shape;
    
            // Přidání nového uzlu SmartArt
            SmartArtNode TemNode = (SmartArtNode) smart.getAllNodes().addNode();
    
            // Přidání textu
            TemNode.getTextFrame().setText("Test");
    
            // Přidání nového poduzlu do nadřazeného uzlu. Bude přidán na konec kolekce
            SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
    
            // Přidání textu
            newNode.getTextFrame().setText("New Node Added");
        }
    }
    
    // Uložení prezentace
    pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Přidání uzlu SmartArt na konkrétní pozici

V následujícím ukázkovém kódu jsme vysvětlili, jak přidat poduzly patřící k jednotlivým uzlům tvaru SmartArt na konkrétní pozici.

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na první snímek pomocí jeho indexu.
  3. Přidejte tvar SmartArt typu StackedList na přístupný snímek.
  4. Získejte první uzel v přidaném tvaru SmartArt
  5. Nyní přidejte poduzel pro vybraný uzel na pozici 2 a nastavte jeho text.
  6. Uložte prezentaci
// Vytvoření instance prezentace
Presentation pres = new Presentation();
try {
    // Přístup k snímku prezentace
    ISlide slide = pres.getSlides().get_Item(0);

    // Přidání Smart Art IShape
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);

    // Přístup k uzlu SmartArt s indexem 0
    ISmartArtNode node = smart.getAllNodes().get_Item(0);

    // Přidání nového poduzlu na pozici 2 do nadřazeného uzlu
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);

    // Přidání textu
    chNode.getTextFrame().setText("Sample Text Added");

    // Uložení prezentace
    pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Přístup k uzlu SmartArt

Následující ukázkový kód vám pomůže přistupovat k uzlům uvnitř tvaru SmartArt. Vezměte prosím na vědomí, že nemůžete měnit LayoutType SmartArt, protože je pouze pro čtení a je nastaven pouze při přidání tvaru SmartArt.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci s tvarem SmartArt.
  2. Získejte odkaz na první snímek pomocí jeho indexu.
  3. Projděte všechny tvary na prvním snímku.
  4. Zkontrolujte, zda je tvar typu SmartArt a pokud ano, přetypujte vybraný tvar na SmartArt.
  5. Projděte všechny uzly uvnitř tvaru SmartArt.
  6. Získejte a zobrazte informace, jako jsou pozice uzlu SmartArt, úroveň a text.
// Vytvoření instance třídy Presentation
Presentation pres = new Presentation("SmartArtShape.pptx");
try {
    // Získání prvního snímku
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Procházet všechny tvary na prvním snímku
    for (IShape shape : slide.getShapes()) 
    {
        // Zkontrolujte, zda je tvar typu SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Přetypujte tvar na SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            // Procházet všechny uzly uvnitř SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // Přístup k uzlu SmartArt s indexem i
                SmartArtNode node = (SmartArtNode) smart.getAllNodes().get_Item(i);
    
                // Výpis parametrů uzlu SmartArt
                System.out.print(node.getTextFrame().getText() + " " + node.getLevel() + " " + node.getPosition());
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Přístup k poduzlu SmartArt

Následující ukázkový kód vám pomůže přistupovat k poduzlům patřícím jednotlivým uzlům tvaru SmartArt.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci s tvarem SmartArt.
  2. Získejte odkaz na první snímek pomocí jeho indexu.
  3. Projděte všechny tvary na prvním snímku.
  4. Zkontrolujte, zda je tvar typu SmartArt a pokud ano, přetypujte vybraný tvar na SmartArt.
  5. Projděte všechny uzly uvnitř tvaru SmartArt.
  6. Pro každý vybraný uzel tvaru SmartArt projděte všechny poduzly v konkrétním uzlu.
  7. Získejte a zobrazte informace, jako jsou pozice poduzlu , úroveň a text.
// Vytvoření instance třídy Presentation
Presentation pres = new Presentation("AccessChildNodes.pptx");
try {
    // Získání prvního snímku
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Procházet všechny tvary na prvním snímku
    for (IShape shape : slide.getShapes()) 
    {
        // Zkontrolujte, zda je tvar typu SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Přetypujte tvar na SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            // Procházet všechny uzly uvnitř SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // Přístup k uzlu SmartArt s indexem i
                SmartArtNode node0 = (SmartArtNode) smart.getAllNodes().get_Item(i);
                
                // Procházet poduzly v uzlu SmartArt s indexem i
                for (int j = 0; j < node0.getChildNodes().size(); j++) 
                {
                    // Přístup k poduzlu v uzlu SmartArt
                    SmartArtNode node = (SmartArtNode) node0.getChildNodes().get_Item(j);
    
                    // Výpis parametrů poduzlu SmartArt
                    System.out.print("j = " + j + ", Text = " + node.getTextFrame().getText() + ",  Level = " + node.getLevel() + ", Position = " + node.getPosition());
                }
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Přístup k poduzlu SmartArt na konkrétní pozici

V tomto příkladu se naučíme přistupovat k poduzlům na konkrétní pozici, které patří jednotlivým uzlům tvaru SmartArt.

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na první snímek pomocí jeho indexu.
  3. Přidejte tvar SmartArt typu StackedList.
  4. Získejte přidaný tvar SmartArt.
  5. Získejte uzel s indexem 0 pro přístupný tvar SmartArt.
  6. Nyní přistupte k poduzlu na pozici 1 pro přístupný uzel SmartArt pomocí get_Item() method.
  7. Získejte a zobrazte informace, jako jsou pozice poduzlu , úroveň a text.
// Vytvoření instance prezentace
Presentation pres = new Presentation();
try {
    // Přístup k prvnímu snímku
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Přidání tvaru SmartArt na první snímek
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
    
    // Přístup k uzlu SmartArt s indexem 0
    ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
    // Přístup k poduzlu na pozici 1 v nadřazeném uzlu
    int position = 1;
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).get_Item(position);
    
    // Výpis parametrů poduzlu SmartArt
    System.out.print("Text = " + chNode.getTextFrame().getText() + ",  Level = " + chNode.getLevel() + ", Position = " + chNode.getPosition());
} finally {
    if (pres != null) pres.dispose();
}

Odstranění uzlu SmartArt

V tomto příkladu se naučíme odstranit uzly uvnitř tvaru SmartArt.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci s tvarem SmartArt.
  2. Získejte odkaz na první snímek pomocí jeho indexu.
  3. Projděte všechny tvary na prvním snímku.
  4. Zkontrolujte, zda je tvar typu SmartArt a pokud ano, přetypujte vybraný tvar na SmartArt.
  5. Zkontrolujte, zda má SmartArt více než 0 uzlů.
  6. Vyberte uzel SmartArt, který má být odstraněn.
  7. Nyní odstraňte vybraný uzel pomocí metody RemoveNode .
  8. Uložte prezentaci.
// Načtěte požadovanou prezentaci
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // Projděte všechny tvary na prvním snímku
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Zkontrolujte, zda je tvar typu SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Přetypujte tvar na SmartArt
            ISmartArt smart = (ISmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // Přístup k uzlu SmartArt s indexem 0
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                // Odstranění vybraného uzlu
                smart.getAllNodes().removeNode(node);
            }
        }
    }
    
    // Uložení prezentace
    pres.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Odstranění uzlu SmartArt na konkrétní pozici

V tomto příkladu se naučíme odstranit uzly uvnitř tvaru SmartArt na konkrétní pozici.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci s tvarem SmartArt.
  2. Získejte odkaz na první snímek pomocí jeho indexu.
  3. Projděte všechny tvary na prvním snímku.
  4. Zkontrolujte, zda je tvar typu SmartArt a pokud ano, přetypujte vybraný tvar na SmartArt.
  5. Vyberte uzel tvaru SmartArt s indexem 0.
  6. Nyní zkontrolujte, zda vybraný uzel SmartArt má více než 2 poduzly.
  7. Nyní odstraňte uzel na pozici 1 pomocí metody RemoveNode .
  8. Uložte prezentaci.
// Načtěte požadovanou prezentaci
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // Projděte všechny tvary na prvním snímku
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Zkontrolujte, zda je tvar typu SmartArt
        if (shape instanceof SmartArt) 
        {
            // Přetypujte tvar na SmartArt
            SmartArt smart = (SmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // Přístup k uzlu SmartArt s indexem 0
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                if (node.getChildNodes().size() >= 2) 
                {
                    // Odstranění poduzlu na pozici 1
                    (node.getChildNodes()).removeNode(1);
                }
            }
        }
    }
    
    // Uložení prezentace
    pres.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Nastavení vlastní pozice pro poduzel v objektu SmartArt

Nyní Aspose.Slides pro Java podporuje nastavení vlastností SmartArtShape X a Y. Níže uvedený úryvek kódu ukazuje, jak nastavit vlastní pozici, velikost a otočení tvaru SmartArtShape; také vezměte prosím na vědomí, že přidávání nových uzlů způsobuje přepočet pozic a velikostí všech uzlů. S nastavením vlastní pozice může uživatel nastavit uzly podle požadavků.

// Vytvoření instance třídy Presentation
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try{
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);

    // Přesunutí tvaru SmartArt na novou pozici
    ISmartArtNode node = smart.getAllNodes().get_Item(1);
    ISmartArtShape shape = node.getShapes().get_Item(1);
    shape.setX(shape.getX() + shape.getWidth() * 2);
    shape.setY(shape.getY() - shape.getHeight() * 2);

    // Změna šířky tvaru SmartArt
    node = smart.getAllNodes().get_Item(2);
    shape = node.getShapes().get_Item(1);
    shape.setWidth(shape.getWidth() + shape.getWidth() * 2);

    // Změna výšky tvaru SmartArt
    node = smart.getAllNodes().get_Item(3);
    shape = node.getShapes().get_Item(1);
    shape.setHeight(shape.getHeight() + shape.getHeight() * 2);

    // Změna rotace tvaru SmartArt
    node = smart.getAllNodes().get_Item(4);
    shape = node.getShapes().get_Item(1);
    shape.setRotation(90);

    pres.save("SmartArt.pptx", SaveFormat.Pptx);
}finally {
    pres.dispose();
}

Kontrola asistenčního uzlu

Pro naše zkoumání v různých částech tohoto článku použijeme následující zdrojový tvar SmartArt.

todo:image_alt_text
Obrázek: Zdrojový tvar SmartArt na snímku

V následujícím ukázkovém kódu budeme zkoumat, jak identifikovat asistenční uzly ve sbírce uzlů SmartArt a jak je měnit.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci s tvarem SmartArt.
  2. Získejte odkaz na druhý snímek pomocí jeho indexu.
  3. Projděte všechny tvary uvnitř prvního snímku.
  4. Zkontrolujte, zda je tvar typu SmartArt a pokud ano, přetypujte vybraný tvar na SmartArt.
  5. Projděte všechny uzly uvnitř tvaru SmartArt a zkontrolujte, zda jsou asistenční uzly.
  6. Změňte stav asistenčního uzlu na běžný uzel.
  7. Uložte prezentaci.
// Vytvoření instance prezentace
Presentation pres = new Presentation("AddNodes.pptx");
try {
    // Procházet všechny tvary na prvním snímku
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Zkontrolujte, zda je tvar typu SmartArt
        if (shape instanceof ISmartArt) 
        {
            // Přetypujte tvar na SmartArt
            ISmartArt smart = (SmartArt) shape;
    
            // Procházení všech uzlů tvaru SmartArt
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                ISmartArtNode node = smart.getAllNodes().get_Item(i);
                // Zkontrolujte, zda je uzel asistenční
                if (node.isAssistant()) 
                {
                    // Nastavení asistenčního uzlu na false a převedení na běžný uzel
                    node.isAssistant();
                }
            }
        }
    }
    
    // Uložení prezentace
    pres.save("ChangeAssitantNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
todo:image_alt_text
Obrázek: Asistenční uzly změněny v tvaru SmartArt ve snímku

Nastavení výplňového formátu uzlu

Aspose.Slides pro Java umožňuje přidávat vlastní tvary SmartArt a nastavit jejich výplňový formát. Tento článek vysvětluje, jak vytvořit a přistupovat k tvarům SmartArt a nastavit jejich výplň pomocí Aspose.Slides pro Java.

Postupujte podle následujících kroků:

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na snímek pomocí jeho indexu.
  3. Přidejte tvar SmartArt nastavením jeho LayoutType.
  4. Nastavte FillFormat pro uzly tvaru SmartArt.
  5. Uložte upravenou prezentaci jako soubor PPTX.
// Vytvoření instance prezentace
Presentation pres = new Presentation();
try {
    // Přístup k snímku
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Přidání tvaru SmartArt a uzlů
    ISmartArt chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
    ISmartArtNode node = chevron.getAllNodes().addNode();
    node.getTextFrame().setText("Some text");
    
    // Nastavení barvy výplně uzlu
    for (IShape item : node.getShapes()) 
    {
        item.getFillFormat().setFillType(FillType.Solid);
        item.getFillFormat().getSolidFillColor().setColor(Color.RED);
    }
    
    // Uložení prezentace
    pres.save("TestSmart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Generování miniatury poduzlu SmartArt

Vývojáři mohou vygenerovat miniaturu poduzlu SmartArt podle následujících kroků:

  1. Vytvořte instanci třídy Presentation.
  2. Přidejte SmartArt.
  3. Získejte odkaz na uzel pomocí jeho indexu
  4. Získejte obrázek miniatury.
  5. Uložte obrázek miniatury v libovolném požadovaném formátu obrázku.
// Vytvoření instance třídy Presentation, která představuje soubor PPTX
Presentation pres = new Presentation();
try {
    // Přidání SmartArt
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);

    // Získání odkazu na uzel pomocí jeho indexu
    ISmartArtNode node = smart.getNodes().get_Item(1);

    // Získání miniatury
    IImage slideImage = node.getShapes().get_Item(0).getImage();

    // Uložení miniatury
    try {
          slideImage.save("SmartArt_ChildNote_Thumbnail.png", ImageFormat.Png);
    } finally {
         if (slideImage != null) slideImage.dispose();
    }
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Je podpora animací SmartArt?

Ano. SmartArt je považován za běžný tvar, takže můžete aplikovat standardní animace (vstup, odchod, zdůraznění, pohybové cesty) a upravit časování. V případě potřeby můžete animovat také tvary uvnitř uzlů SmartArt.

Jak mohu spolehlivě najít konkrétní SmartArt na snímku, pokud je jeho interní ID neznámé?

Přiřaďte a vyhledejte pomocí alternativního textu. Nastavení výrazného AltTextu na SmartArt vám umožní najít jej programově, aniž byste se spolehli na interní identifikátory.

Zůstane vzhled SmartArt zachován při konverzi prezentace do PDF?

Ano. Aspose.Slides vykresluje SmartArt s vysokou vizuální věrností během exportu do PDF, zachovává rozvržení, barvy a efekty.

Mohu extrahovat obrázek celého SmartArt (pro náhledy nebo zprávy)?

Ano. Můžete vykreslit tvar SmartArt do rasterových formátů nebo do SVG pro škálovatelný vektorový výstup, což je vhodné pro miniatury, zprávy nebo webové použití.