2011-01-31 18 views
17

Sto sviluppando un'estensione interna di Google Chrome che necessita di un modo per avviare la stampa della pagina corrente sulla stampante. Non voglio che venga visualizzata la finestra di dialogo Stampa predefinita (quindi, javascript: window.print() è fuori questione).Estensione Google Chrome: stampa silenziosamente la pagina

Per quanto ho capito, questo non è possibile solo con il plug-in JS + HTML, quindi sono anche aperto all'utilizzo del plugin NPAPI anche (con un manichino tipo mime). E sono preoccupato solo per la piattaforma Windows.

Sono anche aperto per vari hack/soluzioni alternative, se possibile, anche se una soluzione standard sarebbe piacevole.

Se pensi che questo non sia possibile, fammi sapere se sai che una richiesta di funzione è stata registrata per questo?

Eventuali suggerimenti/chiarimenti sono i benvenuti ..

+1

Hai mai finito l'estensione? È esattamente quello che sto cercando ... –

+0

No, non ho potuto fare nulla per la stampa silenziosa. :( –

risposta

0

Ci sono varie estensioni che prendono istantanee della pagina Web corrente (ad esempio, this one); è possibile adattare uno per inviare l'immagine a una stampante tramite un plug-in NPAPI.

+0

C'è qualche altro modo in cui sei a conoscenza/non pensi di usare lo screenshot? Inoltre, puoi fornirmi informazioni/link su come "inviare l'immagine ad una stampante" su Windows? –

+0

Non ho detto nulla riguardo screenshot, guarda il plugin a cui mi sono collegato. Effettua il rendering della pagina (comprese le parti scorse) ad un'immagine, non prende uno screenshot – smorgan

+0

Se hai bisogno di imparare come scrivere il codice di stampa nativo Windows, suggerirei di postare una nuova domanda, è totalmente tangenziale alle estensioni di Chrome e NPAPI. – smorgan

1

Poiché NPAPI consente di creare plugin C++ nativi con i quali è possibile interagire tramite un tag oggetto (che è possibile utilizzare da un'estensione), probabilmente sarebbe il modo per farlo.

Il problema è che non conosco un buon modo per ottenere i bit per la stampa della pagina. L'unica persona che conosco che abbia fatto qualcosa di simile a questo ha ottenuto l'handle della finestra per il browser (disponibile tramite NPAPI) e ne ha raschiato i frammenti per stampare in quel modo, ma ciò non terrà conto dei fogli di stile di stampa o di qualsiasi cosa . Si potrebbe anche provare a utilizzare gli eventi di automazione per cercare di controllare la finestra di dialogo di stampa, ma non ho idea se ciò funzionerebbe o meno.

In base alla progettazione, i browser cercare di non farti fare qualcosa di simile, in quanto potrebbe aprire alcune gravi vulnerabilità se qualsiasi sito web potrebbe semplicemente iniziare le cose di stampa alla stampante senza la conferma ...

In ogni caso, se si trovare un modo per farlo con C++ è possibile utilizzare FireBreath per facilitare la creazione del plugin NPAPI.

+1

"La cosa complicata è che non conosco un buon modo per ottenere i bit per la stampa della pagina." <- Questa parte può essere fatto un livello di estensione, piuttosto che il livello del plugin – smorgan

16

In chrome (v18 +) abbiamo gli switch --kiosk --kiosk-printing. Si può stampare automaticamente sulla stampante predefinita senza conferma di stampa.

si può vedere da questo video http://www.youtube.com/watch?v=D6UHjuvI7IE

+0

Possibile dalla riga di comando? – dfrankow

+0

Queste opzioni saranno disponibili in chrome: // anche le flag? O sono solo a riga di comando? –

+0

Chrome non funziona bene con la nostra stampante per etichette. Se IE avesse un interruttore simile sarebbe fantastico! –

0

Sono stato di recente alla ricerca di una capacità simile, e sembra che sarebbe del tutto possibile con nuova API di messaggistica nativo di Chrome.

https://developer.chrome.com/extensions/nativeMessaging

Ci sono molti esempi di questo con C#, ma qui è un esempio rapido di risoluzione dei problemi Chrome messaggistica nativa con una base C# applicazione

Native messaging from chrome extension to native host written in C#

Mi rendo conto che può essere un giorno in ritardo e un dollaro in meno, ma nel caso in cui qualcun altro si imbattesse in questa domanda, questa è la soluzione che ha funzionato per me. Dall'interno di un'app C#, è possibile stampare direttamente su stampanti installate utilizzando la classe PrintDocument. Se hai trovato un modo per ottenere l'immagine della pagina, sarebbe molto più semplice dell'uso di firebreath o NPAPI.

Problemi correlati