2013-05-17 13 views
5

Desidero attivare la stampa di un file PDF che carico e iframe.Stampa di un PDF tramite un iframe in Chrome/Firefox/IE

Dopo aver cercato, mi si avvicinò con la seguente po

<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> 

Questo funziona perfettamente in Chrome.

In Firefox, ottengo il seguente errore (ho letto da qualche parte che era un bug che avrebbe dovuto essere risolto nella versione 21, ma non era)

Autorizzazione negata per accedere alla proprietà 'print'

In Internet Explorer 10 e 9, ottengo l'errore seguente

oggetto chiamante non valido

che sembra p Oint al PDF generato dalla mia azione MVC.

Ho visto numerosi post con problemi simili ai miei, ma finora non ho trovato una soluzione funzionante.

Quello che mi vuole veramente sapere è come RADPDF riuscito ad ottenere questo lavoro in tutti i browser

Click the print button on this page

So che questo può essere fatto, ho bisogno di aiuto da voi cervelli là fuori!

Acclamazioni

+0

Ciao, l'hai mai capito? Cura di condividere? – BelgoCanadian

risposta

3

provare la seguente, potrebbe funzionare in tutti i browser. (Ho provato solo con IE8 e solo con il cromo)

<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> 
Problemi correlati