16

我有一个“打印”按钮,它调用以下 JavaScript

window.frames.myPdfFrame.print();

其中“myPdfFrame”指的是带有 PDF 的 iframe。

在 Chrome 和 Firefox 18(及更低版本)中,这会按预期打开打印对话框,但从 Firefox 19 开始,我收到以下错误

Error: Permission denied to access property 'print'

我认为这与使用Firefox 19 发布的嵌入式 PDF 查看器有关,而不是与 Adob​​e 插件有关。使用 PDF 插件工具栏中的打印图标可以按预期工作。

有没有办法从 Javascript 调用 Firefox 19 中的内联 PDF 上的打印对话框?

4

3 回答 3

5

我尝试了使用 Firefox 22和 NoScript提供的JSFiddle 演示。有趣的是,当我第一次打开 fiddle 时,iframe 的内容被 NoScript 阻止了,但打印对话框却很容易弹出!我单击“确定”,然后我得到一个任务栏吐司,说文档about.blank已发送到打印机。果然,我检查了打印机,它吐出了一张漂亮的白页。没用...

现在,在告诉 NoScript“暂时允许”PDF (irs.gov) 的域之后,我重现了这个错误:

Error: Permission denied to access property 'print'

这个另一个问题让我想知道这是否是同源政策的问题。所以我在我自己的网络服务器上测试了它,在同一台机器上托管了一个 PDF 文档。而且......没有骰子!

然后我在 IE 9 和 Chrome 中尝试了我的测试页面。它们都显示了打印对话框,但是当我打印文档时,在 IE 9 的情况下,它实际上是在打印 about:blank,而 Chrome 打印一个灰色的矩形,上面写着“正在加载”......看起来它正在打印整个页面,而不仅仅是 iframe 中的文档。

所以,我同意 Jason Sperske 的观点,这似乎是不可能的。

更新这个答案提供了一个“正常工作”的解决方案,但仅适用于Fpdf 库生成的 PHP 文件......

于 2013-07-30T08:54:11.753 回答
2

在最新版本的 Firefox(自 19 起)上,您必须在about:config. 将pdfjs.disabled属性设置为true,您将看到使用您的脚本出现的打印窗口。

如果开始下载,请将plugin.disable_full_page_plugin_for_types属性设置为application/pdf.

于 2014-02-01T17:11:46.460 回答
1

请尝试以下代码,它正在工作:

window.frames.myPdfFrame.focus();
window.print();
于 2013-08-06T06:12:44.143 回答