You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AppleScript调用Preview导出PDF报错:无法获取keystroke" "

解决Preview AppleScript报错:Can’t get keystroke " "

嘿,我帮你找到了问题的根源——你遇到的Preview got an error: Can’t get keystroke " "报错,是因为keystroke这个命令根本不属于Preview应用,它是System Events的专属命令,你把它直接放在了Preview的tell块里,系统自然识别不了啦!

另外原代码还有几个可以优化的小细节,比如只筛选PDF文件、增加合理延迟确保界面加载、导出后关闭文件避免窗口堆积,我给你调整了完整的修复版脚本:

tell application "Finder"
    -- 定位目标PDF文件夹
    set targetFolder to POSIX file "/Users/documents/PDFs" as alias
    -- 只筛选文件夹里的PDF文件,避免处理其他格式
    set pdfFiles to files of targetFolder whose name extension is "pdf" as alias list
end tell

-- 遍历每个PDF文件
repeat with currentFile in pdfFiles
    tell application "Preview"
        open currentFile
        -- 等待文件加载完成,大文件可以适当延长延迟
        delay 0.5
    end tell
    
    -- 所有界面控制命令都放在System Events的tell块里
    tell application "System Events"
        tell process "Preview"
            -- 点击File菜单下的Export as PDF…选项
            click menu item "Export as PDF…" of menu 1 of menu bar item "File" of menu bar 1
            -- 等待导出窗口弹出
            delay 0.3
            -- 按下回车键确认导出(前提是你已经预设好导出目标文件夹)
            keystroke return
            -- 等待导出完成
            delay 0.2
            -- 关闭当前文件,避免Preview窗口越开越多
            click menu item "Close" of menu 1 of menu bar item "File" of menu bar 1
        end tell
    end tell
end repeat

还有几个关键注意事项要提醒你:

  • 必须先在系统偏好设置→安全性与隐私→隐私→辅助功能里,给Script Editor(或者你用来运行脚本的工具)和Preview授予权限,否则System Events没法控制界面操作
  • 如果你的导出目标文件夹不是默认的下载文件夹,还可以加一段脚本调出路径输入框,比如在点击Export菜单后加:keystroke "g" using command down,然后输入目标路径再按回车
  • 延迟时间可以根据你的电脑性能微调,如果还是出现操作失败,就把延迟数值调大一点

内容的提问来源于stack exchange,提问作者user2012677

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:47:33