2012-11-29 13 views
5

Quindi penso che l'interpretazione di DOM di Chrome e Firefox mi stia rovinando. Sto provando a stampare un pdf da un browser (creato dinamicamente) perché non posso avere l'intestazione e il footer normalmente stampati con la stampa di una pagina HTML. Ora stavo semplicemente inviando il PDF usando fpdf da una pagina php e usando la barra degli strumenti o facendo clic destro e stampando ma ora i client vogliono un pulsante sulla pagina per avviare la finestra di dialogo di stampa ma ovviamente non stampano altro se non il PDF ... . così ho Embeded che:Stampa di PDF incorporati in cromo

<embed 
     type="application/pdf" 
     src="print_pdf.php" 
     id="pdfDocument" 
     width="100%" 
     height="100%" /> 

e onClick di un pulsante chiamato

<script type="text/javascript"> 

     function printDocument(documentId) { 

     ((function(){return document.getElementById(documentId);})()).print(); 


     //Wait until PDF is ready to print  
     if (typeof document.getElementById(documentId).print == 'undefined') { 

      setTimeout(function(){printDocument(documentId);}, 1000); 

     } else { 

      var x = document.getElementById(documentId); 
      x.print(); 
     } 
    } 
    </script> 

dove DocumentID = "pdfDocument"

Questo ha funzionato grande in IE9, ma Chrome e Mozilla tutti dicono "TypeError Uncaught: L'oggetto # non ha il metodo 'stampa' "

così ho cercato di utilizzare il pensiero embed stava causando interpretazione oggetto improprio in cromo:

<object data="print_pdf.php" type="application/pdf" width="100%" height="100%" id="pdfD2"> 

alt: test.pdf

e chiamato lo stesso onClick, dove DocumentID = "pdfD2" .. . "Uncaught TypeError: Object # non ha un metodo 'print'"

Poi ho provato un Iframe: ... "Uncaught TypeError: Object # non ha un metodo 'print'"

Sono così frustrato dato che Chrome è il mio go to ... Ho anche disabilitato la vista PDF integrata di Chrome e ho usato Adobe 10.xxx .. ARGH !!!

Cordiali saluti, le mie semplici tag dei pulsanti sono:

<input type="button" value="Print Rx" onclick="printDocument('pdfDocument')"> 
<input type="button" value="Print Rx2" onclick="printDocument('pdfD2')"> 
<input type="button" value="Print Rx3" onclick="printDocument('pdfD3')"> 

risposta

0

Credo che l'errore è in prima linea:

((function(){return document.getElementById(documentId);})()).print(); 

il che significa che si "pacco" (bene possibilmente) DOM incompiuto nel chiusura.

Va prima della riga successiva che controlla la stampa "non definita".

Oltre a questo, perché si utilizza il timeout e non solo gli eventi onload o DOMReady?

Problemi correlati