איך לשמור מצגות ב-Python

איך לשמור מצגות ב-Python

Aspose.Slides FOSS for Python saves presentations exclusively to .pptx format באמצעות prs.save(path, SaveFormat.PPTX).מדריך זה מכסה את תבנית ה‑save הנכונה, שמירה לנתיב שונה, ושגיאות נפוצות הקשורות ל‑save.

מדריך שלב אחר שלב

שלב 1: התקנת החבילה

pip install aspose-slides-foss

שלב 2: פתח או צור מצגת

תמיד השתמש ב‑context manager. קריאת ה‑save חייבת להתרחש בתוך ה‑ 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)

שלב 3: Save בסוף ה‑ 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)

שלב 4: שמור לנתיב שונה

העבר נתיב פלט שונה כדי ליצור קובץ חדש מבלי לשנות את המקורי:

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

ה template.pptx file אינו משתנה; customized.pptx נוצר (או נכתב מחדש אם הוא כבר קיים).


שלב 5: אמת את הפלט

לאחר ה‑ with בלוק יוצא, ה‑file מושלם וסגור. בדוק שהוא קיים:

import os
from pathlib import Path

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

פורמט שמירה נתמך

FormatEnum Valueנתמך
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 שהיא לא מזהה.


ראה גם

 עברית