چگونه ارائه‌ها را در پایتون ایجاد کنیم

چگونه ارائه‌ها را در پایتون ایجاد کنیم

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 به‌صورت خودکار نصب می‌شود. هیچ بسته سیستمی دیگری مورد نیاز نیست.


مرحله ۲: وارد کردن ماژول‌های مورد نیاز

پکیج و enum SaveFormat مورد نیاز برای ذخیره‌سازی را وارد کنید.

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 هستند.


مرحله ۳: ایجاد یک ارائه

از 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 خودداری کنید؛ در غیر این صورت منابع به‌درستی آزاد نخواهند شد.


مرحله ۴: دسترسی به یک اسلاید

اسلاید اول در ایندکس 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 نقطه = 1/72 اینچ؛ اسلاید استاندارد 720 × 540 pt) می‌باشند.

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: ذخیرهٔ ارائه

قبل از خروج بلوک with، prs.save(path, SaveFormat.PPTX) را فراخوانی کنید. 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 یک عضو enum است، نه یک تابع. از آن به صورت prs.save("file.pptx", SaveFormat.PPTX) استفاده کنید.


سوالات متداول

اندازه پیش‌فرض اسلاید چیست؟

یک Presentation() جدید اسلایدها را با اندازه استاندارد ۱۰ × ۷٫۵ اینچ (۷۲۰ × ۵۴۰ نقطه) ایجاد می‌کند. تغییر اندازه اسلاید در این نسخه هنوز پشتیبانی نمی‌شود.

آیا می‌توانم بیش از یک اسلاید اضافه کنم؟

بله. برای افزودن یک اسلاید خالی 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 یا تصاویر در این نسخه موجود نیست.


همچنین ببینید

 فارسی