[英]Javascript .print() Failing with IE11 for type application/pdf
我制作了一个我在我的网站上使用了一段时间的代码示例,现在在从 IE11 和 Windows 8.1 运行时出现问题。
问题是当 javascript 方法 .print() 不再被调用时,打印窗口不会弹出。
<html>
<head></head>
<body onload="window.document.getElementById('PDFDoc').print();">
<object id='PDFDoc' name='PDFDoc' type='application/pdf' data='Hello World.pdf' height="369" width="266" style="border-width:thin;border:#CCCCCC" >
</object>
</body>
</html>
我发现这篇文章讨论了类似的事情,但我自己无法将其用作修复程序。
PS:我会上传Hello World pdf但stackoverflow不允许我所以只使用任何pdf来复制错误。
在调试模式下,我得到错误object doesn't support property or method 'print'
我知道self.print()
可以工作,但我不确定如何将其调整到此代码中以打印 pdf 而不是整个 html 页面。 有没有其他方法可以解决这个问题?
虽然这是一个很老的问题,但这里有一个非常有效的优秀解决方案。 使用 IE11 v11.1039.17763.0(在 IE10 模式下)、Google Chrome v80.0.3987.132、MS Edge v44.17763.831.0 和 MS Edge(在 Chromium 上,测试版)v81.0.416.20 进行测试,均在 Win10 下。
此解决方案使用给定的 pdf 文件直接打开浏览器的打印对话框。
<object id="objectPdf" data="my.pdf" type="application/pdf" width="1" height="1">
alt : <a href="my.pdf">my.pdf</a>
</object>
<iframe id="iFramePdf" src="my.pdf" style="display:none;"></iframe>
<input type="button" value="Print PDF" onclick="printTrigger();" />
<script type="text/javascript">
function printTrigger() {
try {
document.getElementById('objectPdf').printWithDialog();
} catch(e) {
document.getElementById('iFramePdf').contentWindow.print();
}
}
</script>
请注意,提供的解决方案性能不佳,因为它发起了三个而不是一个 HTTP 请求!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.