2013-05-17 5 views
5

Я хочу запустить печать файла PDF, который я загружаю и iframe.Печать PDF через iframe в Chrome/Firefox/IE

Осмотрев, я придумал следующий бит

<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, я получаю следующее сообщение об ошибке

Неверный вызывающий объект

, который, кажется, р в PDF-файл, созданный моим действием MVC.

Я видел многочисленные сообщения с проблемами, похожими на мои, но пока не встретил рабочего решения.

То, что я действительно хотел бы знать, как RADPDF удалось получить эту работу в любом браузере

Click the print button on this page

Я знаю, что это может быть сделано, мне нужна помощь от вас мозгов там!

Cheers

+0

Привет, вы когда-нибудь это понимали? Заботиться, чтобы поделиться? – BelgoCanadian

ответ

3

Попробуйте следующее, может работать во всех браузерах. (Я тестировал только с IE8 и только хром)

<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> 
Смежные вопросы