This answer展示了如何在Google Chrome中启用静音打印。但是,我有两个网页,必须使用两台不同的打印机进行静默打印,无需进一步的用户交互。有没有办法在致电window.print()
之前自动选择打印机?如果真的有必要,我不介意编写Chrome扩展程序。
答案 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。但是有一些缺点:
我希望你有人提出更好的解决方案,但我想至少分享我的想法。也许他们会帮助你解决问题。