Imprimer directement sur l'imprimante avec JavaScript

Une requête qui apparaît souvent dans les différents forums Javascript demande comment envoyer la page directement à l'imprimante sans afficher au préalable boîte de dialogue d'impression.

Plutôt que de simplement vous dire que ça ne peut pas être fait il serait peut-être plus utile d'expliquer pourquoi une telle option n'est pas possible.

Quelle boîte de dialogue d'impression s'affiche lorsque quelqu'un appuie sur la touche bouton d'impression dans leur navigateur ou Javascript window.print () La méthode s'exécute en fonction du système d'exploitation et des imprimantes installées sur l'ordinateur.

Comme la plupart des gens exécutent Windows sur leur ordinateur, décrivons d'abord comment la configuration d'impression fonctionne sur ce système d'exploitation. Les systèmes d'exploitation * nix et Mac diffèrent légèrement dans les détails, mais dans l'ensemble, ils sont configurés de manière similaire.

Boîte de dialogue d'impression

La boîte de dialogue d'impression se compose de deux parties sous Windows. Le premier fait partie de l'API Windows (Application Programming Interface). L'API est un ensemble de morceaux de code communs qui se trouvent dans les diverses DLL (

instagram viewer
Bibliothèque de liens dynamiques) fichiers faisant partie de Windows système opérateur. Tout programme Windows peut (et devrait) appeler l'API pour exécuter des fonctions courantes telles que l'affichage de la boîte de dialogue d'impression afin qu'il fonctionner de la même manière dans tous les programmes et ne pas avoir des options différentes à différents endroits comme l'option d'impression dans le programme DOS journées. L'API Print Dialog fournit également une interface commune permettant à tous les programmes d'accéder au même ensemble de pilotes d'imprimante plutôt que les fabricants d'imprimantes devant créer un pilote pour leur imprimante pour chaque programme individuel qui voulait utiliser il.

Les pilotes d'imprimante constituent l'autre moitié de la boîte de dialogue d'impression. Il existe plusieurs langues différentes que les différentes imprimantes comprennent qu’elles utilisent pour contrôler l’impression de la page (par exemple, PCL5 et Postscript). Le pilote d'imprimante indique à l'API d'impression comment traduire le format d'impression interne standard que le système d'exploitation comprend dans le langage de balisage personnalisé que l'imprimante spécifique comprend. Il ajuste également les options que la boîte de dialogue Imprimer affiche pour refléter les options offertes par l'imprimante spécifique.

Utilisation de l'imprimante

Un ordinateur individuel peut ne pas avoir d'imprimantes installées, il peut avoir une imprimante locale, il peut avoir accès à plusieurs imprimantes sur un réseau, il peut même être configuré pour imprimer au format PDF ou impression préformatée fichier. Lorsque plusieurs "imprimantes" sont définies, l'une d'elles est désignée comme imprimante par défaut, ce qui signifie que c'est elle qui affiche ses détails dans la boîte de dialogue d'impression lors de sa première apparition.

Le système d'exploitation garde une trace de l'imprimante par défaut et identifie cette imprimante aux divers programmes de l'ordinateur. Cela permet aux programmes de passer un paramètre supplémentaire à l'API d'impression lui indiquant d'imprimer directement sur l'imprimante par défaut sans afficher la boîte de dialogue d'impression au préalable. De nombreux programmes ont deux options d'impression différentes - une entrée de menu qui affiche la boîte de dialogue d'impression et un bouton d'impression rapide de la barre d'outils qui envoie directement à l'imprimante par défaut.

Lorsque vous avez une page Web sur Internet que vos visiteurs vont imprimer, vous n'avez pratiquement aucune information sur les imprimantes dont ils disposent. La plupart des imprimantes dans le monde sont configurées pour imprimer sur du papier A4, mais vous ne pouvez pas garantir que l'imprimante est configurée sur cette valeur par défaut. Un pays d'Amérique du Nord utilise un format de papier non standard plus court et plus large que le format A4. La plupart des imprimantes sont configurées pour imprimer en mode portrait (où la direction la plus étroite est la largeur, mais certaines peuvent être définies pour le paysage où la dimension la plus longue est la largeur. Bien sûr, chaque imprimante a également des marges par défaut différentes en haut, en bas et sur les côtés du page avant même que les propriétaires n'entrent et modifient tous les paramètres pour que l'imprimante vouloir.

Compte tenu de tous ces facteurs, vous n'avez aucun moyen de savoir si l'imprimante par défaut avec sa configuration par défaut imprimera votre site Web. page sur A3 avec des marges négligeables ou sur A5 avec des marges énormes (laissant un peu plus qu'une zone de la taille d'un timbre-poste au milieu de la page). Vous pouvez probablement supposer que la plupart auront une zone d'impression sur la page d'environ 16 cm x 25 cm (plus ou moins 80%).

Besoins d'impression

Étant donné que les imprimantes varient tellement entre vos visiteurs potentiels (quelqu'un a-t-il mentionné les imprimantes laser, les imprimantes à jet d'encre, la couleur ou le noir et blanc uniquement, qualité photo, mode brouillon et bien plus encore), vous n'avez aucun moyen de dire ce qu'ils devront faire pour imprimer votre page dans un délai raisonnable. format. ils ont peut-être une imprimante distincte ou un deuxième pilote pour la même imprimante fournissant des paramètres totalement différents spécifiquement pour les pages Web.

Ensuite, vient la question de ce qu'ils peuvent vouloir imprimer. Souhaitent-ils la page entière ou ont-ils sélectionné seulement une partie de la page qu'ils souhaitent imprimer? Si votre site utilise des cadres, souhaitent-ils imprimer tous les cadres tels qu'ils apparaissent sur la page, veulent-ils imprimer chaque cadre séparément ou veulent-ils simplement imprimer un cadre spécifique?

La nécessité de répondre à toutes ces questions fait qu'il est à peu près essentiel que la boîte de dialogue d'impression apparaisse chaque fois veulent imprimer quelque chose afin qu'ils puissent s'assurer que les paramètres sont tous corrects avant de frapper l'impression bouton. La plupart des navigateurs offrent également la possibilité d'ajouter un bouton "impression rapide" à l'une des barres d'outils du navigateur pour permettre la page à imprimer sur l'imprimante par défaut en utilisant les paramètres par défaut du navigateur quant à ce qui doit être imprimé et Comment.

Javascript

Les navigateurs ne mettent pas cette multitude de paramètres de navigateur et d'imprimante à la disposition de Javascript. Javascript est principalement concerné par la modification du page Web et donc les navigateurs Web fournissent un minimum d'informations sur le navigateur lui-même et pratiquement aucune information sur le système d'exploitation disponible pour Javascript parce que Javascript n'a pas besoin de connaître ces choses pour effectuer les choses que Javascript est censé faire.

La sécurité de base dit que si quelque chose comme Javascript n'a pas besoin de connaître le système d'exploitation et configuration du navigateur afin de manipuler la page Web, il ne devrait pas être fourni avec cela information. Ce n'est pas comme si Javascript devait être capable de changer les paramètres de l'imprimante en valeurs appropriées pour imprimer la page courante parce que ce n'est pas à cela que sert Javascript - c'est le travail d'impression dialogue. Les navigateurs ne mettent donc à la disposition de Javascript que les éléments dont Javascript a besoin, tels que la taille de l'écran, espace disponible dans la fenêtre du navigateur pour afficher la page, et des choses similaires qui aident Javascript à déterminer la disposition de la page. La page Web actuelle est la seule et unique préoccupation de Javascript.

Intranets

Les intranets sont bien sûr une toute autre affaire. Avec un intranet, vous savez que tout le monde accéder à la page utilise un navigateur spécifique (généralement une version récente d'Internet Explorer) et dispose d'une résolution d'écran spécifique et d'un accès à des imprimantes spécifiques. Cela signifie qu'il est logique sur un intranet de pouvoir imprimer directement sur l'imprimante sans afficher la boîte de dialogue d'impression car la personne qui écrit la page Web sait de quelle imprimante il s'agit imprimé sur.

Le substitut d'Internet Explorer pour Javascript (appelé JScript) a donc un peu plus d'informations sur le navigateur et le système d'exploitation que Javascript lui-même fait. Les ordinateurs individuels sur le réseau exécutant l'intranet peuvent être configurés pour autoriser le JScript window.print () écrivez directement sur l'imprimante sans afficher la boîte de dialogue d'impression. Cette configuration devrait être mise en place individuellement sur chaque ordinateur client et dépasse largement le cadre d'un article sur Javascript.

En ce qui concerne les pages Web sur Internet, il est absolument impossible de créer un Commande Javascript pour envoyer directement à l'imprimante par défaut. Si vos visiteurs souhaitent le faire, ils devront créer leur propre bouton "impression rapide" dans la barre d'outils de leur navigateur.

instagram story viewer