כיצד לטעון מצגות ב-Python

כיצד לטעון מצגות ב-Python

Aspose.Slides FOSS for Python מאפשר לך לפתוח כל קובץ .pptx, לבדוק את תוכנו, ולשמור אותו חזרה ל‑PPTX או לחלץ נתונים ממנו. מדריך זה מכסה פתיחת קובץ, איטרציה על השקופיות, קריאת טקסט של צורה, והחזרה של השמירה.

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

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

pip install aspose-slides-foss

שלב 2: פתח מצגת קיימת

העבר את נתיב הקובץ לslides.Presentation(). השתמש במנהל ההקשר כדי להבטיח ניקוי.

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

with slides.Presentation("input.pptx") as prs:
    print(f"Slide count: {len(prs.slides)}")
    prs.save("output.pptx", SaveFormat.PPTX)

חלקי XML לא ידועים בקובץ המקור נשמרים במדויק: הספרייה לעולם אינה מסירה תוכן שהיא עדיין לא מבינה.


שלב 3: בדיקת שקופיות

חזור על כל השקופיות והדפס את האינדקס שלהן:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for i, slide in enumerate(prs.slides):
        shape_count = len(slide.shapes)
        print(f"Slide {i}: {shape_count} shapes")

שלב 4: קריאת טקסט הצורה

חזור על הצורות וקרא טקסט מצורות שיש להן TextFrame:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    for slide in prs.slides:
        for shape in slide.shapes:
            if hasattr(shape, "text_frame") and shape.text_frame is not None:
                text = shape.text_frame.text
                if text.strip():
                    print(f"  Shape text: {text!r}")

שלב 5: קריאת מאפייני המסמך

גש למאפייני המסמך הליבתיים מprs.document_properties:

import aspose.slides_foss as slides

with slides.Presentation("deck.pptx") as prs:
    props = prs.document_properties
    print(f"Title:   {props.title}")
    print(f"Author:  {props.author}")
    print(f"Subject: {props.subject}")

שלב 6: שמירה במעגל

לאחר בדיקה או שינוי של המצגת, שמור אותה חזרה ל‑PPTX:

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

שמירה בנתיב שונה יוצרת קובץ חדש. שמירה באותו נתיב מחליפה את המקורי.


בעיות נפוצות ותיקונים

FileNotFoundError

בדוק שהנתיב לקובץ .pptx נכון ביחס לתיקיית העבודה. השתמש ב‑pathlib.Path לבנייה חזקה של נתיב:

from pathlib import Path
path = Path(__file__).parent / "assets" / "deck.pptx"
with slides.Presentation(str(path)) as prs:
    ...

Exception: File format is not supported

הספרייה תומכת ב.pptx (Office Open XML) בלבד. קבצים ישנים של .ppt (PowerPoint בינארי 97–2003) אינם נתמכים.

לצורות אין תכונת text_frame

לחלק מהצורות (Connectors, PictureFrames, GroupShapes) אין text_frame. יש להשתמש ב‑hasattr(shape, "text_frame") and shape.text_frame is not None לפני גישה לטקסט.


שאלות נפוצות

האם הטעינה משמרת את כל התוכן המקורי?

כן. חלקי XML לא ידועים נשמרים במדויק בעת שמירה במעגל. הספרייה לא תסיר שום תוכן XML שהיא עדיין לא מבינה.

האם אני יכול לטעון קובץ PPTX המוגן בסיסמה?

מצגות המוגנות בסיסמה (מוצפנות) אינן נתמכות בגרסה זו.

האם ניתן לחלץ תמונות משובצות?

גש לאוסף התמונות: prs.images מחזיר את הImageCollection. לכל תמונה יש נכס content_type ונכס bytes לקריאת נתוני התמונה הגולמיים.

האם טעינה מזרם בזיכרון נתמכת?

טעינה ישירה מio.BytesIO אינה חשופה ב‑API הנוכחי. כתוב את הבייטים לקובץ זמני תחילה:

import tempfile, os
import aspose.slides_foss as slides

with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as tmp:
    tmp.write(pptx_bytes)
    tmp_path = tmp.name

try:
    with slides.Presentation(tmp_path) as prs:
        print(f"Slides: {len(prs.slides)}")
finally:
    os.unlink(tmp_path)

ראה גם

 עברית