PowerPoint Sunumlarında Python Kullanarak SmartArt Yönetimi

Genel Bakış

SmartArt, düğümler, düğüm şekilleri ve bir düzen kullanılarak oluşturulan bir PowerPoint diyagramıdır. Aspose.Slides for Python via Java ile SmartArt oluşturabilir, düğümlerinden metin okuyabilir, düzenini değiştirebilir, gizli düğümleri inceleyebilir, organizasyon şeması düzenlerini yapılandırabilir ve resim organizasyon şemaları oluşturabilirsiniz.

SmartArt Nesnesinden Metin Almak

Bir SmartArt düğümü bir veya daha fazla şekil içerebilir. Görünür metni okumak için SmartArt.getAllNodes üzerinden yineleyin, ardından SmartArtShape.getTextFrame tarafından döndürülen TextFrame öğesini okuyun.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SmartArt

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().get_Item(0)

    if isinstance(shape, SmartArt):
        smart_art = shape

        for node in smart_art.getAllNodes():
            for node_shape in node.getShapes():
                if node_shape.getTextFrame() is not None:
                    print(node_shape.getTextFrame().getText())
finally:
    presentation.dispose()

SmartArt Nesnesinin Düzen Türünü Değiştirmek

SmartArt düzeni, düğümlerin nasıl yerleştirildiğini ve bağlandığını kontrol eder. Aşağıdaki örnek, SmartArtLayoutType BasicBlockList değerine sahip bir SmartArt nesnesi oluşturur, bunu BasicProcess değerine değiştirir ve sunumu kaydeder.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType

presentation = Presentation()
try:
    smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.BasicBlockList)

    smart_art.setLayout(SmartArtLayoutType.BasicProcess)

    presentation.save("ChangeSmartArtLayout_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Bir SmartArt Düğümünün Gizli Olup Olmadığını Kontrol Etmek

SmartArtNode.isHidden düğümün SmartArt veri modelinde gizli olup olmadığını gösterir. Seçilen düzen, düğümleri görünür diyagram öğeleri olarak göstermese bile gizli düğüller yapıda var olabilir.

Aşağıdaki örnek, SmartArtLayoutType RadialCycle değerini kullanan bir SmartArt nesnesine bir düğüm ekler ve düğümün gizli durumunu kontrol eder.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType

presentation = Presentation()
try:
    smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.RadialCycle)

    node = smart_art.getAllNodes().addNode()
    is_hidden = node.isHidden()

    if is_hidden:
        print("The node is hidden in the SmartArt data model.")

    presentation.save("CheckSmartArtHiddenProperty_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Organizasyon Şeması Düzenini Almak veya Ayarlamak

Organizasyon şeması düzeni kullanan SmartArt diyagramları için SmartArtNode.getOrganizationChartLayout ve SmartArtNode.setOrganizationChartLayout çocuk düğümlerin bir üst düğüm altında nasıl düzenleneceğini tanımlar. Örneğin, seçilen OrganizationChartLayoutType’a bağlı olarak çocuk düğümler sol, sağ ya da her iki taraftan sarkıtılabilir.

Aşağıdaki örnek bir organizasyon şeması oluşturur ve ilk düğümün düzenini OrganizationChartLayoutType LeftHanging değerine ayarlar.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import OrganizationChartLayoutType, Presentation, SaveFormat, SmartArtLayoutType

presentation = Presentation()
try:
    smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(10, 10, 400, 300, SmartArtLayoutType.OrganizationChart)

    root_node = smart_art.getNodes().get_Item(0)
    root_node.setOrganizationChartLayout(OrganizationChartLayoutType.LeftHanging)

    presentation.save("OrganizationChartLayout_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Resim Organizasyon Şeması Oluşturma

Resim organizasyon şeması, görüntü yer tutucuları içeren hiyerarşi diyagramları için tasarlanmış bir SmartArt düzenidir. SmartArt nesnesini bir slayta eklerken SmartArtLayoutType PictureOrganizationChart değerini kullanın.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SmartArtLayoutType

presentation = Presentation()
try:
    smart_art = presentation.getSlides().get_Item(0).getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.PictureOrganizationChart)

    presentation.save("PictureOrganizationChart_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

SSS

SmartArt RTL dilleri için aynalama veya ters çevirmeyi destekliyor mu?

Evet. SmartArt.setReversed yöntemi, seçilen SmartArt düzeni ters çevirmeyi desteklediğinde diyagram yönünü soldan sağa’dan sağa sola (right-to-left) değiştirir veya geri alır.

Biçimlendirmeyi koruyarak SmartArt’ı aynı slayta veya başka bir sunuma nasıl kopyalarım?

SmartArt şeklinin kopyasını oluşturabilirsiniz ShapeCollection.addClone ile veya SmartArt’ı içeren tüm slaytı klonlayabilirsiniz . Her iki yöntem de boyut, konum ve biçimlendirmeyi korur.

SmartArt’ı ön izleme veya web dışa aktarma için raster görüntüye nasıl render ederim?

Render the slide veya tüm sunumu PNG ya da JPEG olarak render edin. SmartArt slaytın bir parçası olarak render edilir.

Bir slaytta birden fazla SmartArt nesnesi varsa belirli bir SmartArt nesnesini nasıl bulabilirim?

SmartArt şekline ayırt edici bir Shape.getAlternativeText ya da Shape.getName değeri atayın, bu değeri BaseSlide.getShapes içinde arayın ve ardından eşleşen şeklin bir SmartArt olduğunu kontrol edin.