如何用AppleScript实现Adobe Acrobat打印时自动选择预设参数
可行解决方案如下:
先确认权限配置
打开 macOS 「系统设置>隐私与安全性>辅助功能」,给你运行脚本的工具(脚本编辑器、Automator 或者终端等)开启控制权限,这是System Events能操作界面的前提,很多定位失败的问题都是权限没开导致的。修正UI元素定位层级
你之前的代码直接在主窗口下操作,但是Acrobat的打印面板是作为主窗口的附加层级(sheet)存在的,点击「Stampante...」后弹出的设置是独立窗口,需要切换对应的层级定位元素,不要依赖keystroke tab切换焦点,这种方式稳定性极差,界面布局稍有变化就会失效。
你可以用Xcode自带的「无障碍检查器(Accessibility Inspector)」直接抓取界面元素的准确名称、所属层级,不需要盲猜元素属性。修改后的参考代码如下:
tell application "Adobe Acrobat Reader DC" activate open file "giungete:users:corrado:desktop:201.188_001.pdf" delay 1 tell application "System Events" tell application process "Adobe Acrobat Reader DC" -- 呼出打印面板 keystroke "p" using command down delay 1 -- 定位打印附加面板 tell sheet 1 of window "201.188_001.pdf" -- 直接给份数输入框赋值,不需要多次tab切换 set value of text field "Copie" to "120" delay 0.1 -- 点击Stampante按钮,按钮名和你的界面语言匹配即可 click button "Stampante..." delay 1 end tell -- 定位弹出的打印机设置窗口,窗口名根据你实际显示的名称调整 tell window "Stampante" -- 此处替换为你需要点击的按钮名称,用无障碍检查器可以查到准确值 click button "后续要点击的按钮名称" delay 0.5 end tell end tell end tell end tell
- 更稳定的无UI替代方案
如果你的需求只是设置打印参数批量打印,不需要强制走Acrobat的界面操作,可以直接用macOS原生的lpr打印命令,完全不需要模拟点击,稳定性更高,AppleScript 中调用示例:
do shell script "lpr -P '你的打印机名称' -o copies=120 /Users/corrado/Desktop/201.188_001.pdf"
你可以通过lpoptions -l命令查看所有支持的打印参数,直接指定预设、纸张大小、单双面等所有配置。
内容的提问来源于stack exchange,提问作者Corrado Polentes
相关产品推荐
相关产品推荐

