【问题标题】:Print embedded PDF with Javascript fails使用 Javascript 打印嵌入的 PDF 失败
【发布时间】:2012-05-27 23:43:22
【问题描述】:

我正在处理一个需要与多浏览器兼容的项目,但我遇到了一个问题,导致 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 我收到错误“未捕获的类型错误:对象#没有方法打印。

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

詹姆斯

【问题讨论】:

  • 我们已经成功地在 pdf 中嵌入了一个 javascript 来激活打印对话框

标签: javascript firefox google-chrome pdf printing


【解决方案1】:

我知道这是一个老问题,但过去一周我一直在寻找解决方案。问题是如果页面的 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 中执行检查以查看用户使用的浏览器。 希望这会有所帮助,它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2015-01-08
    • 2012-03-31
    • 1970-01-01
    • 2010-11-01
    • 2012-01-28
    • 1970-01-01
    相关资源
    最近更新 更多