谷歌浏览器扩展程序:无声打印页面
我正在开发一个内部谷歌浏览器扩展程序,它需要一种方法来启动将当前页面打印到打印机。我不想让默认的打印对话框出现(所以,javascript:window.print()是没有问题的)。谷歌浏览器扩展程序:无声打印页面
据我所知,这是不可能的只是与JS + HTML插件,所以我也打开使用NPAPI插件(与虚拟MIME类型)。我只关心Windows平台。
如果可能的话,我也开放各种黑客/解决方法,虽然标准的解决方案会很好。
如果您认为这不可能,请告诉我您是否知道记录的任何功能请求?
任何建议/澄清欢迎..
由于NPAPI允许您创建本地C++插件,您可以通过对象标签(您可以从扩展中使用该对象标签)进行交互,这可能是实现它的方法。
棘手的是我不知道获取打印页面位的好方法。我所知道的唯一一个做过类似这个事情的人实际上得到了浏览器的窗口句柄(可通过NPAPI获得),并从中删除了这些字符以便打印,但这不会考虑打印样式表或任何东西。您也可以尝试使用自动化事件来尝试控制打印对话框,但我不知道这是否会起作用。
在设计上,浏览器尽量不要让你做这样的事情,因为它可以打开一些严重的漏洞,如果任何网站都可以直接开始打印的东西到您的打印机没有确认...
无论如何,如果你找到一种方法可以用C++来实现,你可以使用FireBreath来简化NPAPI插件的创建。
在铬(v18 +)我们有--kiosk --kiosk-printing
交换机。人们可以自动打印到默认打印机而无需打印确认。
我最近一直在寻找类似的能力,看到它,它似乎将使用Chrome的新的本地消息API是完全可能的。
https://developer.chrome.com/extensions/nativeMessaging
有很多用C#这样的例子,但这里是一个基本的C#应用程序
Native messaging from chrome extension to native host written in C#
我意识到这可能是一个故障排除Chrome原始消息的一个简单的例子一天晚,一美元一短,但如果有其他人遇到这个问题,这是为我工作的解决方案。从C#应用程序中,您可以使用PrintDocument
类直接打印到安装的打印机。如果你想出了一种获取页面图像的方法,这比使用firebreath或NPAPI要容易得多。
你有没有完成扩展?这正是我正在寻找的... – 2014-05-09 14:26:02
不,我无法进行无声打印。 ( – 2014-05-12 10:40:20