إدارة انتقالات الشرائح في العروض التقديمية باستخدام Python

نظرة عامة

تتحكم انتقالات الشرائح في طريقة ظهور الشرائح أثناء عرض الشرائح. باستخدام Aspose.Slides for Python عبر .NET، يمكنك اختيار تأثير انتقال لكل شريحة، وتكوين التقدم بالنقر بالفأرة أو المؤقت، وضبط الخيارات الخاصة بالتأثير. تستخدم هذه المقالة أمثلة بايثون لتطبيق الانتقالات، وتحديد مدد الانتقال الدقيقة، وإدارة توقيت الشرائح، وإنشاء انتقال Morph بين شريحتين. توضح الأمثلة أيضًا كيفية حفظ الإعدادات في ملف PPTX.

إضافة انتقال شريحة

لتطبيق انتقال، قم بتحميل عرض تقديمي باستخدام الفئة Presentation و الوصول إلى خاصية slide_show_transition للشريحة. اضبط type على قيمة من تعداد TransitionType ، ثم احفظ العرض التقديمي.

التطبيق التالي يطبق انتقال Circle على الشريحة الأولى وانتقال Comb على الشريحة الثانية. استخدم ملف input.pptx يحتوي على شريحتين على الأقل.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    if len(presentation.slides) >= 2:
        presentation.slides[0].slide_show_transition.type = slides.slideshow.TransitionType.CIRCLE
        presentation.slides[1].slide_show_transition.type = slides.slideshow.TransitionType.COMB

        presentation.save("slide-transitions.pptx", slides.export.SaveFormat.PPTX)
    else:
        print("The input presentation must contain at least two slides.")

إضافة انتقال شريحة متقدم

يمكنك تكوين مدة بقاء الشريحة على الشاشة وما إذا كان النقر بالفأرة يتقدم بالعرض. الخصائص التالية تتحكم في هذا السلوك:

  • advance_on_click يسمح للمستخدم بالتقدم بالنقر بالفأرة.
  • advance_after يفعّل التقدم التلقائي.
  • advance_after_time يحدد التأخير قبل التقدم التلقائي، بالمللي ثانية.

فعّل كل من النقر والوقت للسماح للمستخدم بالتقدم بالنقر أو الانتظار للمؤقت. لاستخدام المؤقت فقط، اضبط advance_on_click على False. يتحكم التأخير في وقت تقدم العرض، وليس في مدة تأثير الانتقال البصري.

هذا المثال يعيّن تأثيرات مختلفة للشرائح الثلاث الأولى ويفعل التقدم التلقائي بعد 3 و5 و7 ثوانٍ على التوالي. يمكن للنقرات أيضًا تقديم هذه الشرائح. استخدم ملف input.pptx يحتوي على ثلاث شرائح على الأقل.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    if len(presentation.slides) >= 3:
        first_transition = presentation.slides[0].slide_show_transition
        first_transition.type = slides.slideshow.TransitionType.CIRCLE
        first_transition.advance_on_click = True
        first_transition.advance_after = True
        first_transition.advance_after_time = 3000

        second_transition = presentation.slides[1].slide_show_transition
        second_transition.type = slides.slideshow.TransitionType.COMB
        second_transition.advance_on_click = True
        second_transition.advance_after = True
        second_transition.advance_after_time = 5000

        third_transition = presentation.slides[2].slide_show_transition
        third_transition.type = slides.slideshow.TransitionType.ZOOM
        third_transition.advance_on_click = True
        third_transition.advance_after = True
        third_transition.advance_after_time = 7000

        presentation.save("advanced-transitions.pptx", slides.export.SaveFormat.PPTX)
    else:
        print("The input presentation must contain at least three slides.")

للتحقق مما إذا كان التقدم المؤقت مفعلًا، اقرأ advance_after. التخزين المتأخر لا يشير وحده إلى تفعيل المؤقت.

المثال التالي يفتح الملف المحفوظ أعلاه، يُبلغ عن كل مؤقت مفعل، ويعطل التقدم التلقائي للشرائح التي لديها تأخير أكبر من ثانيتين. يُفعّل النقرات لتلك الشرائح ويحفظ الإعدادات المحدثة.

import aspose.slides as slides

with slides.Presentation("advanced-transitions.pptx") as presentation:
    for slide in presentation.slides:
        transition = slide.slide_show_transition

        if transition.advance_after:
            print(f"Slide {slide.slide_number}: advance after {transition.advance_after_time} ms.")

            if transition.advance_after_time > 2000:
                transition.advance_after = False
                transition.advance_on_click = True

    presentation.save("adjusted-transitions.pptx", slides.export.SaveFormat.PPTX)

التحكم الدقيق في توقيت الانتقال

استخدم duration لتحديد الطول الدقيق لتأثير الانتقال بالمللي ثانية. خاصية slide_show_transition للشفرة تكشف عن هذه الإعدادات عبر SlideShowTransition:

الخاصية الغرض
duration يحدد مدة تأثير الانتقال نفسه، بالمللي ثانية.
advance_after_time يحدد التأخير قبل التقدم التلقائي للشفرة، بالمللي ثانية. فعل advance_after لتفعيل هذا المؤقت.
speed يختار فئة سرعة معرفة مسبقًا من TransitionSpeed: SLOW، MEDIUM، أو FAST. تُستَخدم عندما لا تُحدَّد مدة دقيقة.

duration يتحكم فقط في تأثير الانتقال؛ لا يحدد مدة بقاء الشريحة مرئية. اضبط تأخير التقدم التلقائي منفصلًا. عندما لا تُحدَّد مدة صريحة، يحدد Aspose.Slides مدة التأثير بناءً على نوع الانتقال وspeed.

تطبيق نفس المدة على كل شريحة

للحفاظ على وتيرة ثابتة، طبّق نفس التأثير والمدة الدقيقة على كل شريحة. هذا المثال يحمل input.pptx، يختار Fade من TransitionType، ويعطي كل انتقال مدة 750 مللي ثانية. يفعّل التقدم التلقائي بعد 5 000 مللي ثانية ويعطّل التقدم بالنقر، ثم يحفظ النتيجة كملف PPTX.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    for slide in presentation.slides:
        transition = slide.slide_show_transition
        transition.type = slides.slideshow.TransitionType.FADE
        transition.duration = 750

        # تكوين التقدم التلقائي بشكل مستقل عن مدة التأثير.
        transition.advance_after = True
        transition.advance_after_time = 5000
        transition.advance_on_click = False

    presentation.save("precise-transitions.pptx", slides.export.SaveFormat.PPTX)

تعيين مدد مختلفة للشرائح الفردية

يمكن للشرائح المختلفة أن تستخدم مدد تأثير مختلفة. على سبيل المثال، استخدم انتقالًا قصيرًا لشريحة العنوان وانتقالًا أطول لمقدمة قسم. هذا المثال يحدد 500 مللي ثانية للشفرة الأولى و1 200 مللي ثانية للشفرة الثانية. استخدم ملف input.pptx يحتوي على شريحتين على الأقل.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    if len(presentation.slides) >= 2:
        first_transition = presentation.slides[0].slide_show_transition
        first_transition.type = slides.slideshow.TransitionType.FADE
        first_transition.duration = 500

        second_transition = presentation.slides[1].slide_show_transition
        second_transition.type = slides.slideshow.TransitionType.PUSH
        second_transition.duration = 1200

        presentation.save("individual-transition-durations.pptx", slides.export.SaveFormat.PPTX)
    else:
        print("The input presentation must contain at least two slides.")

تنسيق الانتقالات مع المخرجات المتحركة

عند التحضير لـ animated GIF، HTML5 presentation، أو video، اضبط مدد الانتقال الدقيقة قبل التصدير لتطابق الإيقاع المرغوب. على سبيل المثال، استخدم تلاشي 600 مللي ثانية بين المشاهد، وعدّل تأخير تقدم كل شريحة بشكل منفصل لإتاحة الوقت للتعليق الصوتي أو المحتوى.

بالنسبة للـ GIF والفيديو، نسّق معدل الإطارات للمخرجات مع مدة التأثير: 600 مللي ثانية تعادل 18 إطارًا عند 30 إطارًا في الثانية. في HTML5، فعّل الانتقالات المتحركة في إعدادات التصدير. تحقق من التأثيرات وخيارات التوقيت المدعومة للصيغة المختارة، ومعاينة النتيجة لتأكيد التزامن.

قراءة مدة انتقال موجودة

اقرأ duration قبل تعديل الانتقال لتحديد ما إذا كانت قيمة صريحة مخزنة. القيمة -1 تعني عدم وجود مدة صريحة؛ القيمة غير السالبة تحدد المدة المخزنة بالمللي ثانية. القيمة غير المضبوطة ليست مدة التشغيل المحسوبة: يستخدم Aspose.Slides نوع الانتقال وspeed لتحديد تلك المدة. قد يهيئ ضبط نوع الانتقال مدةً، لذا افحص الإعدادات الأصلية أولًا.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    for slide in presentation.slides:
        transition = slide.slide_show_transition
        duration = transition.duration

        if duration >= 0:
            print(f"Slide {slide.slide_number}: stored transition duration is {duration} ms.")
        else:
            print(f"Slide {slide.slide_number}: no explicit duration; timing depends on {transition.type} and {transition.speed}.")

انتقال Morph

يُحرك انتقال Morph التغييرات بين الكائنات على الشرائح المتتالية. لإنشاء تأثير Morph بسيط، استنسخ شريحة، حرك أو غيّر حجم كائن على النسخة، وطبّق انتقال Morph على الشريحة الثانية. يمنح ذلك الكائنات المطابقة للانتقال القدرة على التحرك بين حالتها الأصلية والمعدلة.

المثال التالي ينشئ شريحة بها مستطيل نص، ينسخ الشريحة، ويغيّر موقع وحجم المستطيل على النسخة. ثم يختار Morph من تعداد TransitionType للشفرة الثانية. افتح الملف المحفوظ في عارض عروض يدعم Morph لرؤية التأثير أثناء عرض الشرائح.

import aspose.slides as slides

with slides.Presentation() as presentation:
    first_slide = presentation.slides[0]
    rectangle = first_slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 400, 100)
    rectangle.text_frame.text = "Morph transition"

    second_slide = presentation.slides.add_clone(first_slide)
    moved_rectangle = second_slide.shapes[0]
    moved_rectangle.x += 100
    moved_rectangle.y += 50
    moved_rectangle.width -= 200
    moved_rectangle.height -= 10

    second_slide.slide_show_transition.type = slides.slideshow.TransitionType.MORPH

    presentation.save("morph-transition.pptx", slides.export.SaveFormat.PPTX)

أنواع انتقال Morph

تعداد TransitionMorphType يتحكم في كيفية مطابقة Morph وتحريك المحتوى:

  • BY_OBJECT يعالج كل شكل ككائن كامل.
  • BY_WORD يحرك النص بمطابقة الكلمات إن أمكن.
  • BY_CHAR يحرك النص بمطابقة الأحرف إن أمكن.

اضبط type للانتقال إلى Morph قبل الوصول إلى value. ثم توفر القيمة كائن MorphTransition، خاصية morph_type التي تحدد وضع المطابقة.

هذا المثال يفتح العرض التقديمي الذي تم إنشاؤه في القسم السابق ويضبط الشريحة الثانية لتستخدم تحريك Morph بناءً على الكلمات.

import aspose.slides as slides

with slides.Presentation("morph-transition.pptx") as presentation:
    if len(presentation.slides) >= 2:
        transition = presentation.slides[1].slide_show_transition
        transition.type = slides.slideshow.TransitionType.MORPH
        morph_transition = transition.value

        if isinstance(morph_transition, slides.slideshow.MorphTransition):
            morph_transition.morph_type = slides.slideshow.TransitionMorphType.BY_WORD
            presentation.save("morph-by-word.pptx", slides.export.SaveFormat.PPTX)
        else:
            print("Morph transition options are unavailable.")
    else:
        print("The input presentation must contain at least two slides.")

تعيين تأثيرات الانتقال

بعض الانتقالات تكشف عن خيارات إضافية، مثل الاتجاه أو ما إذا كان يبدأ التأثير من شاشة سوداء. تعتمد الخيارات المتاحة على type الانتقال المختار. اضبط النوع أولاً، ثم استخدم كائن الانتقال المناسب من value.

المثال التالي يطبّق انتقال Cut على الشريحة الأولى من input.pptx. يضبط from_black عبر OptionalBlackTransition لجعل الانتقال يبدأ من شاشة سوداء.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    transition = presentation.slides[0].slide_show_transition
    transition.type = slides.slideshow.TransitionType.CUT
    cut_transition = transition.value

    if isinstance(cut_transition, slides.slideshow.OptionalBlackTransition):
        cut_transition.from_black = True
        presentation.save("cut-from-black.pptx", slides.export.SaveFormat.PPTX)
    else:
        print("Cut transition options are unavailable.")

FAQ

هل يمكنني التحكم في سرعة تشغيل انتقال الشريحة؟

نعم. يفضَّل استخدام duration عندما تحتاج إلى مدة تأثير دقيقة بالمللي ثانية. استخدم speed عندما تكون فئة TransitionSpeed مسبقة التعريف—SLOW، MEDIUM، أو FAST—كافية ولا توجد مدة صريحة محددة. تتحكم هذه الإعدادات في تأثير الانتقال بشكل مستقل عن تأخير التقدم التلقائي.

هل يمكن إرفاق صوت بالانتقال وجعله يتكرر؟

نعم. عيّن صوتًا مضمنًا إلى sound، اضبط sound_mode إلى START_SOUND من تعداد TransitionSoundMode، وفعل sound_loop. سيستمر الصوت في التكرار حتى حدث صوتي التالي في عرض الشرائح.

ما هو أسرع طريقة لتطبيق نفس الانتقال على جميع الشرائح؟

تكرار عبر مجموعة slides للعرض التقديمي وضبط type لكل شريحة إلى نفس القيمة. اضبط أي خيارات توقيت وتأثير داخل نفس الحلقة للحفاظ على سلوك موحد عبر الشرائح.

كيف يمكنني التحقق من الانتقال الحالي المطبق على شريحة؟

اقرأ خاصية type من slide_show_transition للشفرة. ستُرجع قيمة من تعداد TransitionType، حيث يعني NONE عدم تطبيق أي تأثير انتقال.