Stampa direttamente sulla stampante

Una query che si presenta molto nei vari forum Javascript chiede come inviare la pagina direttamente alla stampante senza prima visualizzare la finestra di dialogo Stampa.

Piuttosto che dirtelo non si può fare forse una spiegazione del perché tale opzione non è possibile sarebbe più utile.

Quale finestra di dialogo di stampa viene visualizzata quando qualcuno preme il pulsante di stampa nel proprio browser o Javascript window.print () l'esecuzione del metodo dipende dal sistema operativo e dalle stampanti installate sul computer.

Poiché la maggior parte delle persone esegue Windows sul proprio computer, descriviamo innanzitutto come funziona l'impostazione di stampa su quel sistema operativo. I sistemi operativi * nix e Mac differiscono leggermente nei dettagli, ma nel complesso sono configurati in modo simile.

Finestra di dialogo Stampa

Ci sono due parti nella finestra di dialogo di stampa su Windows. Il primo di questi fa parte dell'API di Windows (Application Programming Interface). L'API è un insieme di parti di codice comuni contenute nei vari file DLL (Dynamic Link Library) che fanno parte del sistema operativo Windows. Qualsiasi programma Windows può (e dovrebbe) chiamare l'API per eseguire funzioni comuni come la visualizzazione della finestra di dialogo Stampa in modo che funzionerà allo stesso modo in tutti i programmi e non abbia opzioni diverse in luoghi diversi come l'opzione di stampa in DOS giorni del programma. L'API Print Dialog fornisce anche un'interfaccia comune che consente a tutti i programmi di accedere allo stesso set di driver di stampa anziché che i produttori di stampanti debbano creare software di driver per la propria stampante per ogni singolo programma che desiderasse utilizzarlo.

I driver della stampante sono l'altra metà della finestra di dialogo di stampa. Esistono diverse lingue che diverse stampanti capiscono di usare per controllare la stampa della pagina (es. PCL5 e Postscript). Il driver della stampante indica all'API di stampa come tradurre il formato di stampa interno standard che il sistema operativo comprende nel linguaggio di markup personalizzato che la stampante specifica comprende. Inoltre regola le opzioni visualizzate nella finestra di dialogo Stampa per riflettere le opzioni offerte dalla stampante specifica.

Funzionamento della stampante

Un singolo computer potrebbe non avere alcuna stampante installata, potrebbe avere una stampante locale, potrebbe avere accesso a più stampanti su una rete, potrebbe anche essere configurato per stampare su PDF o file di stampa preformattato. Laddove è definita più di una "stampante", una di esse è designata come stampante predefinita, il che significa che è quella che visualizza i suoi dettagli nella finestra di dialogo di stampa quando appare per la prima volta.

Il sistema operativo tiene traccia della stampante predefinita e identifica quella stampante nei vari programmi sul computer. Ciò consente ai programmi di passare un parametro aggiuntivo all'API di stampa che indica di stampare direttamente sulla stampante predefinita senza visualizzare prima la finestra di dialogo di stampa. Molti programmi hanno due diverse opzioni di stampa: una voce di menu che visualizza la finestra di dialogo di stampa e un pulsante di stampa rapida della barra degli strumenti che invia direttamente alla stampante predefinita.

Quando hai una pagina web su Internet che i tuoi visitatori stanno per stampare, non hai quasi nessuna informazione su quali stampanti hanno. La maggior parte delle stampanti in tutto il mondo sono configurate per stampare su carta A4 ma non è possibile garantire che la stampante sia impostata su quel valore predefinito. Un paese nordamericano utilizza un formato carta non standard più corto e più largo dell'A4. La maggior parte delle stampanti sono configurate per stampare in modalità verticale (dove la direzione più stretta è la larghezza ma alcune possono essere impostate sul paesaggio dove la dimensione più lunga è la larghezza. Naturalmente, ogni stampante ha anche margini predefiniti diversi nella parte superiore , in basso e ai lati della pagina anche prima che i proprietari entrino e modifichino tutte le impostazioni per ottenere la stampante nel modo desiderato.

Dati tutti questi fattori, non hai modo di sapere se la stampante predefinita con la sua configurazione predefinita stamperà la tua pagina web su A3 con margini trascurabili o su A5 con margini enormi (lasciando poco più di un'area di dimensioni di un francobollo nel mezzo della pagina). Probabilmente puoi presumere che la maggior parte avrà un'area di stampa sulla pagina di circa 16 cm x 25 cm (più o meno l'80%).

Bisogni di stampa

Poiché le stampanti variano molto tra i tuoi potenziali visitatori (qualcuno ha menzionato stampanti laser, stampanti a getto d'inchiostro, solo a colori o in bianco e nero, qualità fotografica, modalità bozza e molto altro) non hai modo di dire cosa dovranno fare per stampare la tua pagina in un formato ragionevole. forse hanno una stampante separata o un secondo driver per la stessa stampante che fornisce impostazioni totalmente diverse specificamente per le pagine Web.

Successivamente, arriva la questione di ciò che potrebbero voler stampare. Vogliono l'intera pagina o hanno selezionato solo una parte della pagina che vogliono stampare? Se il tuo sito utilizza i frame, vogliono stampare tutti i frame nel modo in cui appaiono sulla pagina, vogliono stampare ogni frame separatamente o vogliono solo stampare un frame specifico??

La necessità di rispondere a tutte queste domande rende quasi indispensabile che la finestra di dialogo di stampa appaia ogni volta che vogliono stampare qualcosa in modo che possano assicurarsi che le impostazioni siano tutte corrette prima di premere il pulsante di stampa. La maggior parte dei browser offre anche la possibilità di aggiungere un pulsante "stampa veloce" a una delle barre degli strumenti del browser per consentire la stampa della pagina sulla stampante predefinita utilizzando le impostazioni predefinite del browser su cosa stampare e come.

Javascript

I browser non rendono questa moltitudine di impostazioni del browser e della stampante disponibili per Javascript. Javascript si occupa principalmente di modificare la pagina Web corrente e quindi i browser Web forniscono informazioni minime sul browser stesso e quasi nessuna informazione sul sistema operativo disponibile per Javascript perché Javascript non ha bisogno di sapere quelle cose per eseguire quelle cose che Javascript è destinato a fare.

La sicurezza di base afferma che se qualcosa come Javascript non ha bisogno di conoscere il sistema operativo e la configurazione del browser per manipolare la pagina Web, non dovrebbe essere fornita con tali informazioni. Non è come se JavaScript dovesse essere in grado di modificare le impostazioni della stampante in valori appropriati per la stampa della pagina corrente perché non è ciò che Javascript serve - questo è il lavoro della finestra di dialogo di stampa. Pertanto, i browser rendono disponibili a Javascript solo le cose che Javascript deve sapere come la dimensione dello schermo, lo spazio disponibile nella finestra del browser per visualizzare la pagina e cose simili che aiutano Javascript a capire come è disposta la pagina. La pagina Web attuale è l'unica e sola preoccupazione di Javascript.

intranet

Le intranet sono ovviamente una questione completamente diversa. Con una Intranet, sai che tutti gli utenti che accedono alla pagina utilizzano un browser specifico (di solito una versione recente di Internet Explorer) e hanno una risoluzione dello schermo specifica e l'accesso a stampanti specifiche. Ciò significa che ha senso su una rete Intranet poter stampare direttamente sulla stampante senza visualizzare la finestra di dialogo di stampa perché la persona che scrive la pagina Web sa su quale stampante verrà stampata.

Il sostituto di Internet Explorer per Javascript (chiamato JScript) ha quindi leggermente più informazioni sul browser e sul sistema operativo che Javascript stesso ha. I singoli computer sulla rete che eseguono la rete Intranet possono essere configurati per consentire JScript window.print () comando scrivere direttamente sulla stampante senza visualizzare la finestra di dialogo di stampa. Questa configurazione dovrebbe essere impostata individualmente su ciascun computer client e va ben oltre lo scopo di un articolo su Javascript.

Quando si tratta di pagine Web su Internet, non è assolutamente possibile impostare un comando Javascript per l'invio diretto alla stampante predefinita. Se i tuoi visitatori lo desiderano, dovranno impostare il proprio pulsante "Stampa veloce" sulla barra degli strumenti del browser.