选择一台打印机并静默打印

时间:2013-10-29 11:00:30

标签: javascript google-chrome printing

This answer展示了如何在Google Chrome中启用静音打印。但是,我有两个网页,必须使用两台不同的打印机进行静默打印,无需进一步的用户交互。有没有办法在致电window.print()之前自动选择打印机?如果真的有必要,我不介意编写Chrome扩展程序。

4 个答案:

答案 0 :(得分:23)

也许您可以使用Google Clound Print设置打印机,然后使用the cloud printing API以静默方式向其提交作业。看起来您可以在提交作业时指定打印机ID。您可能需要使用html2canvas之类的内容来栅格化网页。

答案 1 :(得分:7)

如果您所处的环境中,并且您拥有足够的权限(我想,因为您知道要使用的打印机),您可以尝试通过命令行进行更改。 为此,您应该致电

@RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"

打印机名称必须是控制面板中显示的值。

要从javascript调用命令行,如果启用了适当的ActiveX控件,则可以使用:

var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");

另外,您可以尝试使用shell.application ShellExecute

 var objShell = new ActiveXObject("shell.application");
objShell.ShellExecute("cmd.exe", 'RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"', "C:\\WINDOWS\\system32", "open", 1);

有关详情,请访问http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx

我没有测试过,祝你好运!

答案 2 :(得分:3)

我最终在F#中编写了一个服务器并通过WebSocket与它进行通信。

答案 3 :(得分:1)

我已经搜索了一个答案,但看起来没有办法以编程方式设置打印机。因此,我可能很复杂的解决方案:

创建一个命令行应用程序,可以切换操作系统的默认打印机。也许是一个能够禁用和启用打印机的应用程序。如果你在Windows上,.NET应用程序可能会这样做。如果在Linux上应该有一个用于打印机管理的命令行界面(我不确定)。

现在制作一个PHP,asp.net或ruby等页面,它可以调用打印机启用/禁用程序。

如果这样做,您可以使用Javascript调用首先打印到打印机1,然后切换到打印机2。但是有一些缺点:

  • 如果打印机1正在打印文档,则无法切换到打印机2,因为这将禁用打印机1。所以,不管怎样,你应该花时间做一份普通工作。
  • 此解决方案有很多开销。您需要额外调用打印机之间的切换
  • 由于您需要维护打印机切换程序和Web服务,因此可维护性绝对不是最佳的。

我希望你有人提出更好的解决方案,但我想至少分享我的想法。也许他们会帮助你解决问题。