Gerenciar transições de slides em apresentações usando Python

Visão geral

Transições de slide controlam como os slides aparecem durante uma apresentação. Com Aspose.Slides for Python via .NET, você pode escolher um efeito de transição para cada slide, configurar o avanço por clique do mouse ou por temporizador e ajustar opções específicas de um efeito. Este artigo usa exemplos em Python para aplicar transições, definir durações exatas de transição, gerenciar o tempo dos slides e criar uma transição Morph entre dois slides. Os exemplos também mostram como salvar as configurações em um arquivo PPTX.

Adicionar Transição de Slide

Para aplicar uma transição, carregue uma apresentação com a classe Presentation e acesse a propriedade slide_show_transition do slide. Defina seu type para um valor da enumeração TransitionType e, em seguida, salve a apresentação.

O exemplo a seguir aplica uma transição Circle ao primeiro slide e uma transição Comb ao segundo. Use um arquivo input.pptx com pelo menos dois slides.

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

Adicionar Transição de Slide Avançada

Você pode configurar por quanto tempo um slide permanece na tela e se um clique do mouse avança a apresentação. As propriedades a seguir controlam esse comportamento:

Habilite tanto o avanço por clique quanto o cronometrado para permitir que o visualizador avance com um clique ou espere o temporizador. Para usar apenas o temporizador, defina advance_on_click como False. O atraso controla quando a apresentação avança; não define a duração do efeito visual de transição.

Este exemplo atribui efeitos diferentes aos três primeiros slides e habilita o avanço automático após 3, 5 e 7 segundos, respectivamente. Cliques do mouse também podem avançar esses slides. Use um arquivo input.pptx com pelo menos três slides.

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

Para verificar se o avanço cronometrado está habilitado, leia advance_after. Um atraso armazenado sozinho não indica que o temporizador está ativo.

O próximo exemplo abre o arquivo salvo acima, relata cada temporizador habilitado e desabilita o avanço automático para slides com atraso maior que dois segundos. Ele habilita cliques do mouse para esses slides e salva as configurações atualizadas.

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)

Controlar o Tempo da Transição com Precisão

Use duration para especificar o comprimento exato de um efeito de transição em milissegundos. A propriedade slide_show_transition do slide expõe essas configurações por meio de SlideShowTransition:

Propriedade Propósito
duration Define a duração do próprio efeito de transição, em milissegundos.
advance_after_time Define o atraso antes que o slide avance automaticamente, em milissegundos. Habilite advance_after para ativar esse temporizador.
speed Seleciona uma categoria de velocidade predefinida da TransitionSpeed: SLOW, MEDIUM ou FAST. É usado quando uma duração exata não é especificada.

[duration] controla apenas o efeito de transição; não determina quanto tempo o slide permanece visível. Configure o atraso de avanço automático separadamente. Quando nenhuma duração explícita é definida, Aspose.Slides determina a duração do efeito a partir do tipo de transição e do valor de [speed].

Aplicar a Mesma Duração a Cada Slide

Para manter um ritmo consistente, aplique o mesmo efeito e a mesma duração exata a cada slide. Este exemplo carrega input.pptx, seleciona Fade da TransitionType, e atribui a cada transição uma duração de 750 milissegundos. Ele habilita separadamente o avanço automático após 5 000 milissegundos e desabilita o avanço por clique do mouse, então salva o resultado como 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

        # Configure o avanço automático independentemente da duração do efeito.
        transition.advance_after = True
        transition.advance_after_time = 5000
        transition.advance_on_click = False

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

Definir Durações Diferentes para Slides Individuais

Slides diferentes podem usar durações de efeito distintas. Por exemplo, use uma transição breve para um slide de título e uma transição mais longa para a introdução de uma seção. Este exemplo define 500 milissegundos para o primeiro slide e 1 200 milissegundos para o segundo. Use um arquivo input.pptx com pelo menos dois slides.

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

Coordenar Transições com Saída Animada

Ao preparar um animated GIF, uma HTML5 presentation ou um video, defina durações de transição exatas antes da exportação para corresponder ao ritmo desejado. Por exemplo, use um fade de 600 milissegundos entre cenas e ajuste o atraso de avanço de cada slide separadamente para permitir tempo para sua narração ou conteúdo.

Para GIF e vídeo, coordene a taxa de quadros de saída com a duração do efeito: 600 milissegundos correspondem a 18 quadros a 30 frames por segundo. No HTML5, habilite transições animadas nas configurações de exportação. Verifique os efeitos e opções de tempo suportados pelo formato de exportação escolhido e visualize a saída para confirmar a sincronização.

Ler a Duração de uma Transição Existente

Leia duration antes de modificar a transição para determinar se um valor explícito está armazenado. Um valor de -1 significa que nenhuma duração explícita foi definida; um valor não negativo especifica a duração armazenada em milissegundos. O valor não definido não é a duração calculada de reprodução: Aspose.Slides usa o tipo de transição e speed para determinar essa duração. Definir um tipo de transição pode inicializar uma duração, portanto inspecione as configurações originais primeiro.

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

Transição Morph

A transição Morph anima alterações entre objetos em slides consecutivos. Para criar um efeito Morph simples, clone um slide, mova ou redimensione um objeto no clone e aplique a transição Morph ao segundo slide. Isso fornece aos objetos correspondentes a animação entre seus estados original e modificado.

O exemplo a seguir cria um slide com um retângulo de texto, clona o slide e altera a posição e o tamanho do retângulo no clone. Em seguida, seleciona Morph na enumeração TransitionType para o segundo slide. Abra o arquivo salvo em um visualizador de apresentações que suporte Morph para ver o efeito durante a apresentação.

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)

Tipos de Transição Morph

A enumeração TransitionMorphType controla como o Morph combina e anima o conteúdo:

  • BY_OBJECT trata cada forma como um objeto inteiro.
  • BY_WORD anima texto correspondendo palavras onde possível.
  • BY_CHAR anima texto correspondendo caracteres onde possível.

Defina a transição type como Morph antes de acessar seu value. O valor fornece então o objeto MorphTransition, cuja propriedade morph_type seleciona o modo de correspondência.

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

Definir Efeitos de Transição

Algumas transições expõem opções adicionais, como direção ou se o efeito começa a partir de uma tela preta. As opções disponíveis dependem da type de transição selecionada. Defina o tipo primeiro, depois use o objeto de transição apropriado a partir de seu value.

O exemplo a seguir aplica uma transição Cut ao primeiro slide de input.pptx. Ele define from_black por meio de OptionalBlackTransition para que a transição comece a partir de uma tela preta.

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

Posso controlar a velocidade de reprodução de uma transição de slide?

Sim. Prefira duration quando precisar de uma duração exata do efeito em milissegundos. Use speed quando uma categoria predefinida de TransitionSpeed — SLOW, MEDIUM ou FAST — for suficiente e nenhuma duração explícita estiver definida. Essas configurações controlam o efeito de transição independentemente do atraso de avanço automático.

Posso anexar áudio a uma transição e fazer loop?

Sim. Atribua áudio incorporado a sound, defina sound_mode como START_SOUND da enumeração TransitionSoundMode e habilite sound_loop. O áudio faz loop até o próximo evento de som na apresentação.

Qual é a maneira mais rápida de aplicar a mesma transição a todos os slides?

Itere pela coleção slides da apresentação e defina a type de transição de cada slide para o mesmo valor. Defina quaisquer opções de tempo e efeito no mesmo loop para manter o comportamento consistente em todos os slides.

Como posso verificar qual transição está atualmente definida em um slide?

Leia a propriedade type da slide_show_transition do slide. Ela retorna um valor da enumeração TransitionType; NONE indica que nenhum efeito de transição está aplicado.