كيفية إنشاء عروض تقديمية في بايثون

كيفية إنشاء عروض تقديمية في بايثون

تتيح لك Aspose.Slides FOSS for Python إنشاء عروض PowerPoint بالكامل باستخدام Python دون الاعتماد على Microsoft Office. يوضح هذا الدليل كيفية إنشاء عرض تقديمي جديد، وإضافة الشرائح والأشكال، وتنسيق النص، وحفظ النتيجة.

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

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

قم بتثبيت Aspose.Slides FOSS من PyPI. يتطلب Python 3.10 أو أحدث.

pip install aspose-slides-foss

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

import aspose.slides_foss as slides
print("Aspose.Slides FOSS ready")

يتم تثبيت تبعية lxml تلقائيًا. لا توجد حزم نظام أخرى مطلوبة.


الخطوة 2: استيراد الوحدات المطلوبة

استورد الحزمة وSaveFormat enum اللازمة للحفظ.

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

جميع الثوابت من نوع الشكل موجودة في aspose.slides_foss.ShapeType. جميع أنواع التنسيق (FillType، NullableBool) موجودة أيضًا في aspose.slides_foss.


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

استخدم slides.Presentation() كمدير سياق. يبدأ عرض تقديمي جديد بشريحة فارغة واحدة.

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

with slides.Presentation() as prs:
    print(f"Slides in new presentation: {len(prs.slides)}")
    # work with prs inside this block
    prs.save("output.pptx", SaveFormat.PPTX)

مهم: يجب دائمًا فتح واستخدام Presentation داخل كتلة with. لا تقم بتخزين مرجع خارج بيان with؛ لن يتم تحرير الموارد بشكل صحيح.


الخطوة 4: الوصول إلى شريحة

الشريحة الأولى في الفهرس 0. العرض التقديمي الفارغ يحتوي على شريحة واحدة بالضبط.

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

with slides.Presentation() as prs:
    slide = prs.slides[0]  # zero-based index
    print(f"Slide at index 0: {slide}")
    prs.save("output.pptx", SaveFormat.PPTX)

الخطوة 5: إضافة شكل

استخدم slide.shapes.add_auto_shape() لإضافة AutoShape. المعلمات هي (shape_type, x, y, width, height) جميعها بالنقاط (نقطة واحدة = 1/72 بوصة؛ الشريحة القياسية هي 720 × 540 نقطة).

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 at (50, 50) with 400 wide and 120 tall
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 400, 120)

    # Attach a text frame
    shape.add_text_frame("Hello from Aspose.Slides FOSS!")

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

الخطوة 6: حفظ العرض التقديمي

استدعِ prs.save(path, SaveFormat.PPTX) قبل أن يخرج كتلة with. PPTX هو تنسيق الإخراج الوحيد المدعوم.

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

يتم كتابة الملف بطريقة ذرية؛ إذا حدث خطأ قبل هذا الاستدعاء، لن يتم إنشاء ملف إخراج.


مثال عملي كامل

البرنامج النصي التالي ينشئ عرض تقديمي من شريحتين مع شكل عنوان في الشريحة الأولى وجدول في الشريحة الثانية.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    # --- Slide 1: title shape ---
    slide1 = prs.slides[0]
    title = slide1.shapes.add_auto_shape(ShapeType.RECTANGLE, 40, 40, 640, 80)
    tf = title.add_text_frame("Q1 Results: Executive Summary")
    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

    # --- Slide 2: table ---
    prs.slides.add_empty_slide(prs.layout_slides[0])
    slide2 = prs.slides[1]
    table = slide2.shapes.add_table(40, 40, [200.0, 120.0, 120.0], [40.0, 40.0, 40.0])
    headers = ["Region", "Revenue", "Growth"]
    data = [
        ["North", "$1.2M", "+8%"],
        ["South", "$0.9M", "+4%"],
    ]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("q1-results.pptx", SaveFormat.PPTX)

print("Saved q1-results.pptx")

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

ResourceWarning: unclosed Presentation

أنت تقوم بإنشاء Presentation دون كتلة with. استخدم دائمًا:

with slides.Presentation() as prs:
    ...

AttributeError: __enter__

إذا رأيت هذا الخطأ، تحقق من أنك استوردت aspose.slides_foss (ليس aspose.slides). اسم الحزمة على PyPI هو aspose-slides-foss واستيراد وقت التشغيل هو aspose.slides_foss.

TypeError: SaveFormat.PPTX is not callable

SaveFormat.PPTX هو عضو في تعداد، وليس دالة. استخدمه كـ prs.save("file.pptx", SaveFormat.PPTX).


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

ما هو حجم الشريحة الافتراضي؟

إنشاء Presentation() جديد يُنشئ شرائح بالحجم القياسي 10 × 7.5 بوصة (720 × 540 نقطة). تغيير حجم الشريحة غير مدعوم بعد في هذا الإصدار.

هل يمكنني إضافة أكثر من شريحة واحدة؟

نعم. استدعِ prs.slides.add_empty_slide(prs.layout_slides[0]) لإضافة شريحة فارغة والوصول إليها عبر الفهرس:

prs.slides.add_empty_slide(prs.layout_slides[0])
slide2 = prs.slides[1]

هل يمكنني فتح ملف موجود وإضافة شرائح؟

نعم:

with slides.Presentation("existing.pptx") as prs:
    prs.slides.add_empty_slide(prs.layout_slides[0])
    prs.save("existing.pptx", SaveFormat.PPTX)

ما الصيغ التي يمكنني الحفظ إليها؟

يتم دعم SaveFormat.PPTX فقط. تصدير إلى PDF أو HTML أو SVG أو الصور غير متاح في هذا الإصدار.


انظر أيضًا

 العربية