【问题标题】:Google Chrome Extension: Print the page silentlyGoogle Chrome 扩展程序:静默打印页面
【发布时间】:2011-06-18 12:12:43
【问题描述】:

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

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

如果可能,我也愿意接受各种黑客/变通方法,但标准解决方案会很好。

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

欢迎任何建议/澄清..

【问题讨论】:

  • 你完成过扩展吗?这正是我正在寻找的......
  • 不,我无法为静默打印做任何事情。 :(
  • 在 Windows 上禁用 Google Chrome 中的打印预览 关闭 Google Chrome 从您的桌面,右键单击 Google Chrome 单击属性 在对话框中,在目标字段末尾添加“--disable-print-preview”没有撇号(确保在 - 之前包含空格)点击 Apply support.dryfta.com/…

标签: printing google-chrome-extension npapi


【解决方案1】:

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

【讨论】:

  • 在不使用屏幕截图的情况下,您是否知道/想到了其他方法?另外,您能否提供有关如何在 Windows 上“将图像发送到打印机”的信息/链接?
  • 我没说截图;去看看我链接的插件。它实际上将页面(包括滚动到视图之外的部分)呈现为图像,它不截取屏幕截图。
  • 如果您需要学习如何在 Windows 上编写本机打印代码,我建议您发布一个新问题;它与 Chrome 扩展和 NPAPI 完全无关。
【解决方案2】:

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

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

根据设计,浏览器尽量不让您执行此类操作,因为如果任何网站未经确认就开始将内容打印到您的打印机,这可能会导致一些严重漏洞...

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

【讨论】:

  • “棘手的一点是我不知道获取用于打印页面的位的好方法。”
【解决方案3】:

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

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

【讨论】:

  • chrome://flags 中是否也提供这些选项?还是它们只是命令行?
  • Chrome 不适用于我们的标签打印机。如果 IE 有类似的开关那就太好了!
  • 视频不可用
【解决方案4】:

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

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

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

Native messaging from chrome extension to native host written in C#

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

【讨论】:

    【解决方案5】:

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

    1. 退出谷歌浏览器
    2. 在 Mac 上启动终端。 (使用搜索框搜索“终端”)
    3. 类型默认写入 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”并回车。
    • 右键单击页面,将鼠标悬停在“新建”上,然后单击“布尔”
    • 键入“print.always_print_silent”作为首选项名称,然后单击“确定”
    • 点击“true”,然后点击“OK”。
    • 关闭 about:config 窗口。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多