AppleScript 标准套件有一个从应用程序打印的命令,允许指定某些选项并在不显示对话框的情况下打印。例如:
tell application "Safari"
print document 1 with properties {copies:3} without print dialog
end tell
但是,当前版本的 Safari 中似乎存在一个错误,阻止了这种情况的发生。1指定without print dialog
时,窗口中会弹出一个工作表,该工作表应显示处理打印作业的进度,但它并没有这样做,而是挂在一个不具描述性的理发杆上。
在尝试解决这个问题时,我意识到如果我指定with print dialog
,一切都会按预期进行。该脚本在显示对话框后暂停该行的执行,然后在用户点击对话框中的打印按钮后继续执行。最优雅的解决方法是keystroke return
在显示对话框之后,但我认为这是不可能的,因为脚本在该行暂停,直到对话框被解除。
一个不太优雅的解决方法是:
on printCopiesOfCurrentPage(copies)
tell application "System Events"
tell application process "Safari"
keystroke "p" using command down
keystroke copies as text
keystroke return
delay 3
end tell
tell
end printCopiesOfCurrentPage
由于在发送打印作业之前无法延迟执行,因此我们必须用 a 来猜测delay 3
,这要么效率低下,要么有问题。
这里还有其他可能性吗?也许是一种在使用击键方法后观察打印对话框消失的方法,或者一种在print with dialog
调用后开始工作的方法?
1.我第一次尝试这个时,它实际上打印了一页半,然后翻出并导致打印机卡纸,等等。从那以后我一直无法复制它,所以如果有人可以为我确认这个错误,将不胜感激。