[英]how can i print this java script code in google chrome browser
[英]How can i print a pdf in google chrome?
我有一個與按鈕相關的pdf。 當我點擊按鈕我想要打印pdf。 這是我的按鈕編碼方式:
<input type="submit" class="btn-red" value="Print"
name="Submit" id="printbtn"
onclick="printPDF('http://www.irs.gov/pub/irs-pdf/fw4.pdf')" />
現在我的打印功能如下:
function printPDF(pdfUrl)
{
if ((navigator.appName == 'Microsoft Internet Explorer') )
window.print(pdfUrl,"_self");
else
{
var w = window.open(pdfUrl,"_self");
w.print();
w.close();
}
}
問題是,它在IE和Fire fox中運行良好,但在chrome中不起作用。 在ie和Firefox中,它打開了xps打印機選項,但是在chrome中,它只是打開一個新的打印窗口,帶有div的打印預覽,而不是pdf。 但我希望在這里打開xps選項。
編輯:當我嘗試打印時,在Chrome中,只有html元素作為預覽而不是pdf。 我使用的是chrome版本:20.0.1132.57
我怎樣才能擺脫這種特殊性? 善意的幫助。
這對我有用,不需要主機HTML文件。 關鍵是等待onload:
對於這樣的鏈接:
<a class="print-pdf-link" href="/your/pdf.pdf">Print PDF</a>
我用javascript:
$('a.print-pdf-link').click(function () {
var w = window.open($(this).attr('href'));
w.onload = function () {
w.print();
};
return false;
});
我不得不做同樣的事情,我使用了一種不同的方法,一種適用於Chrome和Firefox的方法。
我的解決方案涉及一個print.html幫助文件,它接收PDF文件的url作為GET類型參數,然后將pdf加載到iframe中。 然后它繼續檢查pdf是否已完全加載(將檢查綁定到onload
事件不起作用),並在完成時觸發print方法。
這里:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
<title>Print Page</title>
<meta name="title" content="Print" />
<script>
(function (window, document, undefined) {
var printy = {
urlGET: function (param) {
var params = document.URL.split('?');
if(params.length > 1) {
params = params[1].split('&');
for (var i = 0, len = params.length; i < len; i++) {
if (params[i].split('=')[0] === param) {
return params[i].split('=')[1];
}
}
}
return null;
},
init: function () {
var self = this;
window.onload = function () {
var src = self.urlGET('path');
//creating an iframe element
var ifr = document.createElement('iframe');
document.body.appendChild(ifr);
// making the iframe fill the viewport
ifr.width = '100%';
ifr.height = window.innerHeight;
// continuously checking to see if the pdf file has been loaded
self.interval = setInterval(function () {
if (ifr.contentDocument.readyState === 'complete') {
clearInterval(self.interval);
// doing the actual printing
ifr.contentWindow.print();
}
}, 100);
ifr.src = src;
}
}
}
printy.init();
})(window, document, undefined);
</script>
</head>
<body>
</body>
</html>
但是,此解決方案未在IE上進行測試。 我們在工作時使用Mac,因此不能選擇。
為了進行打印,我通過調用這樣的URL來使用它: http://example.com/print.html?path=docs/myfile.pdf
: http://example.com/print.html?path=docs/myfile.pdf
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.