Printing 使用Applescript打开打印队列。(或:如何使用Applescript打印PDF?)

Printing 使用Applescript打开打印队列。(或:如何使用Applescript打印PDF?),printing,applescript,Printing,Applescript,首先,我不是苹果书大师。我刚刚在谷歌上搜索了很多信息来了解这一点 我在Hazel规则中添加了以下脚本,试图打印Hazel识别的PDF文件 tell application "PrinterProxy" activate print theFile with properties {target printer:"Blah"} without print dialog end tell 我实际使用的打印机名称要长得多,是网络打印机的全名 当这个规则执行时,我得到两个Applescript错误弹出

首先,我不是苹果书大师。我刚刚在谷歌上搜索了很多信息来了解这一点

我在Hazel规则中添加了以下脚本,试图打印Hazel识别的PDF文件

tell application "PrinterProxy"
activate
print theFile with properties {target printer:"Blah"} without print dialog
end tell
我实际使用的打印机名称要长得多,是网络打印机的全名

当这个规则执行时,我得到两个Applescript错误弹出窗口,它们都简单地说“打印服务不可用”。我假设
activate
print
动词各有一个

然后我发现,如果手动启动打印机的“打印队列”窗口,则脚本可以正常工作。现在我不知道如何编写脚本打开队列。每当我以应用程序的名义提到它时,Applescript编译器都会提示我在列表中查找它(与Open Dictionary提供的列表相同),然后将其更改为“PrinterProxy”,这对我来说毫无意义


有没有一种方法可以从脚本中打开该窗口,或者有没有另一种方法可以在不打开窗口的情况下对其进行排队?奇怪的是,当任何应用程序都可以在没有窗口的情况下打印到队列中时,窗口竟然需要打开。

噢,天哪!我完全是偶然让它工作的。你知道我是如何为了简洁而省略了打印机的实际名称吗?是的,原来问题就出在这里

如果你把打印机的名字弄错了,那么这个列表就会显示出来供你选择,令人恼火的是,这会使你的选择匿名化。如果你的名字完全正确——在我的例子中,这意味着引号字符的正确使用(叹气)——那么它就不会被替换,它会起到很好的作用

这是我的最终代码:

tell application "Brother HL-5240 series @ Elli’s Big Mac"
  activate
  print theFile without print dialog
  quit
end tell
请注意,该死的
字符,苹果公司如此深思熟虑地为我输入了打印机名称。愚蠢的是,我用了一个
字符来输入这个名字。我真的是疯了


另外,请注意关闭打印队列窗口的
quit
行。显然有一个bug,它会在被某些活动引用后停止自动关闭,其中似乎包括我的脚本。看这里:

哦,天哪!我完全是偶然让它工作的。你知道我是如何为了简洁而省略了打印机的实际名称吗?是的,原来问题就出在这里

如果你把打印机的名字弄错了,那么这个列表就会显示出来供你选择,令人恼火的是,这会使你的选择匿名化。如果你的名字完全正确——在我的例子中,这意味着引号字符的正确使用(叹气)——那么它就不会被替换,它会起到很好的作用

这是我的最终代码:

tell application "Brother HL-5240 series @ Elli’s Big Mac"
  activate
  print theFile without print dialog
  quit
end tell
请注意,该死的
字符,苹果公司如此深思熟虑地为我输入了打印机名称。愚蠢的是,我用了一个
字符来输入这个名字。我真的是疯了

另外,请注意关闭打印队列窗口的
quit
行。显然有一个bug,它会在被某些活动引用后停止自动关闭,其中似乎包括我的脚本。请看这里: