【问题标题】:Print a PDF via an iframe in Chrome/Firefox/IE在 Chrome/Firefox/IE 中通过 iframe 打印 PDF
【发布时间】:2013-05-12 19:00:25
【问题描述】:

我想触发我加载的 PDF 文件和 iframe 的打印。

环顾四周,我想出了以下一点

<iframe name="pdfname" id="pdfid"></iframe>

<button id="printbtn">Print</button>

<script language="javascript" type="text/javascript">
    $(document).ready(function () {

        $("#pdfid").load(function() {
            window.frames["pdfname"].focus();
            window.frames["pdfname"].print();
        });

        $("#printbtn").click(function () {
            $("#pdfid").attr("src", '@Url.Action("PdfTest", "Home")');
        });
    });
</script>

这在 Chrome 中完美运行。

在 Firefox 中,我收到以下错误(我在某处读到这是一个应该在版本 21 中修复的错误,但事实并非如此)

访问属性“打印”的权限被拒绝

在 Internet Explorer 10 和 9 中,我收到以下错误

调用对象无效

这似乎指向我的 MVC 操作生成的 PDF。

我看到过很多与我类似的问题的帖子,但到目前为止还没有找到可行的解决方案。

我真正想知道的是 RADPDF 如何设法让它在每个浏览器中都能正常工作

Click the print button on this page

我知道这可以做到,我需要你们的帮助!

干杯

【问题讨论】:

  • 嗨,你有没有想过这个问题?愿意分享吗?

标签: internet-explorer google-chrome firefox pdf iframe


【解决方案1】:

尝试以下方法,可能适用于所有浏览器。 (我只用 IE8 和 chrome 测试过)

<style type="text/css">
    @media print 
    {
        .dontprint{display:none} 
    }
</style>
<script type="text/javascript">
    function printIframePdf(){
        window.frames["printf"].focus();
        try {
            window.frames["printf"].print();
        }
        catch(e){
            window.print();
            console.log(e);
        }
    }
    function printObjectPdf() {
        try{            
            document.getElementById('idPdf').Print();
        }
        catch(e){
            printIframePdf();
            console.log(e);
        }
    }

    function idPdf_onreadystatechange() {
        if (idPdf.readyState === 4)
            setTimeout(printObjectPdf, 1000);
    }
</script>
<div class="dontprint" >
    <form><input type="button" onClick="printObjectPdf()" class="btn" value="Print"/></form>
</div>

<iframe id="printf" name="printf" src="http://pdfUrl.pdf" frameborder="0" width="440" height="580" style="width: 440px; height: 580px;display: none;"></iframe>
<object id="idPdf" onreadystatechange="idPdf_onreadystatechange()"
    width="440" height="580" style="width: 440px; height: 580px;" type="application/pdf"
    data="http://pdfUrl.pdf">
    <embed src="http://pdfUrl.pdf" width="440" height="580" style="width: 440px; height: 580px;" type="application/pdf">
    </embed>
    <span>PDF plugin is not available.</span>
</object>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2014-07-06
    • 2014-10-19
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2016-01-20
    相关资源
    最近更新 更多