使用Javascript打印嵌入式PDF失败

时间:2012-05-21 13:07:42

标签: javascript firefox google-chrome pdf printing

我正在开发一个项目,我需要与多浏览器兼容,我遇到一个问题,导致Adobe Reader打印对话框被激活并显示在IE以外的所有其他浏览器中。我使用像这样的对象标签将PDF嵌入到broswer中:

<object id="pdfObj" type="application/pdf" style="width:60%;height:95%;position:relative;top:2%;left:0%;right:10%;bottom:10%;margin:0px;padding:0px;border:0px;" data="PDFView.aspx"></object>

我使用jQuery捕获打印链接的点击:

                $('#PrintLink').click(function () {
                $("#pdfObj")[0].print();
            });

这适用于IE,但是当在Firefox中运行时,Web Developer工具运行错误“$(”#pdfObj“)[0] .print不是函数”被捕获。使用Chrome,我收到错误“Uncaught TypeError:Object#没有方法打印。

有谁知道如何通过这些其他浏览器实现这一目标?你的回答将不胜感激。

詹姆斯

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但过去一周我一直在寻找解决方案。问题是如果页面的URL不以www开头,Firefox将不允许您访问该元素。尝试将此脚本添加到页面顶部:

<script type="text/javascript">
    if ( location.host.toLowerCase().substring(0,3) != "www" )
    {
        location.href = location.href.replace( /\/\//, "//www." );
    }
</script>

这会将用户重定向到相同的网址,但会添加www。到了它的开始。

然后将您的pdf嵌入iframe:

<iframe id="iframe" src="myPDF.pdf" width="200" height="500"></iframe>

然后你可以使用这个javascript函数来打印PDF:

document.getElementById("iframe").contentWindow.print();

如果您需要IE和Safari的不同代码,您可以执行JavaScript检查以查看用户拥有的浏览器。 希望这有帮助,它对我有用。