Анимированные слайды преобразования в статические PDF

Для всех вас, людей, которые делают слайды ppt с анимацией, например:

  • Отображение пунктов маркера один за другим
  • Отображение изображений по одному или масштабирование сюжета
  • Отображение границы на активном элементе
  • Внутренняя навигация/меню/ссылка на другой слайд
  • Переходы между слайдами

Существует ли инструмент, который может конвертировать ppt в PDF и сохранять каждую анимацию, например, на отдельном слайде?

Я знаю, что вы можете создавать анимированные слайды с помощью LaTeX Beamer, которые прекрасно конвертируются в PDF. Я сделал некоторые из них, но у меня также есть некоторые ppt файлы, которые я хочу конвертировать в PDF.

Это то, что я пробовал до сих пор:

  • Slideshare, однако он не только не поддерживает анимацию, но и внутренняя навигация не работает, и все шрифты перепутаны.
  • PDFcreator, качество довольно высокое по сравнению с ним, но он также не поддерживает анимацию. Как Slideshare, он просто поместит одно изображение поверх другого. Кроме того, он не поддерживает прозрачность (например, текстовое поле с полупрозрачной надписью над изображением)
  • LaTeX Beamer, уже упоминалось, но я бы предпочел не вводить содержимое и анимации ppts в LaTeX просто для того, чтобы анимация правильно отображалась в PDF.

Я искал ТАК и не нашел удовлетворительного ответа для работы с анимацией. Что ты используешь?

Ответ 1

Я нашел небольшой плагин, который разделяет ваши слайды PowerPoint, когда у них есть анимация. Таким образом, если у вас есть 3 анимации на 1 слайде, он будет генерировать 3 слайда с каждой анимацией шаг за шагом. Затем экспортируйте его в PDF :-)

Это работало для меня в PowerPoint 2010. Я бы порекомендовал вам сделать резервную копию файла презентации перед разделением. И не забудьте снять флажок "Разделять анимацию, запускаемую по клику".

http://www.dia.uniroma3.it/~rimondin/downloads.php

Я тоже нашел это (но первое решение было бесплатным и работало так :-))http://www.verypdf.com/wordpress/201306/how-to-create-a-pdf-from-powerpoint-with-animations-36850.html

Ответ 2

В этом сообщении в блоге содержится макрос VBA script, который разбивает каждый слайд с анимацией (например, изображения или точки маркера, которые появляются на один) в несколько слайдов, а затем вы можете сохранить как PDF и вуаля!

Важно то, что VBA script он должен работать как для Windows, так и для Mac. Я только пробовал это на OSX (yosemite) с powerpoint 2011, и он работал очень хорошо. Единственная проблема, с которой я столкнулась, заключалась в том, что слайды с анимированными точками пули (которые появляются один за другим) были разделены на несколько слайдов, но каждый слайд содержал все точки маркера, поэтому мне пришлось удалить их вручную. Тем не менее, для всего остального он отлично работал, и это небольшая цена для оплаты по сравнению с выполнением всего этого вручную, особенно анимации изображений. Конечно, вы можете/не можете столкнуться с той же проблемой в Windows или других версиях PP. В любом случае для OSX это единственное работающее решение, которое я нашел до сих пор.

Инструкции по добавлению макросов VBA к powerpoint можно найти здесь.

Надеюсь, что это сработает и для вас!

Ответ 3

Это сообщение в блоге содержит макрос VBA script, который разбивает каждый слайд, который имеет анимацию на несколько слайдов, не сохраняя исходные слайды перед расширенными слайдами (как в случае этот ответ).

Проблема, остающаяся с этим макросом и другим макросом, заключается в том, что содержимое текстового блока с несколькими анимациями всегда отображается в целом (например, если каждое предложение одного и того же текстового блока имеет отдельную анимацию, все предложения будут всегда отображаться вместе).

Код VBA:

Private AnimVisibilityTag As String

Sub ExpandAnimations()
AnimVisibilityTag = "AnimationExpandVisibility"

Dim pres As Presentation
Dim Slidenum As Integer

Set pres = ActivePresentation
Slidenum = 1
Do While Slidenum <= pres.Slides.Count
Dim s As Slide
Dim animationCount As Integer
Set s = pres.Slides.Item(Slidenum)

If s.TimeLine.MainSequence.Count > 0 Then
    Set s = pres.Slides.Item(Slidenum)
    PrepareSlideForAnimationExpansion s
    animationCount = expandAnimationsForSlide(pres, s)
Else
    animationCount = 1
End If
Slidenum = Slidenum + animationCount
Loop
End Sub

Private Sub PrepareSlideForAnimationExpansion(s As Slide)
' Set visibility tags on all shapes
For Each oShape In s.Shapes
oShape.Tags.Add AnimVisibilityTag, "true"
Next oShape

' Find initial visibility of each shape
For animIdx = s.TimeLine.MainSequence.Count To 1 Step -1
Dim seq As Effect
Set seq = s.TimeLine.MainSequence.Item(animIdx)
On Error GoTo UnknownEffect
For behaviourIdx = seq.Behaviors.Count To 1 Step -1
    Dim behavior As AnimationBehavior
    Set behavior = seq.Behaviors.Item(behaviourIdx)
    If behavior.Type = msoAnimTypeSet Then
        If behavior.SetEffect.Property = msoAnimVisibility Then
            If behavior.SetEffect.To <> 0 Then
                seq.Shape.Tags.Delete AnimVisibilityTag
                seq.Shape.Tags.Add AnimVisibilityTag, "false"
            Else
                seq.Shape.Tags.Delete AnimVisibilityTag
                seq.Shape.Tags.Add AnimVisibilityTag, "true"
            End If
        End If
    End If
Next behaviourIdx
NextSequence:
On Error GoTo 0
Next animIdx
Exit Sub

UnknownEffect:
MsgBox ("Encountered an error while calculating object visibility: " + Err.Description)
Resume NextSequence
End Sub

Private Function expandAnimationsForSlide(pres As Presentation, s As Slide) As Integer
Dim numSlides As Integer
numSlides = 1

' Play the animation back to determine visibility
Do While True
' Stop when animation is over or we hit a click trigger
If s.TimeLine.MainSequence.Count <= 0 Then Exit Do
Dim fx As Effect
Set fx = s.TimeLine.MainSequence.Item(1)
If fx.Timing.TriggerType = msoAnimTriggerOnPageClick Then Exit Do

' Play the animation
PlayAnimationEffect fx
fx.Delete
Loop

' Make a copy of the slide and recurse
If s.TimeLine.MainSequence.Count > 0 Then
s.TimeLine.MainSequence.Item(1).Timing.TriggerType = msoAnimTriggerWithPrevious
Dim nextSlide As Slide
Set nextSlide = s.Duplicate.Item(1)
numSlides = 1 + expandAnimationsForSlide(pres, nextSlide)
End If

' Apply visibility
rescan = True
While rescan
rescan = False
For n = 1 To s.Shapes.Count
    If s.Shapes.Item(n).Tags.Item(AnimVisibilityTag) = "false" Then
        s.Shapes.Item(n).Delete
        rescan = True
        Exit For
    End If
Next n
Wend

' Clear all tags
For Each oShape In s.Shapes
oShape.Tags.Delete AnimVisibilityTag
Next oShape

' Remove animation (since they've been expanded now)
While s.TimeLine.MainSequence.Count > 0
s.TimeLine.MainSequence.Item(1).Delete
Wend

expandAnimationsForSlide = numSlides
End Function


Private Sub assignColor(ByRef varColor As ColorFormat, valueColor As ColorFormat)
If valueColor.Type = msoColorTypeScheme Then
varColor.SchemeColor = valueColor.SchemeColor
Else
varColor.RGB = valueColor.RGB
End If
End Sub


Private Sub PlayAnimationEffect(fx As Effect)
On Error GoTo UnknownEffect
For n = 1 To fx.Behaviors.Count
Dim behavior As AnimationBehavior
Set behavior = fx.Behaviors.Item(n)
Select Case behavior.Type
    Case msoAnimTypeSet
        ' Appear or disappear
        If behavior.SetEffect.Property = msoAnimVisibility Then
            If behavior.SetEffect.To <> 0 Then
                fx.Shape.Tags.Delete AnimVisibilityTag
                fx.Shape.Tags.Add AnimVisibilityTag, "true"
            Else
                fx.Shape.Tags.Delete AnimVisibilityTag
                fx.Shape.Tags.Add AnimVisibilityTag, "false"
            End If
        Else
            ' Log the problem
        End If
    Case msoAnimTypeColor
        ' Change color
        If fx.Shape.HasTextFrame Then
            Dim range As TextRange
            Set range = fx.Shape.TextFrame.TextRange
            assignColor range.Paragraphs(fx.Paragraph).Font.Color, behavior.ColorEffect.To
        End If


    Case Else
        ' Log the problem
End Select
Next n
Exit Sub
UnknownEffect:
MsgBox ("Encountered an error expanding animations: " + Err.Description)
Exit Sub
End Sub

Ответ 4

Для тех из вас, кто использует LibreOffice или OpenOffice, на github есть плагин, который делает это очень хорошо:

ExpandAnimations

По моему опыту, все стандартные анимации появления/исчезновения хорошо разделены. Анимации движения объекта также работают (вы получаете слайд с начальной позицией и один с конечной позицией объекта). У меня не было возможности протестировать другие типы анимации, но это должно охватывать все стандартные потребности :-)