17

我正在开发一个内部 Google Chrome 扩展,它需要一种方法来启动将当前页面打印到打印机。我不希望出现默认的打印对话框(因此,javascript:window.print() 是不可能的)。

据我了解,仅使用 JS + HTML 插件是不可能的,因此我也愿意使用 NPAPI 插件(使用虚拟 mime 类型)。而且我只关心 Windows 平台。

如果可能的话,我也愿意接受各种黑客/解决方法,尽管标准解决方案会很好。

如果您认为这是不可能的,请告诉我您是否知道为此记录了任何功能请求?

欢迎任何建议/澄清..

4

5 回答 5

17

在 chrome (v18+) 中,我们有--kiosk --kiosk-printing开关。无需打印确认即可自动打印到默认打印机。

您可以从这个视频中看到它http://www.youtube.com/watch?v=D6UHjuvI7IE

于 2012-02-16T23:20:33.970 回答
1

由于 NPAPI 允许您创建可以通过对象标签(您可以从扩展中使用)与之交互的本机 C++ 插件,因此这可能就是这样做的方式。

棘手的一点是,我不知道获取打印页面的好方法。我所知道的唯一一个做过类似事情的人实际上得到了浏览器的窗口句柄(可通过 NPAPI 获得)并从它上面刮掉一些东西以便以这种方式打印,但这不会考虑打印样式表或任何东西. 您也可以尝试使用自动化事件来尝试控制打印对话框,但我不知道这是否可行。

根据设计,浏览器尽量不让你做这样的事情,因为如果任何网站可以在没有确认的情况下开始打印东西到你的打印机,它可能会打开一些严重的漏洞......

无论如何,如果您找到使用 C++ 的方法,您可以使用FireBreath来简化 NPAPI 插件的创建。

于 2011-01-31T16:40:30.413 回答
0

有多种扩展可以对当前网页进行快照(例如,这个);您可以调整一个通过 NPAPI 插件将图像发送到打印机。

于 2011-01-31T15:02:21.963 回答
0

我最近一直在寻找类似的能力,而且使用 Chrome 的新原生消息传递 API 似乎很有可能。

https://developer.chrome.com/extensions/nativeMessaging

使用 C# 有很多这样的示例,但这里有一个使用基本 C# 应用程序对 Chrome 原生消息进行故障排除的快速示例

用 C# 编写的从 chrome 扩展到本机主机的本机消息传递

我意识到这可能迟到了一天,而且还少了一美元,但万一其他人遇到这个问题,这就是对我有用的解决方案。从 C# 应用程序内部,您可以使用PrintDocument该类直接打印到已安装的打印机。如果您想出一种获取页面图像的方法,这将比使用 firebreath 或 NPAPI 容易得多。

于 2015-06-16T01:55:49.110 回答
0

在 Mac 上的 Google Chrome 中禁用打印预览

  1. 退出谷歌浏览器
  2. 在 Mac 上启动终端。(使用搜索框搜索“终端”)
  3. 键入默认值 write com.google.Chrome DisablePrintPreview -bool true
  4. 关闭终端并打开谷歌浏览器

在 Windows 上的 Google Chrome 中禁用打印预览

  1. 关闭谷歌浏览器
  2. 在您的桌面上,右键单击 Google Chrome
  3. 单击属性
  4. 在对话框中,在 Target 字段的末尾添加“-disable-print-preview”,去掉撇号(确保在 - 之前包含空格)
  5. 单击应用

在 Mac 上的 Firefox 中禁用打印预览

  • 在地址栏中输入“about:config”,然后按 Enter。
  • 右键单击页面,将鼠标悬停在“新建”上,然后单击“布尔”</li>
  • 键入“print.always_print_silent”作为首选项名称,然后单击“确定”</li>
  • 单击“真”,然后单击“确定”。
  • 关闭 about:config 窗口。

在 Windows 上的 Firefox 中禁用打印预览

  1. 在地址栏中输入“about:config”,然后按 Enter。
  2. 右键单击页面,将鼠标悬停在“新建”上,然后单击“布尔”类型
  3. “print.always_print_silent”作为首选项名称,然后单击“确定”</li>
  4. 单击“真”,然后单击“确定”。
  5. 关闭 about:config 窗口。

https://support.dryfta.com/how-to-disable-print-preview-in-chrome-firefox-on-windows-mac/

于 2021-08-13T05:54:06.200 回答