[英]How to print PDF from IFRAME if src = pdf?
我有一个 iframe,它需要直接指向 PDF 文件(不是带有 PDF 的页面):
<iframe id="ecard-pdf" name="ecard-pdf" style="position: absolute;" src="/profile.pdf">
</iframe>
我希望能够在此 iFrame 中打印 PDF
我在其他不符合我需求的问题中找到了几个解决方案:
但是,如果 iframe 的 src 直接指向 PDF 而不是环绕 PDF 的页面,则 FireFox 和 IE 似乎无法执行此操作。
火狐:
它没有打印,而是显示此对话框:“防止此页面创建其他对话框”,带有“确定”和“取消”按钮,这两个按钮都不会打印 PDF。
浏览器:
只是忽略了我使用上述方法打印的尝试。
问题:
无论用户使用什么浏览器,如何允许用户在 iFrame 中打印 PDF?
我一直在努力寻找适用于 IE 和 Chrome 的解决方案。 这对我有用:
$(function() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
var trident = ua.indexOf('Trident/');
var edge = ua.indexOf('Edge/');
var url = '/url/to/file.pdf';
var pdf ='';
var style = 'position:fixed; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden;';
if(msie > 0 || trident > 0 || edge > 0){
pdf = '<object data="' + url + '" name="print_frame" id="print_frame" style="' + style + '" type="application/pdf">';
}
else{
pdf ='<iframe src="' + url + '" name="print_frame" id="print_frame" style="' + style + '"></iframe>';
}
$(document.body).append(pdf);
setTimeout(function(){
window.frames["print_frame"].focus();
window.frames["print_frame"].print();
},2000);
});
...干杯。
选项1:
我还没有测试过,但我在这里找到了另一个答案: https : //stackoverflow.com/a/4096547/2528978
假设您可以使用以下内容:
<style type="text/css" media="print">
body *{display:none}
iframe{display:block}
</style>
那么只显示pdf?
选项 2:
制作指向“打印我”的 pdf 文件的超链接
<a href='Path/To/PDF'>Print Me</a>
希望这可以帮助...
-安德鲁
这似乎有效:
<style type="text/css" media="print">
body *{display:none}
iframe{display:block}
</style>
那么只显示pdf?
const target_iframe = $("#pdfViewerIframe")
target_iframe.attr("src", URL.createObjectURL(new Blob([resp], {
type: "application/pdf"
})))
target_iframe[0].contentWindow.print()
注意: resp
是您从服务器获得的 pdf
您可以直接使用窗口打印选项。 使用点击选项
onclick="javascript:window.print();"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.