Asu*_*Asu 21 javascript printing pdf iframe
我有一个iframe需要直接指向PDF文件(不是带有PDF的页面):
<iframe id="ecard-pdf" name="ecard-pdf" style="position: absolute;" src="/profile.pdf">
</iframe>
Run Code Online (Sandbox Code Playgroud)
我希望能够在此iFrame中打印PDF
我在其他问题中找到了几个不符合我需求的解决方案:
但是,如果iframe的src直接指向PDF而不是包含在PDF周围的页面,似乎FireFox和IE无法执行此操作.
Firefox:
它不显示打印,而是显示此对话框:"使用"确定"和"取消"按钮显示"防止此页面创建其他对话框",两者都不打印PDF.
IE:
只是忽略了我使用上述方法进行打印的尝试.
问题:
我怎样才能允许用户在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);
});
Run Code Online (Sandbox Code Playgroud)
...干杯。
选项1:
我还没有测试过这个,但我在这里找到了另一个答案: https: //stackoverflow.com/a/4096547/2528978
假设您可以使用以下内容:
<style type="text/css" media="print">
body *{display:none}
iframe{display:block}
</style>
Run Code Online (Sandbox Code Playgroud)
那么只显示pdf?
选项2:
创建指向 pdf 文件的超链接,其中显示“打印我”
<a href='Path/To/PDF'>Print Me</a>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
-安德鲁
归档时间: |
|
查看次数: |
25157 次 |
最近记录: |