2013-02-26 68 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