Animar texto de PowerPoint en Python mediante Java

Visión general

Este artículo explica cómo trabajar con texto animado en Aspose.Slides aplicando efectos de animación a párrafos individuales y recuperando los efectos ya asignados a los párrafos en un marco de texto. Se centra en los métodos de la API utilizados para añadir animación a nivel de párrafo e inspeccionar los efectos de animación de párrafo existentes en una presentación.

Añadir efectos de animación a párrafos

El método addEffect de la clase Sequence permite añadir efectos de animación a un solo párrafo. Este fragmento de código muestra cómo añadir un efecto de animación a un único párrafo:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import EffectSubtype, EffectTriggerType, EffectType, Presentation, SaveFormat

presentation = Presentation("Presentation.pptx")
try:
    # Selecciona el párrafo al que se añadirá un efecto.
    auto_shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)

    # Añade un efecto de animación Fly al párrafo seleccionado.
    effect = presentation.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(paragraph, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick)

    presentation.save("AnimationEffectinParagraph.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Obtener efectos de animación de los párrafos

Es posible que desee recuperar los efectos de animación aplicados a un párrafo, por ejemplo, para aplicar esos efectos a otro párrafo u objeto.

Aspose.Slides for Python mediante Java le permite obtener todos los efectos de animación aplicados a los párrafos contenidos en un marco de texto (shape). Este fragmento de código muestra cómo obtener los efectos de animación aplicados a un párrafo:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("Presentation.pptx")
try:
    sequence = presentation.getSlides().get_Item(0).getTimeline().getMainSequence()
    auto_shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)

    for paragraph in auto_shape.getTextFrame().getParagraphs():
        effects = sequence.getEffectsByParagraph(paragraph)

        if len(effects) > 0:
            print(f'Paragraph "{paragraph.getText()}" has {effects[0].getType()} effect.')
finally:
    presentation.dispose()

Preguntas frecuentes

¿En qué se diferencian las animaciones de texto de las transiciones de diapositiva, y pueden combinarse?

Las animaciones de texto controlan el comportamiento de los objetos a lo largo del tiempo en una diapositiva, mientras que las transiciones controlan cómo cambian las diapositivas. Son independientes y pueden usarse juntas; el orden de reproducción lo determina la línea de tiempo de la animación y la configuración de la transición.

¿Se conservan las animaciones de texto al exportar a PDF o imágenes?

No. Los PDFs e imágenes rasterizadas son estáticos, por lo que verá un único estado de la diapositiva sin movimiento. Para conservar el movimiento, utilice la exportación a vídeo o a HTML.

¿Funcionan las animaciones de texto en los diseños y la diapositiva maestra?

Los efectos aplicados a objetos de diseño/maestro se heredan en las diapositivas, pero su temporización e interacción con las animaciones a nivel de diapositiva dependen de la secuencia final en la diapositiva.