我如何在谷歌浏览器打印pdf
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和火狐中工作良好,但在chrome中不起作用。在ie和Firefox中,它打开了xps打印机选项,但在chrome中,它只打开了一个新的打印窗口,打印预览div而不是pdf。但是我想在这里打开xps选项
EDIT:在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
事件不起作用),并在完成时触发打印方法。
:
<!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
相关文章:
- 使用 JavaScript 打印 PDF
- IE9 在 iframe 中打印 PDF 时出现“无效调用对象”
- 如何从 InAppBrowser (PhoneGap) 打印 PDF 数据
- 在不打开打印对话框的情况下打印 pdf 文档
- JS打印pdf文件
- 使用 javascript 在 IFrame 中打印 PDF 文件,仅获取一页
- 从 iframe 打印 pdf 文件
- 从 javascript 嵌入标记打印 Pdf
- 从 aspx 页面内部打印 PDF
- 在jsp中查看和打印pdf文件
- 使用嵌入式javascript自动打印pdf
- 直接从web在本地驱动器中打印pdf文件
- 在IFrame中打印PDF后自动关闭窗口
- 使用window.Print在IE中打印PDF
- 使用Jquery打印PDF而不是页面
- iPad:如何在javascript的iframe中打印pdf
- 在火狐中打印 PDF
- 可能的方式来加载和打印PDF按钮上点击使用javascript
- PHP打印PDF文件到指定的网络打印机而不打开对话框
- 如何在页面加载时打印pdf文件,使用javascript或jquery