Java Kullanarak Sunumlarda SmartArt Şekil Düğümlerini Yönetme

Genel Bakış

PowerPoint sunumlarındaki SmartArt grafikleri, metin içeren ve diyagramın yapısını tanımlayan düğümler aracılığıyla düzenlenir. Aspose.Slides, bu SmartArt düğümleriyle programlı olarak çalışmanıza olanak tanır: yeni düğümler ve alt düğümler ekleyebilir, alt düğümleri belirli bir konuma ekleyebilir, mevcut düğümlere erişebilir ve metinlerini, seviyelerini ve konumlarını okuyabilirsiniz.

Bu makale, SmartArt şekil düğümlerinin nasıl yönetileceğini açıklar. Düğümlerin nasıl kaldırılacağını, alt düğümlerle indeks veya konuma göre nasıl çalışılacağını, asistan düğümünün normal düğüme nasıl dönüştürüleceğini, SmartArt düğüm şekillerinin konum, boyut ve dönüşümünün nasıl ayarlanacağını, düğüm dolgu biçimlerinin nasıl ayarlanacağını ve bir SmartArt alt düğümü için küçük resim görüntüsü nasıl oluşturulacağını gösterir.

SmartArt Düğümü Ekle

Aspose.Slides for Java, SmartArt şekillerini en kolay şekilde yönetmek için en basit API’yi sağlamıştır. Aşağıdaki örnek kod, SmartArt şekli içinde düğüm ve alt düğüm eklemenize yardımcı olacaktır.

  1. SmartArt Şekli ile sunumu yükleyerek Presentation sınıfının bir örneğini oluşturun.
  2. İlk slaytın referansını indeksini kullanarak edinin.
  3. İlk slayt içindeki tüm şekilleri dolaşın.
  4. Şeklin SmartArt türünde olup olmadığını kontrol edin ve SmartArt ise seçilen şekli SmartArt tipine dönüştürün.
  5. SmartArt şekli içinde yeni bir Yeni bir Düğüm Ekle NodeCollection ekleyin ve metni TextFrame içinde ayarlayın.
  6. Şimdi, yeni eklenen SmartArt Düğümüne bir Child Node Ekle ve metni TextFrame içinde ayarlayın.
  7. Sunumu Kaydedin.
// İstenen sunumu yükle
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
    // İlk slayt içindeki tüm şekillerde dolaş
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Şeklin SmartArt tipi olup olmadığını kontrol et
        if (shape instanceof SmartArt) 
        {
            // Şekli SmartArt tipine dönüştür
            SmartArt smart = (SmartArt) shape;
    
            // Yeni bir SmartArt düğümü ekleme
            SmartArtNode TemNode = (SmartArtNode) smart.getAllNodes().addNode();
    
            // Metin ekleme
            TemNode.getTextFrame().setText("Test");
    
            // Ana düğümde yeni bir alt düğüm ekleme. Koleksiyonun sonuna eklenecek
            SmartArtNode newNode = (SmartArtNode) TemNode.getChildNodes().addNode();
    
            // Metin ekleme
            newNode.getTextFrame().setText("New Node Added");
        }
    }
    
    // Sunumu kaydetme
    pres.save("AddSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Belirli Bir Konumda SmartArt Düğümü Ekle

Aşağıdaki örnek kodda, SmartArt şeklinin ilgili düğümlerine ait alt düğümlerin belirli bir konuma nasıl ekleneceğini açıkladık.

  1. Presentation sınıfının bir örneğini oluşturun.
  2. İlk slaytın referansını indeksini kullanarak edinin.
  3. Erişilen slayta StackedList türünde bir SmartArt şekli ekleyin.
  4. Eklenen SmartArt şekli içindeki ilk düğüme erişin.
  5. Şimdi, seçilen Node için konum 2’de bir Child Node ekleyin ve metnini ayarlayın.
  6. Sunumu Kaydedin.
// Sunum örneği oluşturma
Presentation pres = new Presentation();
try {
    // Sunum slaytına erişme
    ISlide slide = pres.getSlides().get_Item(0);

    // Smart Art IShape ekleme
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);

    // İndeks 0'da bulunan SmartArt düğümüne erişme
    ISmartArtNode node = smart.getAllNodes().get_Item(0);

    // Üst düğümde konum 2'de yeni alt düğüm ekleme
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).addNodeByPosition(2);

    // Metin ekleme
    chNode.getTextFrame().setText("Sample Text Added");

    // Sunumu kaydetme
    pres.save("AddSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

SmartArt Düğümüne Erişme

Aşağıdaki örnek kod, SmartArt şekli içindeki düğümlere erişmenize yardımcı olacaktır. Lütfen SmartArt’ın LayoutType’ını değiştirmenin mümkün olmadığını, bunun sadece okunabilir olduğunu ve yalnızca SmartArt şekli eklendiğinde ayarlandığını unutmayın.

  1. Presentation sınıfının bir örneğini oluşturun ve SmartArt Şekli ile sunumu yükleyin.
  2. İlk slaytın referansını indeksini kullanarak edinin.
  3. İlk slayt içindeki tüm şekilleri dolaşın.
  4. Şeklin SmartArt türünde olup olmadığını kontrol edin ve SmartArt ise seçilen şekli SmartArt tipine dönüştürün.
  5. SmartArt Şekli içindeki tüm Nodes dolaşın.
  6. SmartArt Düğümünün konumu, seviyesi ve Metni gibi bilgileri erişin ve görüntüleyin.
// Sunum Sınıfını Örnekle
Presentation pres = new Presentation("SmartArtShape.pptx");
try {
    // İlk slaytı al
    ISlide slide = pres.getSlides().get_Item(0);
    
    // İlk slayt içindeki tüm şekillerde dolaş
    for (IShape shape : slide.getShapes()) 
    {
        // Şeklin SmartArt tipi olup olmadığını kontrol et
        if (shape instanceof ISmartArt) 
        {
            // Şekli SmartArt tipine dönüştür
            ISmartArt smart = (ISmartArt) shape;
    
            // SmartArt içindeki tüm düğümlerde dolaş
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // i indeksindeki SmartArt düğümüne erişme
                SmartArtNode node = (SmartArtNode) smart.getAllNodes().get_Item(i);
    
                // SmartArt düğüm parametrelerini yazdırma
                System.out.print(node.getTextFrame().getText() + " " + node.getLevel() + " " + node.getPosition());
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

SmartArt Alt Düğümüne Erişme

Aşağıdaki örnek kod, SmartArt şeklinin ilgili düğümlerine ait alt düğümlere erişmenize yardımcı olacaktır.

  1. Presentation sınıfının bir örneğini oluşturun ve SmartArt Şekli ile sunumu yükleyin.
  2. İlk slaytın referansını indeksini kullanarak edinin.
  3. İlk slayt içindeki tüm şekilleri dolaşın.
  4. Şeklin SmartArt türünde olup olmadığını kontrol edin ve SmartArt ise seçilen şekli SmartArt tipine dönüştürün.
  5. SmartArt Şekli içindeki tüm Nodes dolaşın.
  6. Her seçilen SmartArt şekli Node için, ilgili düğüm içindeki tüm Child Nodes dolaşın.
  7. Child Node konumu, seviyesi ve Metni gibi bilgileri erişin ve görüntüleyin.
// Sunum Sınıfını Örnekle
Presentation pres = new Presentation("AccessChildNodes.pptx");
try {
    // İlk slaytı al
    ISlide slide = pres.getSlides().get_Item(0);
    
    // İlk slayt içindeki tüm şekillerde dolaş
    for (IShape shape : slide.getShapes()) 
    {
        // Şeklin SmartArt tipi olup olmadığını kontrol et
        if (shape instanceof ISmartArt) 
        {
            // Şekli SmartArt tipine dönüştür
            ISmartArt smart = (ISmartArt) shape;
    
            // SmartArt içindeki tüm düğümlerde dolaş
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                // i indeksindeki SmartArt düğümüne erişme
                SmartArtNode node0 = (SmartArtNode) smart.getAllNodes().get_Item(i);
                
                // i indeksindeki SmartArt düğümündeki alt düğümlerde dolaşma
                for (int j = 0; j < node0.getChildNodes().size(); j++) 
                {
                    // SmartArt düğümündeki alt düğüme erişme
                    SmartArtNode node = (SmartArtNode) node0.getChildNodes().get_Item(j);
    
                    // SmartArt alt düğüm parametrelerini yazdırma
                    System.out.print("j = " + j + ", Text = " + node.getTextFrame().getText() + ",  Level = " + node.getLevel() + ", Position = " + node.getPosition());
                }
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Belirli Bir Konumda SmartArt Alt Düğümüne Erişme

Bu örnekte, SmartArt şeklinin ilgili düğümlerine ait alt düğümlere belirli bir konumda nasıl erişileceğini öğreneceğiz.

  1. Presentation sınıfının bir örneğini oluşturun.
  2. İlk slaytın referansını indeksini kullanarak edinin.
  3. StackedList türünde bir SmartArt şekli ekleyin.
  4. Eklenen SmartArt şekline erişin.
  5. Erişilen SmartArt şekli için indeks 0’daki düğüme erişin.
  6. Şimdi, erişilen SmartArt düğümünde konum 1’deki Child Node öğesine get_Item() yöntemiyle erişin.
  7. Child Node konumu, seviyesi ve Metni gibi bilgileri erişin ve görüntüleyin.
// Sunumu örnekle
Presentation pres = new Presentation();
try {
    // İlk slayta erişme
    ISlide slide = pres.getSlides().get_Item(0);
    
    // İlk slayta SmartArt şekli ekleme
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.StackedList);
    
    // İndeks 0'da bulunan SmartArt düğümüne erişme
    ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
    // Üst düğümde konum 1'deki alt düğüme erişme
    int position = 1;
    SmartArtNode chNode = (SmartArtNode) ((SmartArtNodeCollection) node.getChildNodes()).get_Item(position);
    
    // SmartArt alt düğüm parametrelerini yazdırma
    System.out.print("Text = " + chNode.getTextFrame().getText() + ",  Level = " + chNode.getLevel() + ", Position = " + chNode.getPosition());
} finally {
    if (pres != null) pres.dispose();
}

SmartArt Düğümünü Kaldırma

Bu örnekte, SmartArt şekli içindeki düğümleri nasıl kaldıracağınızı öğreneceksiniz.

  1. Presentation sınıfının bir örneğini oluşturun ve SmartArt Şekli ile sunumu yükleyin.
  2. İlk slaytın referansını indeksini kullanarak edinin.
  3. İlk slayt içindeki tüm şekilleri dolaşın.
  4. Şeklin SmartArt türünde olup olmadığını kontrol edin ve SmartArt ise seçilen şekli SmartArt tipine dönüştürün.
  5. SmartArt’ın 0’dan fazla düğümü olup olmadığını kontrol edin.
  6. Silinecek SmartArt düğümünü seçin.
  7. Seçilen düğümü RemoveNode yöntemiyle kaldırın.
  8. Sunumu Kaydedin.
// İstenen sunumu yükle
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // İlk slayt içindeki tüm şekillerde dolaş
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Şeklin SmartArt tipi olup olmadığını kontrol et
        if (shape instanceof ISmartArt) 
        {
            // Şekli SmartArt tipine dönüştür
            ISmartArt smart = (ISmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // İndeks 0'da bulunan SmartArt düğümüne erişme
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                // Seçilen düğümü kaldırma
                smart.getAllNodes().removeNode(node);
            }
        }
    }
    
    // Sunumu Kaydet
    pres.save("RemoveSmartArtNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Belirli Bir Konumdan SmartArt Düğümünü Kaldırma

Bu örnekte, SmartArt şekli içinde belirli bir konumdaki düğümleri nasıl kaldıracağınızı öğreneceksiniz.

  1. Presentation sınıfının bir örneğini oluşturun ve SmartArt Şekli ile sunumu yükleyin.
  2. İlk slaytın referansını indeksini kullanarak edinin.
  3. İlk slayt içindeki tüm şekilleri dolaşın.
  4. Şeklin SmartArt türünde olup olmadığını kontrol edin ve SmartArt ise seçilen şekli SmartArt tipine dönüştürün.
  5. İndeks 0’daki SmartArt şekli düğümünü seçin.
  6. Şimdi, seçilen SmartArt düğümünün 2’den fazla alt düğümü olup olmadığını kontrol edin.
  7. Position 1 konumundaki düğümü RemoveNode yöntemiyle kaldırın.
  8. Sunumu Kaydedin.
// İstenen sunumu yükle
Presentation pres = new Presentation("AddSmartArtNode.pptx");
try {
    // İlk slayt içindeki tüm şekillerde dolaş
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Şeklin SmartArt tipi olup olmadığını kontrol et
        if (shape instanceof SmartArt) 
        {
            // Şekli SmartArt tipine dönüştür
            SmartArt smart = (SmartArt) shape;
    
            if (smart.getAllNodes().size() > 0) 
            {
                // İndeks 0'da bulunan SmartArt düğümüne erişme
                ISmartArtNode node = smart.getAllNodes().get_Item(0);
    
                if (node.getChildNodes().size() >= 2) 
                {
                    // Pozisyon 1'deki alt düğümü kaldırma
                    (node.getChildNodes()).removeNode(1);
                }
            }
        }
    }
    
    // Sunumu Kaydet
    pres.save("RemoveSmartArtNodeByPosition.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

SmartArt Nesnesindeki Bir Alt Düğüm İçin Özel Konum Ayarlama

Artık Aspose.Slides for Java, SmartArtShape X ve Y özelliklerini ayarlamayı desteklemektedir. Aşağıdaki kod parçacığı, özel SmartArtShape konumu, boyutu ve dönüşümünün nasıl ayarlanacağını gösterir; ayrıca yeni düğüm eklemenin tüm düğümlerin konum ve boyutlarını yeniden hesapladığını unutmayın. Özel konum ayarlarıyla kullanıcı, düğümleri gereksinimlerine göre konumlandırabilir.

// Sunum Sınıfını Örnekle
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try{
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(20, 20, 600, 500, SmartArtLayoutType.OrganizationChart);

    // SmartArt şekli yeni konuma taşı
    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);

    // SmartArt şeklinin genişliklerini değiştir
    node = smart.getAllNodes().get_Item(2);
    shape = node.getShapes().get_Item(1);
    shape.setWidth(shape.getWidth() + shape.getWidth() * 2);

    // SmartArt şeklinin yüksekliğini değiştir
    node = smart.getAllNodes().get_Item(3);
    shape = node.getShapes().get_Item(1);
    shape.setHeight(shape.getHeight() + shape.getHeight() * 2);

    // SmartArt şeklinin döndürmesini değiştir
    node = smart.getAllNodes().get_Item(4);
    shape = node.getShapes().get_Item(1);
    shape.setRotation(90);

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

Bir Asistan Düğümünü Kontrol Etme

Farklı bölümlerde inceleme yapacağımız aşağıdaki kaynak SmartArt şekli kullanılacaktır.

todo:image_alt_text
Şekil: Slayttaki Kaynak SmartArt şekli

Aşağıdaki örnek kodda, SmartArt düğüm koleksiyonunda Assistant Nodes (Asistan Düğümler) nasıl tanımlanır ve nasıl değiştirilir incelenecektir.

  1. Presentation sınıfının bir örneğini oluşturun ve SmartArt Şekli ile sunumu yükleyin.
  2. İkinci slaytın referansını indeksini kullanarak edinin.
  3. İlk slayt içindeki tüm şekilleri dolaşın.
  4. Şeklin SmartArt türünde olup olmadığını kontrol edin ve SmartArt ise seçilen şekli SmartArt tipine dönüştürün.
  5. SmartArt şekli içindeki tüm düğümleri dolaşın ve bunların Assistant Nodes olup olmadığını kontrol edin.
  6. Asistan Düğümünün durumunu normal düğüm olarak değiştirin.
  7. Sunumu Kaydedin.
// Sunum örneği oluşturma
Presentation pres = new Presentation("AddNodes.pptx");
try {
    // İlk slayt içindeki tüm şekillerde dolaş
    for (IShape shape : pres.getSlides().get_Item(0).getShapes()) 
    {
        // Şeklin SmartArt tipi olup olmadığını kontrol et
        if (shape instanceof ISmartArt) 
        {
            // Şekli SmartArt tipine dönüştür
            ISmartArt smart = (SmartArt) shape;
    
            // SmartArt şeklinin tüm düğümlerinde dolaş
            for (int i = 0; i < smart.getAllNodes().size(); i++) 
            {
                ISmartArtNode node = smart.getAllNodes().get_Item(i);
                // Düğümün Asistan düğümü olup olmadığını kontrol et
                if (node.isAssistant()) 
                {
                    // Asistan düğümünü false olarak ayarlama ve normal düğüm haline getirme
                    node.isAssistant();
                }
            }
        }
    }
    
    // Sunumu Kaydet
    pres.save("ChangeAssitantNode.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
todo:image_alt_text
Şekil: Slayt içinde SmartArt şekline eklenen Asistan Düğümlerinin Değiştirilmesi

Bir Düğümün Dolgu Biçimini Ayarlama

Aspose.Slides for Java, özel SmartArt şekilleri eklemeyi ve dolgu biçimlerini ayarlamayı mümkün kılar. Bu makale, SmartArt şekilleri oluşturmayı, erişmeyi ve dolgu biçimlerini Aspose.Slides for Java kullanarak ayarlamayı açıklar.

Lütfen aşağıdaki adımları izleyin:

  1. Presentation sınıfının bir örneğini oluşturun.
  2. Bir slaydın referansını indeksini kullanarak edinin.
  3. SmartArt şekli ekleyin ve LayoutType ayarlayın.
  4. SmartArt şekil düğümleri için FillFormat ayarlayın.
  5. Değiştirilen sunumu PPTX dosyası olarak yazın.
// Sunumu örnekle
Presentation pres = new Presentation();
try {
    // Slayta erişme
    ISlide slide = pres.getSlides().get_Item(0);
    
    // SmartArt şekli ve düğümler ekleme
    ISmartArt chevron = slide.getShapes().addSmartArt(10, 10, 800, 60, SmartArtLayoutType.ClosedChevronProcess);
    ISmartArtNode node = chevron.getAllNodes().addNode();
    node.getTextFrame().setText("Some text");
    
    // Düğüm dolgu rengini ayarlama
    for (IShape item : node.getShapes()) 
    {
        item.getFillFormat().setFillType(FillType.Solid);
        item.getFillFormat().getSolidFillColor().setColor(Color.RED);
    }
    
    // Sunumu kaydet
    pres.save("TestSmart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

SmartArt Alt Düğümünün Küçük Resmini Oluşturma

Geliştiriciler aşağıdaki adımları izleyerek bir SmartArt alt düğümünün küçük resmini oluşturabilir:

  1. Presentation sınıfının bir örneğini oluşturun.
  2. SmartArt Ekle.
  3. Bir düğümün referansını indeksini kullanarak edinin.
  4. Küçük resim görüntüsünü alın.
  5. Küçük resim görüntüsünü istenen herhangi bir görüntü formatında kaydedin.
// PPTX dosyasını temsil eden Presentation sınıfını örnekle
Presentation pres = new Presentation();
try {
    // SmartArt ekle 
    ISmartArt smart = pres.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicCycle);

    // Bir düğümün referansını indeksini kullanarak al  
    ISmartArtNode node = smart.getNodes().get_Item(1);

    // Küçük resmi al
    IImage slideImage = node.getShapes().get_Item(0).getImage();

    // Küçük resmi kaydet
    try {
          slideImage.save("SmartArt_ChildNote_Thumbnail.png", ImageFormat.Png);
    } finally {
         if (slideImage != null) slideImage.dispose();
    }
} finally {
    if (pres != null) pres.dispose();
}

SSS

SmartArt animasyonu destekleniyor mu?

Evet. SmartArt normal bir şekil olarak ele alınır, bu yüzden standart animasyonları (giriş, çıkış, vurgu, hareket yolları) uygulayabilir ve zamanlamayı ayarlayabilirsiniz. Gerektiğinde SmartArt düğümleri içindeki şekiller de animasyon eklenebilir.

İç kimliği bilinmeyen belirli bir SmartArt’ı slaytta nasıl güvenilir bir şekilde bulabilirim?

Alternatif metin kullanarak atama yapın ve ona göre arama yapın. SmartArt üzerine belirgin bir AltText ayarlamak, dahili tanımlayıcılara güvenmeden programlı olarak bulmanızı sağlar.

Sunumu PDF’ye dönüştürürken SmartArt görünümü korunacak mı?

Evet. Aspose.Slides, PDF dışa aktarımı sırasında SmartArt’ı yüksek görsel doğrulukla render eder, düzeni, renkleri ve efektleri korur.

Tüm SmartArt’ın (ön izlemeler veya raporlar için) bir görüntüsünü çıkarabilir miyim?

Evet. SmartArt şekli, raster formatlarına ya da SVG formatına render edilebilir; bu da onu küçük resimler, raporlar veya web kullanımı için ölçeklenebilir vektörel çıktı olarak uygun kılar.