【问题标题】:Printing from Firefox add-on SDK?从 Firefox 附加 SDK 打印?
【发布时间】:2012-06-07 14:40:21
【问题描述】:

是否可以从 Firefox 附加 SDK 进行打印?我浏览了附加 SDK 在线文档,但似乎找不到任何相关内容。

我想做的是从网页(存储在 Javascript 变量中的 PDF 文件)中检索一些数据,然后使用该文件打开系统打印机对话框。

这个可以吗?

【问题讨论】:

    标签: firefox printing firefox-addon add-on


    【解决方案1】:

    附加 SDK 没有任何内置的打印功能。当然,您可以使用chrome authority 做很多事情,例如给定一个浏览器窗口,您可以获得当前打开的窗口的nsIWebBrowserPrint interface 并打印它:

    var browserPrint = browserWnd.gBrowser
                                 .contentWindow
                                 .QueryInterface(Ci.nsIInterfaceRequestor)
                                 .getInterface(Ci.nsIWebBrowserPrint);
    
    browserPrint.print(null, listener);
    

    但问题仍然是您需要在浏览器中打开一个网页才能打印它。然而,浏览器不会打开 PDF 文件,这是由插件完成的 - 只有插件(浏览器无权访问)才能打印它。你可以往pdf.js的方向看,但它仍处于早期开发阶段。

    page-worker package 看起来是一种将页面加载到隐藏窗口以便打印的明显方法。唯一的问题 - 要访问 nsIWebBrowserPrint,您需要从插件访问页面的 window 对象(不是内容脚本,它没有必要的权限)。 p>

    【讨论】:

    • 嗯,实际上我 am 使用加载了脚本标签的 pdf.js —— 所以我在页面中的 Javascript 二进制数组中有 PDF 文件(通过 AJAX)。但显然我不能将它发送到打印机。所以我在想的是构建一个小插件,它可以接收保存 PDF 文件的数组,并在假设操作系统可以打印 PDF 文件的情况下使用操作系统打印 API 打印它。这有意义吗?
    • 操作系统无法打印 PDF 文件 - PDF 阅读器可以(Acrobat Reader、Foxit Reader 等)。与其试图弄清楚如何与它交谈,不如在某种程度上创建一个隐藏的<xul:browser> 元素,将您的 PDF 数据与pdf.js 一起加载到其中并按照我上面解释的方式打印。
    • 是的,你说得对,弗拉基米尔。但这一切的真正目的是避免使用 Adob​​e Reader 插件。它在 Firefox/Linux 中很糟糕,在 Mac OS/X 上不存在。Chrome 内部 PDF 渲染器的类似故事。它充其量在 Linux 上很烂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多