1

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.我第一次尝试这个时,它实际上打印了一页半,然后翻出并导致打印机卡纸,等等。从那以后我一直无法复制它,所以如果有人可以为我确认这个错误,将不胜感激。

4

0 回答 0