web-dev-qa-db-fra.com

HTML/Javascript en un clic Imprimer (sans dialogues)

Est-il possible d'avoir une option d'impression qui contourne la boîte de dialogue d'impression?

Je travaille sur un système fermé et j'aimerais pouvoir prédéfinir les paramètres de la boîte de dialogue d'impression. et traiter l'impression dès que je clique sur le bouton.

D'après ce que je lis, la manière de procéder varie selon les navigateurs. Par exemple, IE utiliserait ActiveX. Chrome/Firefox nécessiterait des extensions. Sur cette base, il semble que je devrais écrire une application en C++ capable de gérer les paramètres passés par le navigateur pour une impression automatique avec un formatage approprié (pour les étiquettes). Ensuite, je devrai le réécrire sous forme d'extension pour Chrome/Firefox. Le résultat final étant que les utilisateurs de notre système fermé devront télécharger/installer ces fonctionnalités en fonction du navigateur utilisé.

J'espère qu'il y a une autre façon de s'y prendre, mais cette tâche viole probablement les problèmes de sécurité du navigateur.

9
teynon

J'ai fini par implémenter une application personnalisée qui fonctionne de manière très similaire à Nexus Mod Manager. J'ai écrit une application C # qui enregistre un schéma d'URI d'application personnalisé. Voici comment ça fonctionne:

  1. L'utilisateur clique sur "Imprimer" sur le site.
  2. Le site Web renvoie l'utilisateur à "CustomURL: // Print/{ID}
  3. L'application est lancée par Windows via le schéma personnalisé uri.
  4. L'application communique avec le serveur préconfiguré pour confirmer la demande d'impression et, dans mon cas, obtenir la commande d'impression réelle.
  5. L'application utilise ensuite la classe C # RawPrinterHelper pour envoyer des commandes directement à l'imprimante.

Cette approche nécessitait un téléchargement initial de l'utilisateur et une seule invite de sécurité de Windows lors du premier lancement de l'application. J'ai également implémenté un peu de magie Javascript pour lui permettre de détecter si le travail d'impression était géré ou non. Si ce n'était pas le cas, il leur demande de télécharger l'application.

6
teynon

Je sais que c'est une réponse tardive, mais voici une solution que j'utilise. Je ne l'ai utilisé qu'avec IE et je ne l'ai pas testé avec un autre navigateur.

Ce coup d’impression secondaire remplace effectivement la fonction d’impression par défaut. 

<script language='VBScript'>
Sub Print()
       OLECMDID_PRINT = 6
       OLECMDEXECOPT_DONTPROMPTUSER = 2
       OLECMDEXECOPT_PROMPTUSER = 1
       call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1)
End Sub
document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>"
</script>

Ensuite, utilisez la fenêtre Javascript.print (); est lié à un lien hypertexte ou à un bouton permettant d'exécuter la commande d'impression.

Si vous souhaitez imprimer automatiquement lors du chargement de la page, placez le code ci-dessous à côté de tag.

<script type="text/javascript"> 
window.onload=function(){self.print();} 
</script> 
8
ComputerMinute

J'ai trouvé un plugin génial par Firefox qui résout ce problème. try seamless printing plugin de firefox qui imprimera quelque chose à partir d’une application Web sans afficher de boîte de dialogue d’impression.

  1. Ouvrez Firefox
  2. Recherchez le nom du complément d’impression transparente et installez-le.
  3. Une fois l'installation réussie, la fenêtre d'impression est ignorée lorsque l'utilisateur souhaite imprimer quoi que ce soit. 
3
Reaz Patwary

La réponse générale est: NON, vous ne pouvez pas le faire dans le cas général, mais dans certains cas, vous pourriez le faire. Vérifiez http://justtalkaboutweb.com/2008/05/09/javascript-print-bypass-printer-dialog-in-ie-and-firefox/

De toute façon, si vous étiez autorisé à le faire, il s'agirait d'un problème de sécurité puisqu'un script malveillant pourrait envoyer des travaux d'impression en mode silencieux à l'imprimante du visiteur.

3
pater

J'écris cette réponse pour le navigateur Firefox. 

Open File > Page Setup

Make all the headers and footers blank

Set the margins to 0 (zero)

In the address bar of Firefox, type about:config

Search for print.always_print_silent and double click it

Change it from false to true

    This lets you skip the Print pop up box that comes up, as well as skipping the step where you have to click OK, automatically printing the right sized slip.

If print.always_print_silent does not come up

    Right click on a blank area of the preference window

    Select new > Boolean

    Enter "print.always_print_silent" as the name (without quotes)

    Click OK

    Select true for the value

You may also want to check what is listed for print.print_printer

    You may have to choose Generic/Text Only (or whatever your receipt printer might be named)
0
Abhijeet Kale