عمليات العرض منخفضة الكود في بايثون عبر جافا
نظرة عامة
توفر واجهة برمجة التطبيقات Aspose.Slides for Python via Java فئات مساعد ثابتة للعمليات الشائعة على العروض التقديمية. تُغلف هذه المساعدات تدفقات نموذج الكائنات المستخدمة بشكل متكرر في طرق مركزة، بحيث يمكنك تحويل أو دمج الملفات، معالجة عناصر العرض، جمع الأشكال، وإزالة المحتوى غير المستخدم بكتابة أقل.
المساعدات منخفضة الشيفرة تكون مفيدة عندما ينطبق العملية على ملف أو عرض تقديمي كامل وتطابق سير العمل الافتراضي متطلباتك. استخدم نموذج الكائنات الكامل لـ Aspose.Slides عندما تحتاج إلى تحكم دقيق في الشرائح الفردية أو القوالب أو التخطيطات أو الأشكال أو إعدادات التصدير أو العلاقات بين عناصر العرض.
الجدول التالي يوضح المساعدات المتاحة:
| المساعد | استخدامه لـ |
|---|---|
| Convert | تحويل عرض تقديمي إلى صيغة أخرى عبر استدعاء مباشر من ملف إلى ملف. |
| Merger | دمج ملفات عرض تقديمي كاملة بنفس الصيغة. |
| ForEach | تنفيذ إجراء لكل شريحة أو شكل أو فقرة أو جزء نصي. |
| Collect | استرداد الأشكال من العرض التقديمي بالكامل للمعالجة المتكررة أو التحليل. |
| Compress | إزالة القوالب والتخطيطات غير المستخدمة وتقليل بيانات الخطوط المضمَّنة. |
تحويل عرض تقديمي
استخدم Convert.autoByExtension عندما يكون امتداد ملف الإخراج كافياً لاختيار صيغة التصدير. تقوم الطريقة بفتح العرض التقديمي المصدر، تحديد الصيغة المطلوبة من مسار الإخراج، وكتابة النتيجة.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Convert
Convert.autoByExtension("input.pptx", "output.pdf")
توفر فئة Convert أيضاً طرقاً مخصصة لإخراج PDF وSVG وJPEG وPNG وTIFF. استخدم نموذج الكائنات الكامل عندما تحتاج إلى فحص أو تعديل العرض قبل التصدير أو تكوين خيار تصدير غير متاح عبر المساعد المحدد. راجع Convert Presentation للحصول على سير عمل وخيارات خاصة بكل صيغة.
دمج العروض التقديمية
استخدم Merger.process لدمج ملفات عرض تقديمي كاملة باستدعاء واحد. يجب أن تكون العروض المدخلة بنفس صيغة الملف.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Merger
input_files = jpype.JArray(jpype.JString)(["part-1.pptx", "part-2.pptx"])
Merger.process(input_files, "merged.pptx")
المساعد مناسب عندما يجب إلحاق جميع الشرائح إلى نتيجة واحدة دون اختيار أو إعادة تعيين كل شريحة على حدة. استخدم نموذج الكائنات الكامل عندما تحتاج إلى دمج شرائح مختارة، تطبيق قالب أو تخطيط هدف، الحفاظ على الأقسام صراحةً، أو توحيد أحجام الشرائح المختلفة. راجع Merge Presentations لهذه السيناريوهات.
التنقل عبر عناصر العرض التقديمي
تستدعي فئة ForEach رد نداء لكل نوع مطلوب من عناصر العرض. إنها تُجنب حلقات التجميع المتداخلة وتكون مريحة للتفحص أو تغييرات التنسيق على مستوى العرض بأكمله.
المثال التالي يستخدم ForEach.slide، ForEach.shape، ForEach.paragraph وForEach.portion لتفحص العناصر المقابلة:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ForEach, Presentation
def print_slide(slide, index):
print(f"Slide {index}: {slide.getShapes().size()} shapes")
def print_shape(shape, slide, index):
print(f"Shape {index} on {slide.getClass().getSimpleName()}: {shape.getName()}")
def print_paragraph(paragraph, slide, index):
print(f"Paragraph {index} on {slide.getClass().getSimpleName()}: {paragraph.getText()}")
def print_portion(portion, paragraph, slide, index):
print(f"Portion {index} on {slide.getClass().getSimpleName()}: {portion.getText()}")
presentation = Presentation("input.pptx")
try:
ForEach.slide(presentation, print_slide)
ForEach.shape(presentation, print_shape)
ForEach.paragraph(presentation, print_paragraph)
ForEach.portion(presentation, print_portion)
finally:
presentation.dispose()
بشكل افتراضي، يتضمن استعراض الأشكال والنص على مستوى العرض الشرائح العادية والقوالب والتخطيطات. يمكن للتحميلات التي تتضمن معامل includeNotes أيضاً معالجة شرائح الملاحظات. استخدم حلقات التجميع المباشرة عندما يكون ترتيب الاستعراض أو الخروج المبكر أو الترشيح قبل استدعاء رد النداء أو التحكم التفصيلي بين الأب والابن أمرًا مهمًا.
جمع الأشكال
استخدم Collect.shapes عندما تحتاج إلى مجموعة من جميع الأشكال في عرض تقديمي بدلاً من رد نداء لكل شكل. هذا مفيد عندما سيتم تصفية المجموعة نفسها أو عدها أو معالجتها أكثر من مرة.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Collect, Presentation
presentation = Presentation("input.pptx")
try:
shapes = Collect.shapes(presentation)
for shape in shapes:
print(f"{shape.getName()}: {shape.getClass().getSimpleName()}")
finally:
presentation.dispose()
استخدم ForEach.shape بدلاً من ذلك عندما يمكن معالجة كل شكل فوراً ولا تحتاج إلى الاحتفاظ بالنتيجة المجمعة.
ضغط محتوى العرض التقديمي
يمكن لفئة Compress إزالة العناصر الهيكلية غير المستخدمة وتقليل بيانات الخطوط المضمَّنة:
- removeUnusedLayoutSlides يزيل شرائح التخطيط التي لا تشير إليها أي شريحة عادية.
- removeUnusedMasterSlides يزيل القوالب التي لم تعد مستخدمة.
- compressEmbeddedFonts يزيل الأحرف غير المستخدمة من الخطوط المضمَّنة.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Compress, Presentation, SaveFormat
presentation = Presentation("input.pptx")
try:
Compress.removeUnusedLayoutSlides(presentation)
Compress.removeUnusedMasterSlides(presentation)
Compress.compressEmbeddedFonts(presentation)
presentation.save("compressed.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
أزل التخطيطات غير المستخدمة قبل القوالب غير المستخدمة بحيث يمكن إزالة القالب الذي يصبح غير مرجع بعد تنظيف التخطيطات. احفظ العرض المُحسّن إلى ملف جديد إذا قد تحتاج القوالب أو التخطيطات الأصلية أو بيانات الخط المضمَّن الكاملة لاحقًا. لمزيد من التفاصيل، راجع Slide Master وEmbedded Font.
الأسئلة المتكررة
متى يجب استخدام واجهة برمجة التطبيقات منخفضة الشيفرة بدلاً من نموذج الكائنات الكامل؟
استخدم المساعدات منخفضة الشيفرة عندما تنطبق عملية قياسية على ملف أو عرض تقديمي كامل ولا تتطلب تحكمًا تفصيليًا في العناصر الفردية. استخدم نموذج الكائنات الكامل عندما تحتاج إلى اختيار شرائح محددة، التحكم في علاقات القوالب والتخطيطات، فحص الحالة الوسيطة، أو تكوين سلوك لا ي expose المساعد.
هل يمكن لـ Merger دمج عروض تقديمية بصيغ ملفات مختلفة؟
لا. يتطلب Merger.process أن تكون العروض المدخلة بنفس الصيغة. حوّل الملفات المدخلة إلى صيغة موحدة أولاً، على سبيل المثال باستخدام Convert.autoByExtension، ثم دمج الملفات المحوَّلة.
هل يعالج ForEach القوالب والتخطيطات وشرائح الملاحظات؟
ForEach.slide يتنقل عبر الشرائح العادية للعرض. تشمل عمليات ForEach.shape، ForEach.paragraph وForEach.portion القوالب والتخطيطات افتراضيًا. استخدم التحميلات التي تحتوي على includeNotes مضبوطة على True لتضمين شرائح الملاحظات.
ما الفرق بين ForEach.shape و Collect.shapes؟
استخدم ForEach.shape لمعالجة كل شكل فورًا عبر رد نداء. استخدم Collect.shapes عندما تحتاج إلى نتيجة قابلة للتكرار يمكن الاحتفاظ بها، تصفيتها، عدّها أو تنقُّل خلالها متعددة المرات.
هل يجعل Compress دائمًا ملف العرض أصغر؟
ليس بالضرورة. النتيجة تعتمد على ما إذا كان العرض يحتوي على تخطيطات غير مستخدمة أو قوالب غير مستخدمة أو خطوط مضمَّنة بأحرف غير مستخدمة. إذا لم يكن أي من هذه العناصر موجودًا، قد لا تقلل عمليات Compress حجم الملف.
هل تُحفظ التغييرات التي تُجريها ForEach أو Compress تلقائيًا؟
لا. تعمل هذه المساعدات على كائن Presentation المحمَّل في الذاكرة. بعد تعديل العناصر في رد نداء ForEach أو تشغيل Compress، استدعِ Presentation.save لكتابة النتيجة.