此答案显示了如何在 Google Chrome 中启用静默打印。但是,我有两个网页必须使用两台不同的打印机静默打印,而无需进一步的用户交互。有没有办法在调用之前自动选择打印机window.print()
?如果真的有必要,我不介意编写 Chrome 扩展程序。
4 回答
也许您可以使用 Google Cloud Print 设置您的打印机,然后使用云打印 API以静默方式向它们提交作业。看起来您可以在提交作业时指定打印机 ID。您可能需要使用html2canvas之类的东西来栅格化网页。
如果您处于熟悉的环境中,并且您拥有足够的权限(我想,因为您知道要使用的打印机),您可以尝试通过命令行更改它。为此,您应该致电
@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
我还没有测试过,祝你好运!
我最终用 F# 编写了一个服务器并通过 WebSocket 与它通信。
我已经搜索了答案,但似乎无法以编程方式设置打印机。因此我可能很复杂的解决方案:
创建一个可以切换操作系统默认打印机的命令行应用程序。也许是能够禁用和启用打印机的应用程序。如果您在 Windows 上,.NET 应用程序可能会执行此操作。如果在 Linux 上应该有一个用于打印机管理的命令行界面(我不确定)。
现在制作一个 PHP、asp.net 或 ruby 等页面,该页面能够调用打印机启用/禁用程序。
如果这有效,您可以使用 Javascript 调用首先打印到打印机一,然后再切换到打印机二。但是也有一些缺点:
- 如果打印机 1 正在打印文档,则不能切换到打印机 2,因为这将禁用打印机 1。因此,您应该以某种方式计算一份普通工作需要多长时间。
- 这个解决方案有很多开销。您需要额外调用打印机之间的切换
- 可维护性绝对不是最佳的,因为您需要维护打印机开关程序和 Web 服务。
我希望有人提出更好的解决方案,但我至少想分享一下我的想法。也许他们可以帮助您解决问题。