对于你们所有人来说,那些用动画制作ppt幻灯片的人:
例如,是否有一个工具可以将ppt转换为PDF,并将每个动画保存在一个单独的幻灯片中?
我知道你可以用LaTeX光束创建动画幻灯片,可以很好地转换成PDF,我已经制作了其中的一些,但我也有一些ppt文件,我想要转换成PDF。
这就是我迄今尝试过的:
我已经搜索过了,但没有找到一个令人满意的答案来处理动画。你用什么?
发布于 2015-08-30 23:29:42
这个博客帖子提供了一个VBA宏脚本,它会将每一张幻灯片分割成多张幻灯片(例如,图像或一个一个地出现的点),然后你可以保存为PDF和瞧!
重要的是,因为它是一个VBA脚本,所以应该同时适用于和。我只在OSX (yosemite)上试用过powerpoint 2011,而且效果很好。我唯一的问题是,带有动画符号点(一个一个地出现)的幻灯片被分割成多个幻灯片,但是每一张幻灯片都包含所有的要点,所以我不得不手动删除一些。尽管如此,对于其他的一切,它是完美的,这是一个小的代价,而不是所有的手工操作,特别是图像动画。当然,您可能不会在Windows或其他版本的PP上遇到相同的问题。无论如何,OSX的是我迄今为止找到的唯一可行的解决方案。
有关将VBA宏添加到powerpoint的说明可以找到这里。
希望它也适用于你!
发布于 2018-02-09 13:24:10
这个博客帖子提供了一个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发布于 2019-09-29 15:22:40
对于那些使用LibreOffice或OpenOffice的用户来说,github上有一个插件可以很好地实现这个功能:
根据我的经验,所有标准的出现/消失动画都很好地分开了。物体运动动画也能工作(你可以得到一张幻灯片,上面有开始的位置,还有一个物体的结束位置)。我还没有机会测试其他动画类型,但这应该涵盖所有标准需求:-)
https://stackoverflow.com/questions/25368346
复制相似问题