Python'da PowerPoint'e Şekil Ekleme

Python'da PowerPoint'e Şekil Ekleme

Aspose.Slides FOSS for Python, sunum slaytlarına AutoShapes, Tables, Connectors ve PictureFrames eklemeyi destekler. Tüm şekil türleri slide.shapes koleksiyonu aracılığıyla eklenir.

Adım Adım Kılavuz

Adım 1: Paketi Yükleyin

pip install aspose-slides-foss

Kurulumu doğrulayın:

import aspose.slides_foss as slides
print("Ready")

Adım 2: Sunum Oluştur

Her zaman Presentation‘yi bir bağlam yöneticisi olarak kullanın.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    # ... add shapes ...
    prs.save("output.pptx", SaveFormat.PPTX)

Adım 3: Bir AutoShape ekleyin

slide.shapes.add_auto_shape(shape_type, x, y, width, height) verilen konum ve boyutta (tümü puan cinsinden) bir şekil yerleştirir. Şekli seçmek için ShapeType sabitlerini kullanın.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    # Rectangle
    rect = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    rect.add_text_frame("Rectangle shape")

    # Ellipse
    ellipse = slide.shapes.add_auto_shape(ShapeType.ELLIPSE, 400, 50, 200, 100)
    ellipse.add_text_frame("Ellipse shape")

    prs.save("autoshapes.pptx", SaveFormat.PPTX)

Adım 4: Tablo Ekle

slide.shapes.add_table(x, y, col_widths, row_heights) belirtilen konumda bir tablo oluşturur. Sütun genişlikleri ve satır yükseklikleri nokta değerlerinin listeleridir.

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [150.0, 150.0, 150.0]
    row_heights = [40.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 200, col_widths, row_heights)

    # Set header row text
    headers = ["Product", "Units", "Revenue"]
    for col, text in enumerate(headers):
        table.rows[0][col].text_frame.text = text

    # Set data rows
    rows = [
        ["Widget A", "120", "$2,400"],
        ["Widget B", "85", "$1,700"],
    ]
    for row_idx, row_data in enumerate(rows):
        for col, text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = text

    prs.save("table.pptx", SaveFormat.PPTX)

Adım 5: Bağlayıcı Ekle

Bağlayıcılar iki şekli görsel olarak bağlar. Şekilleri önce oluşturun, ardından bir bağlayıcı ekleyin ve başlangıç ve bitiş bağlantı noktalarını ayarlayın.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 100, 150, 60)
    box1.add_text_frame("Start")

    box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 100, 150, 60)
    box2.add_text_frame("End")

    conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
    conn.start_shape_connected_to = box1
    conn.start_shape_connection_site_index = 3  # right side of box1
    conn.end_shape_connected_to = box2
    conn.end_shape_connection_site_index = 1    # left side of box2

    prs.save("connector.pptx", SaveFormat.PPTX)

Bağlantı noktası indeksleri bir dikdörtgen için 0–3 olarak numaralandırılır: üst=0, sol=1, alt=2, sağ=3.


Adım 6: Resim Çerçevesi Ekle

Bir resmi gömün ve slayta PictureFrame olarak ekleyin. Önce resim baytlarını okuyun, bunları sunumun resim koleksiyonuna ekleyin, ardından çerçeveyi oluşturun.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    with open("logo.png", "rb") as f:
        image_data = f.read()

    image = prs.images.add_image(image_data)

    slide = prs.slides[0]
    slide.shapes.add_picture_frame(
        ShapeType.RECTANGLE,  # bounding shape type
        50, 50,               # x, y in points
        200, 150,             # width, height in points
        image
    )

    prs.save("with-image.pptx", SaveFormat.PPTX)

Yaygın Sorunlar ve Çözümler

Şekil görünür slayt alanının dışında görünüyor

Slaytlar varsayılan olarak 720 × 540 puandır. x veya y değerleri bu sınırların dışına çıktığında şekil slayt dışına yerleştirilir. x < 720 ve y < 540 tutun ve x + width <= 720 ve y + height <= 540‘yi sağlayın.

AttributeError: 'NoneType' object has no attribute 'text_frame'

add_auto_shape() şekil nesnesini doğrudan döndürür. None görürseniz, dönüş değerini atmadığınızdan emin olun.

Tablo hücresi metni atamadan sonra boş

Doğru özellik .text_frame.text (hücrede doğrudan .text değil). Hücrelere table.rows[row_index][col_index].text_frame.text = "value" olarak erişin.


Sıkça Sorulan Sorular

Bir slayta kaç şekil ekleyebilirim?

Kütüphane tarafından uygulanan bir sınırlama yoktur. Pratik sınırlamalar dosya boyutuna ve hedef PPTX görüntüleyicinizin renderleme yeteneğine bağlıdır.

Bir şeklin konumunu ekledikten sonra değiştirebilir miyim?

Evet. add_auto_shape() tarafından döndürülen şekil nesnesi, ayarlayabileceğiniz x, y, width ve height özelliklerine sahiptir:

shape.x = 100
shape.y = 200
shape.width = 400
shape.height = 80

Şekil anahat (kenarlık) rengini ayarlayabilir miyim?

Evet, shape.line_format aracılığıyla:

from aspose.slides_foss.drawing import Color
shape.line_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)

Grafikler destekleniyor mu?

Hayır. Grafikler, SmartArt ve OLE nesneleri bu sürümde uygulanmamıştır ve NotImplementedError hatasını verir.


Ayrıca Bakınız

 Türkçe