【问题标题】:Select a printer and silently print选择打印机并静默打印
【发布时间】:2013-11-08 11:58:25
【问题描述】:

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

【问题讨论】:

  • 如果要打印的文档之一是纯文本,您可以使用简单的批处理文件包装器打开它,该包装器打开记事本并打印文本。您将弹出一个自定义 mime 类型的 dataURL 并将您的批处理文件与该类型相关联。然后,您可以使用 dataURL 和 html 使用 window.print() 打印文本。另一个答案是“不”。

标签: javascript google-chrome printing


【解决方案1】:

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

【讨论】:

  • 您能否提供有关您的解决方案的更多详细信息
【解决方案2】:

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

@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

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

【讨论】:

  • 您的解决方案看起来很奇特,准备试一试。你有没有机会知道我可以模仿打印机设置的方法。目前我无法使用实际的打印机(它将是徽章打印机、斑马或 evolis)
  • 刚刚测试过,它可以工作,但是它只能在 IE 中工作,并且需要允许在 IE 安全设​​置中“初始化和编写活动 x 控件未标记为可安全执行脚本”,请参阅 this answer 了解更多详细信息.
【解决方案3】:

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

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

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

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

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

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

【讨论】:

  • 这个解决方案有两个主要问题(希望我们能克服):1-第一:php、asp、ruby或其他任何东西的服务器应该在同一台机器上,如果是客户端机器,你调用了javascript,它可以做什么? 2-Second 同样重要:如果您能够(通过 javascript)更改 SYSTEM 的默认打印机,这不会更改 chrome 的默认打印机,因为它固定为最后使用的打印机............我有一个通过javascript更改系统设置的解决方案,虽然复杂,但可以高效工作,现在的问题是:我在哪里可以更改chrome的默认打印机??!!
【解决方案4】:

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

【讨论】:

  • 蓝牙打印机可以吗?或任何类似的解决方案?
  • 更新:自 2020 年 12 月 31 日起,Google 云打印将不再受支持。请参阅支持文章以获取迁移帮助。 support.google.com/chrome/a/answer/9633006
猜你喜欢
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 2017-07-07
  • 2017-05-24
相关资源
最近更新 更多