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-fossKurulumu 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.