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

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

Aspose.Slides FOSS for Python ارائه‌ها را به‌طور انحصاری به فرمت .pptx با استفاده از prs.save(path, SaveFormat.PPTX) ذخیره می‌کند. این راهنما الگوی صحیح ذخیره‌سازی، ذخیره در مسیر متفاوت و خطاهای رایج مرتبط با ذخیره‌سازی را پوشش می‌دهد.

راهنمای گام به گام

مرحله 1: نصب بسته

pip install aspose-slides-foss

مرحله ۲: باز کردن یا ایجاد یک ارائه

همیشه از مدیر زمینه استفاده کنید. فراخوانی ذخیره باید داخل بلوک with انجام شود.

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

# Create new
with slides.Presentation() as prs:
    prs.save("new.pptx", SaveFormat.PPTX)

# Open existing
with slides.Presentation("input.pptx") as prs:
    prs.save("output.pptx", SaveFormat.PPTX)

مرحله ۳: ذخیره در انتهای with بلوک

دستور save() را به عنوان آخرین عبارت داخل بلوک with قرار دهید، پس از اینکه تمام تغییرات انجام شد.

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]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 300, 100)
    shape.add_text_frame("Hello, World!")
    prs.save("output.pptx", SaveFormat.PPTX)

مرحله ۴: ذخیره در مسیر متفاوت

یک مسیر خروجی متفاوت را پاس دهید تا یک فایل جدید ایجاد کنید بدون اینکه فایل اصلی را تغییر دهید:

with slides.Presentation("template.pptx") as prs:
    # modify ...
    prs.save("customized.pptx", SaveFormat.PPTX)

فایل template.pptx تغییر نمی‌کند؛ customized.pptx ایجاد می‌شود (یا اگر از قبل وجود داشته باشد بازنویسی می‌شود).


مرحله 5: خروجی را تأیید کنید

پس از خروج بلوک with، فایل کامل و بسته می‌شود. وجود آن را بررسی کنید:

import os
from pathlib import Path

output = Path("output.pptx")
print(f"Saved: {output.exists()}, size: {output.stat().st_size} bytes")

قالب ذخیره‌سازی پشتیبانی‌شده

قالبمقدار Enumپشتیبانی
PPTX (Office Open XML)SaveFormat.PPTXبله
PDFN/Aخیر
HTMLN/Aخیر
SVGN/Aخیر
PNG / JPEGN/Aخیر
ODP (OpenDocument)N/Aخیر

فقط PPTX پشتیبانی می‌شود. تلاش برای ذخیره در هر فرمت دیگری باعث بروز NotImplementedError یا خطای فرمت پشتیبانی‌نشده می‌شود.


مشکلات رایج و راه‌حل‌ها

PermissionError: [Errno 13] Permission denied

فایل خروجی در برنامه دیگری باز است (مثلاً PowerPoint فایل را باز دارد). قبل از ذخیره‌سازی، فایل را در برنامه‌های دیگر ببندید.

فایل ایجاد می‌شود اما خالی یا خراب به نظر می‌رسد

اطمینان حاصل کنید که prs.save() داخل بلوک with فراخوانی شود، نه پس از آن. پس از خروج از بلوک with، شیء Presentation از بین می‌رود و فراخوانی‌های بعدی به‌صورت ساکت شکست می‌خورند یا خطا ایجاد می‌کنند.

NotImplementedError هنگام ذخیره‌سازی

این هنگام تلاش برای ذخیره با فرمت دیگری به جز PPTX یا هنگام استفاده از ویژگی پشتیبانی‌نشده (مانند نمودارها یا انیمیشن‌ها) در زمان ذخیره رخ می‌دهد.


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

آیا می‌توانم در همان فایلی که باز کردم ذخیره کنم؟

بله. ذخیره‌سازی در همان مسیر، فایل اصلی را بازنویسی می‌کند:

with slides.Presentation("deck.pptx") as prs:
    # modify ...
    prs.save("deck.pptx", SaveFormat.PPTX)  # overwrites original

آیا می‌توانم به‌جای فایل، به یک بافر بایت ذخیره کنم؟

بله. شی io.BytesIO را مستقیماً به prs.save() پاس بدهید — آن هر مقصد BinaryIO را می‌پذیرد:

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

buf = io.BytesIO()
with slides.Presentation() as prs:
    # ... modify presentation ...
    prs.save(buf, SaveFormat.PPTX)

pptx_bytes = buf.getvalue()

آیا ذخیره‌سازی محتوایی که من تغییر نداده‌ام را حفظ می‌کند؟

بله. قسمت‌های ناشناخته XML از فایل اصلی به‌صورت دقیق حفظ می‌شوند. کتابخانه فقط بخش‌های مدل سند را که می‌فهمد سریال‌سازی می‌کند و هر XMLی که شناسایی نمی‌کند عبور می‌دهد.


موارد مرتبط

 فارسی