2

我正在开发一个需要与多浏览器兼容的项目,但我遇到了一个问题,导致 Adob​​e Reader 打印对话框被激活并在除 IE 之外的所有其他浏览器中显示。我使用对象标签将 PDF 嵌入到浏览器中,如下所示:

<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 is not a function”。使用 Chrome,我收到错误“未捕获的类型错误:对象#没有方法打印。

有谁知道如何使用这些其他浏览器来实现这一点?您的回答将不胜感激。

詹姆士

4

1 回答 1

0

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

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

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

然后将您的 pdf 嵌入 iframe 中:

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

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

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

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

于 2014-08-26T08:42:37.343 回答