18

对于你们所有人,制作带有动画的ppt幻灯片的人,例如:

  • 一个一个地显示要点
  • 一张一张显示图像或缩放绘图
  • 在活动元素上显示边框
  • 内部导航/菜单/链接到另一张幻灯片
  • 幻灯片之间的过渡

例如,是否有可以将 ppt 转换为 PDF 并将每个动画保存在单独的幻灯片中的工具?

我知道您可以使用LaTeX Beamer创建动画幻灯片,可以很好地转换为 PDF,我已经制作了其中的一些,但我也有一些想要转换为 PDF 的 ppt 文件。

这是我到目前为止所尝试的:

  • Slideshare,但是它不仅不支持动画,而且内部导航也不起作用,而且字体都乱七八糟。
  • PDFcreator,质量比较好,但也不支持动画。作为 Slideshare,它只会将一张图片放在另一张图片上。此外,它不支持透明度(例如,在图像上带有半透明背景的文本框)
  • LaTeX Beamer,已经提到过,但我宁愿避免将这些 ppts 内容和动画输入到 LaTeX 中,以便动画在 PDF 中正确显示。

我搜索了 SO 并没有找到一个令人满意的答案来处理动画。你用什么?

4

4 回答 4

18

我发现了一个小插件,只要有动画就可以分割你的幻灯片。因此,如果您在 1 张幻灯片上有 3 个动画,他将逐步生成每个动画的 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

于 2014-10-20T07:04:51.387 回答
7

这篇文提供了一个 VBA 宏脚本,它将每张带有动画的幻灯片(例如,一张一张出现的图像或项目符号)分割成多张幻灯片,然后您可以保存为 PDF 和瞧!

重要的是,由于它是一个 VBA 脚本,它应该适用于 Windows 和 Mac。我只在 OSX (yosemite) 上用 powerpoint 2011 尝试过,效果很好。我遇到的唯一问题是带有动画项目符号点的幻灯片(一张一张地出现)被分成多张幻灯片,但每张幻灯片都包含所有项目符号点,所以我不得不手动删除一些。尽管如此,对于其他所有事情,它都运行良好,与手动完成所有操作相比,这是一个很小的代价,尤其是图像动画。当然,您可能/可能不会在 Windows 或其他版本的 PP 上遇到相同的问题。无论如何,对于 OSX,它是我迄今为止发现的唯一可行的解​​决方案。

可以在此处找到将 VBA 宏添加到 powerpoint 的说明。

希望它也适合你!

于 2015-08-30T23:29:42.870 回答
3

这篇博客文章提供了一个 VBA 宏脚本,它将把每张有动画的幻灯片分成多张幻灯片,而不会将原始幻灯片保留在展开的幻灯片前面(就像这个答案中的情况一样)。

这个宏和另一个宏的问题是,一个带有多个动画的文本块的内容总是作为一个整体显示(例如,如果同一个文本块的每个句子都有一个单独的动画,那么所有的句子都会被显示出来)一起)。

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
于 2018-02-09T13:24:10.000 回答
1

对于那些使用 LibreOffice 或 OpenOffice 的人,github 上有一个插件可以很好地做到这一点:

展开动画

以我的经验,所有标准的出现/消失动画都很好地分开了。对象移动动画也可以工作(您会得到一张带有开始位置的幻灯片和一张带有对象结束位置的幻灯片)。我没有机会测试其他动画类型,但这应该涵盖所有标准需求:-)

于 2019-09-29T15:22:40.077 回答