Анимация текста PowerPoint в Python через Java

Обзор

В этой статье объясняется, как работать с анимированным текстом в Aspose.Slides, применяя эффекты анимации к отдельным абзацам и получая уже назначенные эффекты для абзацев в текстовом фрейме. Основное внимание уделяется методам API, используемым для добавления анимации на уровне абзаца и проверки существующих эффектов анимации абзацев в презентации.

Добавление эффектов анимации к абзацам

Метод addEffect класса Sequence позволяет добавить эффекты анимации к отдельному абзацу. Ниже приведён пример кода, показывающий, как добавить эффект анимации к одному абзацу:

import jpype
import asposeslides

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

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

presentation = Presentation("Presentation.pptx")
try:
    # Выберите абзац, к которому нужно добавить эффект.
    auto_shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)

    # Добавьте эффект анимации «Полёт» к выбранному абзацу.
    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()

Получение эффектов анимации абзацев

Возможно, вам понадобится получить эффекты анимации, применённые к абзацу, — например, чтобы применить эти эффекты к другому абзацу или фигуре.

Aspose.Slides for Python via Java позволяет получить все эффекты анимации, применённые к абзацам, содержащимся в текстовом фрейме (shape). Ниже показан пример кода, демонстрирующий, как получить эффекты анимации, применённые к абзацу:

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()

FAQ

Как анимация текста отличается от переходов слайдов и можно ли их комбинировать?

Анимация текста управляет поведением объекта во времени на слайде, тогда как transitions управляют тем, как меняются слайды. Они независимы и могут использоваться совместно; порядок воспроизведения определяется временной шкалой анимации и настройками перехода.

Сохраняются ли анимации текста при экспорте в PDF или изображения?

Нет. PDF и растровые изображения являются статичными, поэтому вы увидите единственное состояние слайда без движения. Чтобы сохранить движение, используйте экспорт в video или HTML.

Работают ли анимации текста в макетах и мастере слайдов?

Эффекты, применённые к объектам макета/мастера, наследуются слайдами, но их время и взаимодействие с анимациями уровня слайда зависят от окончательной последовательности на слайде.