2013-02-26 69 views
2

我正在仓库中的终端上构建在Firefox中运行的应用程序。此应用程序需要打印PDF文件。使用Javascript在Firefox中打印PDF

我发现了很多关于从Javascript打印PDF的问题和答案,但我无法让它工作。

这是我现在的代码。

$(document).ready(function() { 
    $(document.body).append('<IFRAME id="pdfLabel" ... >'); 
    $('iframe#pdfLabel').attr('src', 'testlabel.pdf'); 

    $('iframe#pdfLabel').load(function() { 
     document.getElementById('pdfLabel').focus(); 
     document.getElementById('pdfLabel').contentWindow.print(); 
    }); 
}); 

随着iFrame中的常规HTML页面,此代码完美地工作。使用PDF时,PDF将显示在iFrame中,但不会打印。我尝试使用内置PDF渲染器的Firefox以及嵌入式Adobe Acrobat Reader进行打印。我也试过

document.getElementById('pdfLabel').print(); 

但抛出 TypeError: window.frames.pdfLabel.print is not a function

+1

由于您使用的是'id'选择器,因此您不需要在选择器开头处的'iframe',只需使用'$(“#pdfLabel”)'。你可以在'.load'函数中放一个'console.log('here');'?我知道你说过它加载,但只是为了确保你的'.load'代码正在运行。此外,您可能需要设置'src'属性_after_绑定'.load'事件 – Ian 2013-02-26 23:15:07

+1

给予pdf加载一段时间。可能使用setTimeout – allenhwkim 2013-02-27 00:05:24

+0

@Ian'.load'正在运行,我检查了。绑定load事件后,我设置了'src'属性,但没有帮助。 @ bighostkim试了一下,没有帮助。谢谢你们的建议。 – 2013-02-27 17:04:35

回答

5

。 。令人遗憾的是,Firefox 19附带的PDF.js版本不支持内置JavaScript来自行打印文档,也不允许您访问PDF窗口内的任何内容(包括打印方法)。

。 。 They are aware of the problem,并且计划修复Firefox的版本21。

+0

您链接到的错误被标记为固定,但是,您仍然无法使用javascript在Firefox(截至v39)中打印,至少据我所知。 – L84 2015-07-01 01:30:22

+0

@Lynda,你有没有试过这两种选择(用JavaScript和self.print()JS代码片断自我打印?)。我最近没有必要检查PDF和自我打印,但他们确实发布了补丁。也许有人应该重新开放这个问题或者开一个新的问题。 – 2015-07-21 23:02:04

+0

[他们知道](https://github.com/mozilla/pdf.js/issues/5397)。这个链接只是我在此发现的许多网页的一个例子。这个补丁的确按照你的说法出货,但是,从我读过的这个补丁并没有解决所有的问题。 – L84 2015-07-22 01:56:49