كيفية إضافة أشكال إلى PowerPoint باستخدام Python

كيفية إضافة أشكال إلى PowerPoint باستخدام Python

يدعم Aspose.Slides FOSS for Python إضافة AutoShapes وTables وConnectors وPictureFrames إلى شرائح العرض التقديمي. يتم إضافة جميع أنواع الأشكال من خلال مجموعة slide.shapes.

دليل خطوة بخطوة

الخطوة 1: تثبيت الحزمة

pip install aspose-slides-foss

تحقق من التثبيت:

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

الخطوة 2: إنشاء عرض تقديمي

استخدم دائمًا Presentation كمدير سياق.

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)

الخطوة 3: إضافة AutoShape

slide.shapes.add_auto_shape(shape_type, x, y, width, height) يضع شكلاً في الموضع والحجم المحددين (جميعها بالنقاط). استخدم ثوابت ShapeType لاختيار الشكل.

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)

الخطوة 4: إضافة جدول

slide.shapes.add_table(x, y, col_widths, row_heights) ينشئ جدولًا في الموضع المحدد. عرض الأعمدة وارتفاعات الصفوف هي قوائم من قيم النقاط.

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)

الخطوة 5: إضافة موصل

الموصلات تربط شكلين بصريًا. أنشئ الأشكال أولاً، ثم أضف موصلاً وحدد نقاط الاتصال البداية والنهاية.

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)

يتم ترقيم مؤشرات مواقع الاتصال من 0–3 للمستطيل: الأعلى=0، اليسار=1، الأسفل=2، اليمين=3.


الخطوة 6: إضافة إطار صورة

قم بدمج صورة وأضفها إلى الشريحة كـ PictureFrame. اقرأ بايتات الصورة أولاً، أضفها إلى مجموعة صور العرض التقديمي، ثم أنشئ الإطار.

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)

المشكلات الشائعة والحلول

الشكل يظهر خارج منطقة الشريحة المرئية

الشرائح بحجم 720 × 540 نقطة بشكل افتراضي. القيم x أو y التي تتجاوز هذه الحدود تضع الشكل خارج الشريحة. احتفظ بـ x < 720 و y < 540، وتأكد من x + width <= 720 و y + height <= 540.

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

add_auto_shape() تُعيد كائن الشكل مباشرةً. إذا رأيت None، تحقق من أنك لا تتجاهل قيمة الإرجاع.

نص خلية الجدول فارغ بعد التعيين

الخاصية الصحيحة هي .text_frame.text (ليس .text مباشرة على الخلية). الوصول إلى الخلايا كـ table.rows[row_index][col_index].text_frame.text = "value".


الأسئلة المتكررة

كم عدد الأشكال التي يمكنني إضافتها إلى شريحة؟

لا يوجد حد مفروض من المكتبة. تعتمد الحدود العملية على حجم الملف وقدرة عارض PPTX المستهدف على العرض.

هل يمكنني تغيير موضع الشكل بعد إضافته؟

نعم. كائن الشكل الذي تم إرجاعه بواسطة add_auto_shape() يحتوي على خصائص x وy وwidth وheight التي يمكنك تعيينها:

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

هل يمكنني تعيين لون مخطط الشكل (الحد)؟

نعم، عبر shape.line_format:

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

هل تدعم المخططات؟

لا. المخططات، SmartArt، وكائنات OLE غير مُنفذة في هذا الإصدار وتؤدي إلى NotImplementedError.


انظر أيضًا

 العربية