为什么不能这样做?我花了两天时间研究它。它是不可能做到的!
Chrome的最新版本确实允许父窗口访问PDF的iframe。但是FF或IE都不允许我触摸包含" application / pdf"的iframe。在它上面。
代码很简单:
<iframe id="pdfFrame" src="/mydomain/document.pdf"></iframe>
如果我打电话:
pdfFrame.contentWindow.print();
FF说:
Error: Permission denied to access property 'print'
IE说:
SCRIPT65535: Invalid calling object
之前有没有人遇到过同样的情况?有没有人设法解决它?有没有人有不同的建议?我只想从自己的域名下载PDF并将其优雅地发送到打印机。
我尝试使用CSS @media格式化我的文档。但这一团糟。只要打印文档的一半,无论我将框架设置为100%翻转。
谢谢!
答案 0 :(得分:2)
使用以下html显示pdf。 iframe用于镀铬打印
<object id="exPDF" type="application/pdf" data="pdfUrl#toolbar=1&navpanes=0&statusbar=0&messages=0" style="width:100%;height:475px;" >
<iframe id="iframePDF" name="iframePDF" src="pdfUrl" width="1" height="1" >
//javascript
try {
if (isChrome) {
var iframe = document.getElementById('iframePDF');
if (iframe.src) {
var frm = iframe.contentWindow;
frm.focus();// focus on contentWindow is needed on some versions
frm.print();
}
}
else {
var _pdf_o = document.getElementById('exPDF');
if (_pdf_o != undefined) {
_pdf_o.print();
}
else {
alert("pdf object not found");
}
}
} catch (e) {
alert(e.description);
}
答案 1 :(得分:0)
这是一个混乱的解决方案,取决于您的经验深度。但是,我建议在iframe内容上添加一个窗口事件监听器。然后在父窗口上发出消息/发布消息。然后,当在iframe上拾取消息时,让该页面打印出pdf,然后应该在同一级别上。 当然,我实际上并没有亲自完成这项工作,但我使用了在iframe之间来回传递的广义事件监听器/帖子消息。
也许你在iframe中没有任何HTML,如果它只是pdf的直接链接,请先尝试另一个答案。
一个开始的好地方: https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage