Une requête qui apparaît souvent dans les différents forums Javascript demande comment envoyer la page directement à l'imprimante sans afficher d'abord la boîte de dialogue d'impression.
Plutôt que de simplement vous dire que ça ne peut pas être fait peut-être qu'une explication des raisons pour lesquelles une telle option n'est pas possible serait plus utile.
Quelle boîte de dialogue d'impression s'affiche lorsque quelqu'un appuie sur le bouton d'impression de son navigateur ou de 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.
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 sont conservés dans les divers fichiers DLL (Dynamic Link Library) qui font partie du système d'exploitation Windows. N'importe quel 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 fonctionne de la même manière dans tous les programmes et n'ait pas d'options différentes à différents endroits comme le faisait l'option d'impression dans DOS jours de programme. 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 d'avoir à créer un pilote pour leur imprimante pour chaque programme individuel qui souhaitait l'utiliser..
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.
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 fichier d'impression préformaté. Lorsque plusieurs "imprimantes" sont définies, l'une d'entre 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 de la page avant même que les propriétaires n'entrent et modifient tous les paramètres pour obtenir l'imprimante comme ils le souhaitent.
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 page Web sur A3 avec des marges négligeables ou sur A5 avec des marges énormes (ne laissant guère 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%).
É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, la qualité photo, le mode brouillon, etc.), vous n'avez aucun moyen de dire ce qu'ils devront faire pour imprimer votre page dans un format raisonnable. peut-être qu'ils ont une imprimante séparée 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, souhaitent-ils imprimer chaque cadre séparément ou souhaitent-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 qu'ils veulent imprimer quelque chose afin qu'ils puissent s'assurer que les paramètres sont tous corrects avant d'appuyer sur le bouton d'impression. 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 d'être imprimée sur l'imprimante par défaut en utilisant les paramètres par défaut du navigateur quant à ce qui doit être imprimé et comment.
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 de la page Web actuelle et les navigateurs Web fournissent donc un minimum d'informations sur le navigateur lui-même et pratiquement aucune information sur le système d'exploitation disponible pour Javascript car Javascript n'a pas besoin de connaître ces choses pour effectuer ces choses que Javascript est destiné à 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 la configuration du navigateur pour manipuler la page Web, il ne devrait pas lui être fourni ces informations. 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 en cours, car ce n'est pas le but de Javascript - c'est le travail de la boîte de dialogue d'impression. Les navigateurs ne mettent donc à la disposition de Javascript que les éléments dont Javascript a besoin, tels que la taille de l'écran, l'espace disponible dans la fenêtre du navigateur pour afficher la page, et des éléments similaires qui aident Javascript à déterminer la disposition de la page. La page Web actuelle est la seule et unique préoccupation de Javascript.
Les intranets sont bien sûr une toute autre affaire. Avec un intranet, vous savez que tous ceux qui accèdent à la page utilisent un navigateur spécifique (généralement une version récente d'Internet Explorer) et ont une résolution d'écran spécifique et 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 sur quelle imprimante elle sera imprimée..
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 configurer une commande Javascript à envoyer directement à l'imprimante par défaut. Si vos visiteurs le souhaitent, ils devront créer leur propre bouton "impression rapide" dans la barre d'outils de leur navigateur.