Firefox 19从JavaScript打印PDF

Gar*_*wen 16 javascript pdf firefox

我有一个"打印"按钮,可以调用以下JavaScript

window.frames.myPdfFrame.print();
Run Code Online (Sandbox Code Playgroud)

其中"myPdfFrame"指的是带有src的PDF的iframe.

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

Error: Permission denied to access property 'print'
Run Code Online (Sandbox Code Playgroud)

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

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

Mik*_*ert 5

我尝试使用Firefox 22 和NoScript提供的JSFiddle演示.有趣的是,当我第一次打开小提琴时,iframe的内容被NoScript阻止,但打印对话框很快就出现了!我点击"确定",我得到一个任务栏吐司,说文件about.blank被发送到打印机.果然,我检查了打印机,它吐了一个漂亮的白页.没有用...

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

Error: Permission denied to access property 'print'
Run Code Online (Sandbox Code Playgroud)

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

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

所以,我同意Jason Sperske认为这似乎不可行.

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