5

ロードした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 で修正されるはずのバグであるとどこかで読みましたが、修正されませんでした)。

プロパティ 'print' へのアクセスが拒否されました

Internet Explorer 10 および 9 で、次のエラーが表示されます。

無効な呼び出しオブジェクト

私のMVCアクションによって生成されたPDFを指しているようです。

私と同様の問題を抱えた投稿を数多く見てきましたが、これまでのところ有効な解決策に出くわしていません。

私が本当に知りたいのは、RADPDF がどのようにしてすべてのブラウザーでこれを機能させることができたかということです。

このページの印刷ボタンをクリックしてください

私はこれができることを知っています、私はそこにいるあなたの頭脳からの助けが必要です!

乾杯

4

1 に答える 1

5

以下を試してみてください。すべてのブラウザで動作する可能性があります。(私は 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>
于 2013-11-27T11:06:00.527 に答える