【问题标题】:How can I automate a keynote workflow to flatten slides into image slides for export to .ppt如何自动化主题演讲工作流程以将幻灯片展平为图像幻灯片以导出到 .ppt
【发布时间】:2014-10-29 17:07:29
【问题描述】:

我总是在主题演讲中设计我的演示幻灯片(因为我发现使用它更容易、更愉快),尽管它们通常需要在运行 PowerPoint 的 Windows 机器上呈现。

为了避免字体、格式等问题,我总是使用以下有效的工作流程:

  1. 在主题演讲中设计幻灯片,通常使用图像和文本。
  2. 将幻灯片作为 jpg 文件导出到桌面上的文件夹。
  3. 打开一个新的主题演讲。
  4. 将 jpg 文件拖到幻灯片导航器中。这将创建每个 jpg 的图像幻灯片。
  5. 将新演示文稿导出为 .ppt 文件。

有没有办法让这个工作流程自动化?我希望将步骤 2-5 合并为一个步骤!

【问题讨论】:

    标签: applescript automator


    【解决方案1】:

    这是执行此操作的 AppleScript(适用于 Keynote 版本 6.2,不适用于版本 5):

    tell application "Finder" to set f to (make new folder) as text -- create a temp folder to export images
    tell application "Keynote"
        tell front document
            export to (file f) as slide images with properties {image format:JPEG, compression factor:95}
            set {h, w, fPath} to {height, width, file of it}
        end tell
        tell (fPath as string) to if it ends with ".key:" then
            set newFile to (text 1 thru -6) & ".ppt"
        else
            set newFile to it & ".ppt"
        end if
        set jpegs to my getImages(f)
        set newDoc to make new document with properties {width:w, height:h}
        tell newDoc
            set mSlide to last master slide -- blank
            repeat with thisJPEG in jpegs
                set s to make new slide with properties {base slide:mSlide}
                tell s to make new image with properties {file:thisJPEG}
            end repeat
            delete slide 1
            export to (file newFile) as Microsoft PowerPoint
            close saving no
        end tell
    end tell
    tell application "Finder" to delete folder f -- delete the temp folder
    on getImages(f)
        tell application "Finder" to return (files of folder f) as alias list
    end getImages
    

    重要: 在运行脚本之前,幻灯片必须已经在 Keynote 中打开。

    并且幻灯片必须已经保存,因为脚本使用前端文档的路径将PPT文件保存在同一文件夹中。

    --

    更新:选择新文件的位置

    set v to ("Volumes" as POSIX file) as alias
    tell application "Finder" to set f to (make new folder) as text -- create a temp folder to export images
    tell application "Keynote"
        tell front document
            export to (file f) as slide images with properties {image format:JPEG, compression factor:95}
            set {h, w, tName} to {height, width, name of it}
        end tell
        tell tName to if it ends with ".key" then
            set newName to (text 1 thru -5) & ".ppt"
        else
            set newName to it & ".ppt"
        end if
        set jpegs to my getImages(f)
        activate
        set newFile to choose file name default name newName default location v with prompt "Select the folder to save the PPT file"
        set newDoc to make new document with properties {width:w, height:h}
        tell newDoc
            set mSlide to last master slide -- blank
            repeat with thisJPEG in jpegs
                set s to make new slide with properties {base slide:mSlide}
                tell s to make new image with properties {file:thisJPEG}
            end repeat
            delete slide 1
            export to (newFile) as Microsoft PowerPoint
            close saving no
        end tell
    end tell
    tell application "Finder" to delete folder f -- delete the temp folder
    
    on getImages(f)
        tell application "Finder" to return (files of folder f) as alias list
    end getImages
    

    【讨论】:

    • 这太棒了!非常感谢。是否可以调整它以打开对话框以将新文件保存在其他地方?通常我会直接将新的 ppt 文件放到 USB 驱动器上。
    • 完美。感谢您帮助我塑造这个工作流程......它真的很有用!
    猜你喜欢
    • 2023-02-10
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多