通过 Javascript 打印在 IFrame 中加载的 PDF
Print a PDF loaded in IFrame via Javascript
为什么不能这样做?我花了2天时间研究它。只是做不到!
最新版本的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%一切,都只打印文档的一半。
谢谢!!
使用以下 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);
}
这是一个混乱的解决方案,具体取决于您的经验深度。 但是,我建议在 iframe 内容上添加一个窗口事件侦听器。 然后在父窗口上发出消息/发布消息。 然后,当在 iframe 上拾取消息时,让该页面打印出 pdf,然后应该处于同一级别。当然,我个人实际上并没有这样做,但我使用过在 iframe 之间来回切换的通用事件侦听器/发布消息。
也许你在iframe中没有任何HTML,如果它只是一个直接链接到pdf,请先尝试使用另一个答案。
也许是一个很好的起点:https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage
相关文章:
- 在iframe中加载pdf时,iframe未触发加载事件
- 等待图标,用于通过 ashx 处理程序在浏览器中加载 pdf
- 使用react webpack文件加载器提供静态pdf
- 当浏览器请求部分内容范围请求时,如何检测pdf何时加载到iframe中
- 加载PDF文件/网址在Safari浏览器中显示黑屏
- 通过 Javascript 打印在 IFrame 中加载的 PDF
- 使用2个下拉选项构建表单,用于加载特定的PDF
- 将 pdf 加载到 Blob 并创建网址
- PHP/HTML:下载PDF链接处理页面加载
- 如何在不使用 PDFtron 中使用 XOD 的情况下直接加载.PDF文件作为 initialDoc
- 如何异步加载 PDF 页面
- 如何检查iframe是否已完全加载PDF文件
- 从远程url加载pdf以Mandrill附件的形式发送
- 如何在Canvas上加载Pdf文件作为image.src
- 如何在移动设备上停止加载pdf
- 服务器级SDK,可以加载PDF文件并执行计算和验证代码片段
- 需要在新标签中加载pdf/doc文件,而不是下载,只是想在浏览器中阅读
- 使用PDF.js查看器在特定页面加载PDF
- 谷歌地图图像不加载PDF
- PDF .js不使用绝对路径加载PDF.只对相对路径有效