2009-07-08 57 views
21

Come detto nell'oggetto devo creare una funzionalità per un'applicazione basata sul Web che consenta agli utenti di inviare direttamente la stampa senza richiedere alcuna finestra di dialogo, basta fare clic su stampa, semplice! ma non per me :(.Stampa direttamente dal browser senza finestra popup di stampa

cortesia, indicate quale sarebbe l'opzione migliore e come avrei dovuto scrivere in su (la tecnologia).

Suggerisci favore!

Grazie.

EDIT : La stampa deve essere inviata sulla stampante predefinita dell'utente

+0

avevo già preassumed che tale opzione sarebbe possibile per IE, facendo un controllo ActiveX. Ma non ricordo che questo potrebbe essere fatto anche tramite vbscript. Trovato fortunato e trovato questo: http://msdn.microsoft.com/en-us/library/ms976105.aspx Non l'ho provato ancora ma questo mi dà un'occhiata di promemoria utile questo potrebbe salvarmi per ottenere la mia mano sporca da activeX –

+0

so che questo thread era super vecchio. Ma forse qualcuno prova a scoprirlo, per favore controlla questo: https://github.com/apinprastya/pulas – Apin

+0

Alcune altre soluzioni di stampa del browser sono disponibili qui: http://stackoverflow.com/a/28783269/3196753 – tresf

risposta

13

Non sono riuscito a trovare la soluzione per altri browser . Quando ho postato questa domanda, IE era sulla priorità più alta e ho trovato con piacere uno per questo. Se hai una soluzione per altri browser (firefox, safari, opera) per favore condividi qui. Grazie.

VBScript è molto più conveniente rispetto alla creazione di un ActiveX VB6 o C#/VB.NET:

<script language='VBScript'> 
Sub Print() 
     OLECMDID_PRINT = 6 
     OLECMDEXECOPT_DONTPROMPTUSER = 2 
     OLECMDEXECOPT_PROMPTUSER = 1 
     call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1) 
End Sub 
document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>" 
</script> 

Ora, chiamando:

<a href="javascript:window.print();">Print</a> 

invierà stampa senza finestra di stampa a comparsa.

+0

Ho provato a implementare lo stesso identico codice in Javascript e non ha funzionato. Solo in VBScript. Perché funziona in VBScript ma non in Javascript? –

+0

@Jordao Penso che le variabili di configurazione di cui sopra siano solo membri di vbscript. Qui, nello script precedente, ciò che facciamo principalmente è il reset delle variabili di configurazione. Questo è solo un istinto pensato alla tua domanda. –

+0

le variabili a cui fai riferimento sono solo costanti. Dovrebbero funzionare allo stesso modo in Javascript. –

1

Non credo che ciò sia possibile.La finestra di dialogo che viene visualizzata consente all'utente di selezionare una stampante da stampare.Quindi, diciamo che sarebbe essere possibile per la propria applicazione solo per fare clic e stampare, e un utente fa clic sul pulsante di stampa, ma ha due stampanti collegate al computer. O, più probabilmente, quell'utente sta lavorando in un edificio per uffici con 25 stampanti. Senza quella finestra di dialogo, in che modo il computer dovrebbe sapere a quale stampante stampare?

+0

Che ne dici di ActiveX controllo per IE che invierà una stampa sulla stampante predefinita dell'utente. Questo sembra abbastanza fattibile. Tuttavia, investire ore di sforzi per creare tale ActiveX non è giustificato per fornire funzionalità solo per gli utenti di IE. –

+0

Zachary, lo script precedente invia un comando di stampa su una stampante predefinita senza mostrare alcuna finestra popup. Ma questo è solo per IE. Spero che questo risponda ai dubbi che abbiamo avuto :) –

+0

Oh wow, non ho nemmeno pensato di usare VBScript. Benissimo, Ramiz. Se usi solo IE, allora sei completamente impostato: D –

-3

Questo dovrebbe funzionare, l'ho provato da solo e ha funzionato per me. Se si passa True anziché false, verrà visualizzata la finestra di dialogo di stampa.

this.print(false); 
+0

non esiste un metodo print() disponibile nello script java con parametri booleani. –

+0

Anche se fosse possibile farlo, per ragioni proprietarie non implementerei. A meno che non sia un'applicazione specifica utilizzata al lavoro da un gruppo specifico di persone. Anche se, immaginate se la mia stampante dovesse stampare automaticamente solo visitando una pagina e senza conferma di ciò che volevo stampare. 1. Penso che ci sia un possibile virus perché non mi è stato nemmeno chiesto se volevo stampare. 2. Vorrei sprecare innumerevoli documenti sulle macchine della gente. Che cosa succede se volevano solo 1 pagina su un rapporto di 15 pagine. END LESSION: la stampa non deve essere eseguita senza passare attraverso i protocolli di stampa. – Spoo

3

AttendStar creato un add-on che sopprime la finestra di dialogo Stampa e rimuove tutte le intestazioni e piè di pagina per la maggior parte delle versioni di Firefox. .

https://addons.mozilla.org/en-US/firefox/addon/attendprint/

Con questa funzione abilitata è possibile usare $ ('img') jqprint(); e jqprint per jquery stamperà solo quell'immagine automaticamente chiamata dalla tua applicazione web.

3

IE9 non supporta più l'attivazione di Print() VBScript chiamando window.print() come IE7 e IE8 do, quindi window.print() ora attiverà sempre la finestra di dialogo di stampa in IE9.

La correzione è piuttosto semplice. Devi solo chiamare Print() stesso, invece di window.print() nell'evento onclick.

Ho descritto la correzione in modo più dettagliato in una risposta ad un'altra domanda, con un esempio di codice funzionante con sintassi HTML leggermente aggiornata (il più possibile mentre è ancora testato come codice funzionante).

È possibile trovare il codice di esempio qui:

Bypass Printdialog in IE9

0

this.print (false);

Ho provato questo in Chrome, Firefox e IE. Funziona solo con Firefox e IE, utilizza la stampante predefinita (con impostazioni di stampa predefinite) e funziona solo quando eseguo il rendering di un PDF (utilizzo Foxit Reader con modalità di lettura sicura disabilitata). Chrome mostra la finestra di dialogo di stampa, anche gli altri browser quando eseguo il rendering di una pagina HTML.

0

Per i browser IE, la "soluzione VBScript" funziona.

Ma, come accennato da @purefusion a Bypass Printdialog in IE9, utilizzare Print() piuttosto che window.print()