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

时间:2012-12-01 04:09:02

标签: javascript pdf iframe printing

我有一个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. 那些
  5. 的变化

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

    火狐

    它不显示打印,而是显示此对话框:“使用”确定“和”取消“按钮显示”阻止此页面创建其他对话“,这两个按钮均不打印PDF。

    IE

    忽略了我使用上述方法进行打印的尝试。

    问题

    我怎样才能允许用户在iFrame中打印PDF,无论他们使用什么浏览器?

5 个答案:

答案 0 :(得分:4)

我一直在努力寻找适用于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 :(得分:1)

正如similar question的答案所示,您可以这样做:

window.frames.pdfFrame.print();

这可以解决您的问题。

答案 2 :(得分:0)

选项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>

希望这会有所帮助......

-Andrew

答案 3 :(得分:0)

这似乎有效:

   <style type="text/css" media="print">
   body *{display:none}
   iframe{display:block}
   </style>

那么只显示pdf?

答案 4 :(得分:-1)

您可以直接使用窗口打印选项。 使用onclick选项

的onclick = “JavaScript的:window.print();”