16

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

4

4 回答 4

25

也许您可以使用 Google Cloud Print 设置您的打印机,然后使用云打印 API以静默方式向它们提交作业。看起来您可以在提交作业时指定打印机 ID。您可能需要使用html2canvas之类的东西来栅格化网页。

于 2013-12-03T19:07:12.580 回答
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

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

于 2013-12-06T02:45:25.027 回答
4

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

于 2014-04-01T14:22:02.950 回答
2

我已经搜索了答案,但似乎无法以编程方式设置打印机。因此我可能很复杂的解决方案:

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

现在制作一个 PHP、asp.net 或 ruby​​ 等页面,该页面能够调用打印机启用/禁用程序。

如果这有效,您可以使用 Javascript 调用首先打印到打印机一,然后再切换到打印机二。但是也有一些缺点:

  • 如果打印机 1 正在打印文档,则不能切换到打印机 2,因为这将禁用打印机 1。因此,您应该以某种方式计算一份普通工作需要多长时间。
  • 这个解决方案有很多开销。您需要额外调用打印机之间的切换
  • 可维护性绝对不是最佳的,因为您需要维护打印机开关程序和 Web 服务。

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

于 2013-12-03T19:26:46.173 回答