gpt4 book ai didi

javascript - 如果 src = pdf,如何从 IFRAME 打印 PDF?

转载 作者:行者123 更新时间:2023-12-03 03:26:14 24 4
gpt4 key购买 nike

我有一个 iframe,需要直接指向 PDF 文件(而不是包含 PDF 的页面):

<iframe id="ecard-pdf" name="ecard-pdf" style="position: absolute;" src="/profile.pdf">
</iframe>

我希望能够在此 iFrame 中打印 PDF

我在其他问题中找到了几种不符合我需求的解决方案:

  1. 要求 iframe 中有一个函数( https://stackoverflow.com/a/473270/1246369 )
  2. 建议聚焦框架,然后对其执行打印操作( https://stackoverflow.com/a/9616706/1246369 )
  3. 访问 iframe 的 contentWindow 并打印它( https://stackoverflow.com/a/9617566/1246369 )
  4. 这些的变体

但是,如果 iframe 的 src 直接指向 PDF 而不是指向 PDF 周围的页面,则 FireFox 和 IE 似乎无法执行此操作。

火狐:

它不打印,而是显示此对话框:“防止此页面创建其他对话框”,并带有“确定”和“取消”按钮,这两个按钮都不会打印 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);
});

...干杯。

关于javascript - 如果 src = pdf,如何从 IFRAME 打印 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13656271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com