2013-02-21 21 views
15

Ho un pulsante "Stampa" che invoca il seguente JavaScriptFirefox 19 di stampa PDF da JavaScript

window.frames.myPdfFrame.print(); 

dove "myPdfFrame" si riferisce a un iframe con un PDF per l'src.

In Chrome e Firefox 18 (e sotto) si apre la finestra di dialogo di stampa come previsto, ma a partire da Firefox 19 ottengo il seguente errore

Error: Permission denied to access property 'print' 

Presumo che ciò è legato all'utilizzo del embedded PDF viewer released with Firefox 19 piuttosto che il Plugin Adobe L'utilizzo dell'icona di stampa nella barra degli strumenti del plug-in PDF funziona come previsto.

C'è un modo per richiamare la finestra di dialogo di stampa su un PDF inline in Firefox 19 da Javascript?

+0

È un esempio accurato di ciò che si sta tentando di fare? http://jsfiddle.net/hytcX/3/ –

+2

Sì, anche io, anche se un esempio in esecuzione potrebbe aiutare gli altri a scavare in questo –

+0

Sì, questo è un buon esempio e riproduce l'errore. –

risposta

4

Ho provato il JSFiddle demo fornito, con Firefox 22 e NoScript. È interessante notare che quando ho aperto il violino per la prima volta, il contenuto dell'iframe è stato bloccato da NoScript, ma il dialogo di stampa è apparso rapidamente! Ho cliccato su "Ok", e ho ricevuto un brindisi sulla barra delle applicazioni che diceva che il documento about.blank è stato inviato alla stampante. Abbastanza sicuro, ho controllato la stampante e ha sputato una bella pagina bianca. Non è utile ...

Ora, dopo aver detto a NoScript per "consentire temporaneamente" il dominio del formato PDF (irs.gov), ho riprodurre l'errore:

Error: Permission denied to access property 'print' 

This other question mi sono chiesto se era una problema di same origin policy. Così l'ho testato sul mio server web, con un documento PDF ospitato sullo stesso computer. E ... niente da fare!

Ho quindi provato la mia pagina di test in IE 9 e Chrome. Entrambi, , mostrano la finestra di dialogo di stampa, ma quando stampo il documento, nel caso di IE 9, in realtà sta stampando su: vuoto, e Chrome stampa un rettangolo grigio che dice "Caricamento" ... sembra che stia stampando il intera pagina, non solo il documento nell'iframe.

Quindi, sono d'accordo con Jason Sperske che questo non sembra possibile.

UPDATE: this answer offre una soluzione che "funziona", ma solo per i file PHP generati dal Fpdf library ...

+0

Il Chrome "Caricamento in corso ..." può essere corretto se si imposta un timeout (di una lunghezza appropriata ... Non so cosa); per alcuni anche l'ascolto dell'evento onload non funziona. –

1

Prova il seguente codice, sta funzionando:

window.frames.myPdfFrame.focus(); 
window.print(); 
+0

Mi dispiace, questo non funziona per me su IE 9, né su Firefox 22. –

+0

ok fammi controllare. Tornerò da te. –

2

Nelle versioni recenti di Firefox (dal 19), è necessario disabilitare il visualizzatore PDF corrotto e nativo (pdf.js) in about:config. Impostare la proprietà pdfjs.disabled su true e verrà visualizzata la finestra di stampa che viene visualizzata utilizzando lo script.

Se è in corso il download, impostare la proprietà plugin.disable_full_page_plugin_for_types su application/pdf.

+0

Trovati anche qui: http://stackoverflow.com/questions/15769933/firefox-printing-pdf-in-an-iframe-throws-an-error –