كيفية تحميل العروض التقديمية في بايثون
تتيح لك 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 غير متاح في واجهة برمجة التطبيقات الحالية. اكتب البايتات إلى ملف مؤقت أولاً:
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)