web-dev-qa-db-ja.com

アニメーション化されたスライドを静的に変換PDF

みなさん、次のようなアニメーションでpptスライドを作成する人は、

  • 箇条書きを1つずつ表示する
  • 画像を1つずつ表示するか、プロットをズームする
  • アクティブな要素に境界線を表示する
  • 内部ナビゲーション/メニュー/別のスライドへのリンク
  • スライド間の遷移

たとえば、pptをPDFに変換し、各アニメーションを個別のスライドに保持できるツールはありますか?

LaTeX Beamerでアニメーション化されたスライドをPDFにうまく変換できることを知っていますが、その一部を作成しましたが、 PDFに変換したいいくつかのpptファイルもあります。

これは私がこれまでに試したことです:

  • Slideshareただし、アニメーションをサポートしていないだけでなく、内部ナビゲーションも機能せず、フォントはすべてめちゃくちゃ.
  • PDFcreator、品質は比較するとかなり優れていますが、アニメーションもサポートしていません。 Slideshareと同様に、1つの画像を他の画像の上に重ねるだけです。また、透明度もサポートしていません(たとえば、画像の上に半透明のbgが表示されたテキストボックス)。
  • LaTeX Beamerについては既に説明しましたが、アニメーションがPDFで正しく表示されるように、これらのpptsコンテンツとアニメーションをLaTeXに入力しないようにしたいと思います。

SO=を検索しましたが、アニメーションを処理するための十分な答えが見つかりませんでした。何を使用しますか?

13
Xirux Nefer

アニメーションがあるときにPowerPointスライドを分割する小さなプラグインを見つけました。つまり、1つのスライドに3つのアニメーションがある場合、アニメーションごとに3つのスライドが段階的に生成されます。次に、PDF :-)にエクスポートします

パワーポイント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

17
sgirardin

この ブログ投稿 は、アニメーション(たとえば、1つずつ表示される画像または箇条書き)があるすべてのスライドを複数のスライドに分割するVBAマクロスクリプトを提供し、次のように保存できますPDFと出来上がり!

重要なのは、これはVBAスクリプトなので、WindowsとMacの両方で機能するはずです。私は、PowerPoint 2011を搭載したOSX(ヨセミテ)でのみ試してみましたが、かなりうまくいきました。唯一の問題は、アニメーション化された箇条書き(1つずつ表示される)のあるスライドが複数のスライドに分割されていたが、すべてのスライドにすべての箇条書きが含まれていたため、手動でいくつかを削除しなければならなかったことでした。それでも、他のすべてについては完全に機能し、手動ですべてを実行する場合に比べて、特にイメージアニメーションを実行する場合に比べてわずかなコストで済みます。もちろん、Windowsまたは他のバージョンのPPで同じ問題が発生する可能性があります。いずれにせよ、OSXの場合、これが私がこれまでに見つけた唯一の実用的なソリューションです

VBAマクロをPowerPointに追加する手順については、 ここ を参照してください。

それもあなたのために働くことを願っています!

5
jjs

この ブログ投稿 は、元のスライドを展開されたスライドの前に保持せずに、アニメーションを持つすべてのスライドを複数のスライドに分割する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
2
Matthias

LibreOfficeまたはOpenOfficeを使用している人のために、これを非常にうまく行うgithubで利用可能なプラグインがあります。

ExpandAnimations

私の経験では、すべての標準の表示/非表示アニメーションはうまく分割されています。オブジェクトの動きのアニメーションも機能します(オブジェクトの開始位置と終了位置のスライドが表示されます)。私は他の種類のアニメーションをテストする機会がありませんでしたが、これですべての標準的なニーズをカバーできるはずです:-)

1
RoB