Zarządzaj przejściami slajdów w prezentacjach przy użyciu Pythona

Przegląd

Przejścia slajdów kontrolują sposób wyświetlania slajdów podczas pokazu slajdów. Za pomocą Aspose.Slides for Python via .NET możesz wybrać efekt przejścia dla każdego slajdu, skonfigurować przechodzenie po kliknięciu myszy lub timerem oraz dostosować opcje specyficzne dla efektu. Ten artykuł wykorzystuje przykłady w Pythonie do zastosowania przejść, ustawiania dokładnych czasów trwania przejść, zarządzania czasem wyświetlania slajdu i tworzenia przejścia Morph między dwoma slajdami. Przykłady pokazują również, jak zapisać ustawienia do pliku PPTX.

Dodaj przejście slajdu

Aby zastosować przejście, załaduj prezentację przy użyciu klasy Presentation i uzyskaj dostęp do właściwości slide_show_transition slajdu. Ustaw jej type na wartość z wyliczenia TransitionType, a następnie zapisz prezentację.

Poniższy przykład stosuje przejście Circle do pierwszego slajdu i przejście Comb do drugiego. Użyj pliku input.pptx zawierającego przynajmniej dwa slajdy.

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.")

Dodaj zaawansowane przejście slajdu

Możesz skonfigurować, jak długo slajd pozostaje na ekranie oraz czy kliknięcie myszy przechodzi dalej w pokazie slajdów. Następujące właściwości kontrolują to zachowanie:

Włącz zarówno przechodzenie po kliknięciu, jak i po upływie czasu, aby widz mógł przejść dalej kliknięciem lub poczekać na timer. Aby używać tylko timera, ustaw [advance_on_click] na False. Opóźnienie kontroluje, kiedy pokaz slajdów przechodzi dalej; nie określa czasu trwania efektu wizualnego przejścia.

Ten przykład przypisuje różne efekty do pierwszych trzech slajdów i włącza automatyczne przechodzenie po 3, 5 i 7 sekundach, odpowiednio. Kliknięcia myszy również mogą przechodzić te slajdy. Użyj pliku input.pptx zawierającego przynajmniej trzy slajdy.

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.")

Aby sprawdzić, czy włączono przechodzenie czasowe, odczytaj [advance_after]. Sam zapisany czas opóźnienia nie oznacza, że timer jest aktywny.

Następny przykład otwiera zapisany powyżej plik, raportuje każdy włączony timer i wyłącza automatyczne przechodzenie dla slajdów z opóźnieniem większym niż dwie sekundy. Włącza kliknięcia myszy dla tych slajdów i zapisuje zaktualizowane ustawienia.

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)

Precyzyjna kontrola czasu przejścia

Użyj [duration] aby określić dokładną długość efektu przejścia w milisekundach. Właściwość [slide_show_transition] slajdu udostępnia te ustawienia poprzez [SlideShowTransition]:

Właściwość Cel
[duration] Ustawia czas trwania samego efektu przejścia, w milisekundach.
[advance_after_time] Ustawia opóźnienie przed automatycznym przejściem slajdu, w milisekundach. Włącz [advance_after], aby aktywować ten timer.
[speed] Wybiera predefiniowaną kategorię prędkości z [TransitionSpeed]: SLOW, MEDIUM lub FAST. Jest używana, gdy nie określono dokładnego czasu trwania.

[duration] kontroluje tylko efekt przejścia; nie określa, jak długo slajd pozostaje widoczny. Opóźnienie automatycznego przejścia należy konfigurować osobno. Gdy nie ustawiono explicite czasu trwania, Aspose.Slides określa czas trwania efektu na podstawie typu przejścia i wartości [speed].

Zastosuj ten sam czas trwania dla każdego slajdu

Dla spójnego tempa zastosuj ten sam efekt i dokładny czas trwania dla każdego slajdu. Ten przykład ładuje input.pptx, wybiera Fade z [TransitionType] i nadaje każdemu przejściu czas trwania 750 milisekund. Osobno włącza automatyczne przejście po 5,000 milisekundach i wyłącza przechodzenie po kliknięciu myszy, a następnie zapisuje wynik jako 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

        # Skonfiguruj automatyczne przechodzenie niezależnie od czasu trwania efektu.
        transition.advance_after = True
        transition.advance_after_time = 5000
        transition.advance_on_click = False

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

Ustaw różne czasy trwania dla poszczególnych slajdów

Różne slajdy mogą mieć różne czasy trwania efektów. Na przykład użyj krótkiego przejścia dla slajdu tytułowego i dłuższego przejścia dla wprowadzenia sekcji. Ten przykład ustawia 500 milisekund dla pierwszego slajdu i 1200 milisekund dla drugiego. Użyj pliku input.pptx zawierającego przynajmniej dwa slajdy.

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.")

Skoordynuj przejścia z animowanym wyjściem

Przy przygotowywaniu animated GIF, HTML5 presentation lub video, ustaw dokładne czasy trwania przejść przed eksportem, aby dopasować je do zamierzonego tempa. Na przykład użyj 600-milisekundowego zanikania (fade) między scenami i dostosuj osobno opóźnienie przejścia każdego slajdu, aby umożliwić czas na narrację lub zawartość.

Dla GIF i wideo skoordynuj częstotliwość klatek wyjściowych z czasem trwania efektu: 600 milisekund odpowiada 18 klatkom przy 30 klatkach na sekundę. W HTML5 włącz animowane przejścia w ustawieniach eksportu. Sprawdź, jakie efekty i opcje czasowe obsługuje wybrany format eksportu oraz podglądaj wynik, aby potwierdzić synchronizację.

Odczytaj istniejący czas trwania przejścia

Odczytaj [duration] przed modyfikacją przejścia, aby określić, czy zapisano explicite wartość. Wartość -1 oznacza, że nie ustawiono wyraźnego czasu trwania; wartość nieujemna określa zapisany czas trwania w milisekundach. Nieustawiona wartość nie jest wyliczonym czasem odtwarzania: Aspose.Slides używa typu przejścia i [speed] do określenia tego czasu. Ustawienie typu przejścia może zainicjować czas trwania, więc najpierw sprawdź oryginalne ustawienia.

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}.")

Przejście Morph

Przejście Morph animuje zmiany pomiędzy obiektami na kolejnych slajdach. Aby stworzyć prosty efekt Morph, sklonuj slajd, przesuń lub zmień rozmiar obiektu na klonie i zastosuj przejście Morph do drugiego slajdu. To zapewnia przejściowi odpowiednie obiekty do animacji między ich pierwotnym a zmodyfikowanym stanem.

Poniższy przykład tworzy slajd z prostokątem tekstowym, klonuje slajd i zmienia pozycję oraz rozmiar prostokąta na klonie. Następnie wybiera Morph z wyliczenia [TransitionType] dla drugiego slajdu. Otwórz zapisany plik w przeglądarce prezentacji obsługującej Morph, aby zobaczyć efekt podczas pokazu slajdów.

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)

Typy przejścia Morph

Wyliczenie [TransitionMorphType] kontroluje, w jaki sposób Morph dopasowuje i animuje zawartość:

  • [BY_OBJECT] traktuje każdy kształt jako cały obiekt.
  • [BY_WORD] animuje tekst, dopasowując słowa, gdzie to możliwe.
  • [BY_CHAR] animuje tekst, dopasowując znaki, gdzie to możliwe.

Ustaw przejście [type] na Morph przed dostępem do jego [value]. Wartość następnie zwraca obiekt [MorphTransition], którego właściwość [morph_type] wybiera tryb dopasowania.

Ten przykład otwiera prezentację stworzoną w poprzedniej sekcji i konfiguruje drugi slajd do używania animacji Morph opartej na słowach.

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.")

Ustaw efekty przejścia

Niektóre przejścia udostępniają dodatkowe opcje, takie jak kierunek czy to, czy efekt zaczyna się od czarnego ekranu. Dostępne opcje zależą od wybranego [type] przejścia. Najpierw ustaw typ, a następnie użyj odpowiedniego obiektu przejścia z jego [value].

Poniższy przykład stosuje przejście Cut do pierwszego slajdu input.pptx. Ustawia [from_black] za pośrednictwem [OptionalBlackTransition], aby przejście rozpoczynało się od czarnego ekranu.

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

Czy mogę kontrolować prędkość odtwarzania przejścia slajdu?

Tak. Preferuj [duration], gdy potrzebny jest dokładny czas trwania efektu w milisekundach. Użyj [speed], gdy wystarczy predefiniowana kategoria [TransitionSpeed] — SLOW, MEDIUM lub FAST — i nie ustawiono explicite czasu trwania. Te ustawienia kontrolują efekt przejścia niezależnie od opóźnienia automatycznego przejścia.

Czy mogę dołączyć dźwięk do przejścia i sprawić, że będzie się powtarzać?

Tak. Przypisz wbudowany dźwięk do [sound], ustaw [sound_mode] na START_SOUND z wyliczenia [TransitionSoundMode] i włącz [sound_loop]. Dźwięk będzie się powtarzał aż do następnego zdarzenia dźwiękowego w pokazie slajdów.

Jaki jest najszybszy sposób zastosowania tego samego przejścia do każdego slajdu?

Przejdź pętlą po kolekcji [slides] prezentacji i ustaw [type] przejścia każdego slajdu na tę samą wartość. Ustaw wszystkie opcje czasu i efektów w tej samej pętli, aby zachować spójne zachowanie we wszystkich slajdach.

Jak mogę sprawdzić, które przejście jest aktualnie ustawione na slajdzie?

Odczytaj właściwość [type] z [slide_show_transition] slajdu. Zwraca ona wartość z wyliczenia [TransitionType]; NONE oznacza, że żaden efekt przejścia nie jest zastosowany.