web-dev-qa-db-fra.com

Sélectionnez une imprimante et imprimez en silence

Cette réponse montre comment activer l'impression silencieuse dans Google Chrome. Cependant, j'ai deux pages Web qui doivent être imprimées en mode silencieux à l'aide de deux imprimantes différentes sans autre interaction de l'utilisateur. Est-il possible de sélectionner automatiquement une imprimante avant d'appeler window.print()? Cela ne me dérange pas d’écrire une extension Chrome si cela est vraiment nécessaire.

10
rightfold

Vous pourriez peut-être configurer vos imprimantes avec Google Clound Print, puis utiliser l’API d’impression en nuage pour leur soumettre des travaux en mode silencieux. Il semble que vous puissiez spécifier l'ID de l'imprimante lorsque vous soumettez le travail. Vous devrez peut-être utiliser quelque chose comme html2canvas pour pixelliser la page Web.

23
Nathan Breit

Si vous êtes dans un environnement que vous connaissez et dans lequel vous avez suffisamment de privilèges (je suppose, puisque vous connaissez l'imprimante que vous souhaitez utiliser), vous pouvez essayer de le modifier via la ligne de commande. Pour cela, vous devriez appeler

@RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"

Le nom de l'imprimante doit être la valeur affichée sur le panneau de commande.

Pour appeler en ligne de commande à partir de javascript, si vous avez activé les contrôles ActiveX appropriés, vous pouvez utiliser:

var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");

aussi, vous pouvez essayer avec Shell.application ShellExecute

 var objShell = new ActiveXObject("Shell.application");
objShell.ShellExecute("cmd.exe", 'RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"', "C:\\WINDOWS\\system32", "open", 1);

Pour plus d'informations, consultez http://msdn.Microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx

Je ne l'ai pas testé, alors bonne chance!

7
Carlos Robles

J'ai fini par écrire un serveur en fa # et communiquer avec cela via un WebSocket.

3
rightfold

J'ai cherché une réponse mais il semble qu'il n'y ait aucun moyen de configurer une imprimante par programme. Par conséquent ma solution probablement compliquée:

Créez une application de ligne de commande capable de basculer l'imprimante par défaut du système d'exploitation. Peut-être une application capable de désactiver et d'activer une imprimante. Si vous êtes sous Windows, une application .NET pourrait probablement le faire. Si sous Linux, il devrait y avoir une interface en ligne de commande pour la gestion des imprimantes (je ne sais pas avec certitude).

Maintenant, créez par exemple une page PHP, asp.net ou Ruby, etc., capable d'appeler le programme d'activation/désactivation de l'imprimante.

Si cela fonctionne, vous pouvez utiliser les appels Javascript pour imprimer d’abord sur l’imprimante 1 et ensuite sur l’imprimante 2. Cependant il y a quelques inconvénients:

  • Si l’imprimante 1 imprime un document, vous ne pouvez pas basculer vers l’imprimante 2, car elle désactive celle-ci. Donc, d’une manière ou d’une autre, vous devriez prévoir combien de temps un travail commun prend.
  • Il y a beaucoup de frais généraux dans cette solution. Vous devez faire des appels supplémentaires pour passer d'une imprimante à l'autre.
  • La facilité de maintenance n'est absolument pas optimale car vous devez gérer le programme de commutation d'imprimante et le service Web.

J'espère pour vous que quelqu'un propose une meilleure solution, mais je voulais au moins partager mes pensées. Peut-être qu'ils vous aident à résoudre votre problème.

1
Bas van Dijk