web-dev-qa-db-fra.com

Imprimez directement du navigateur sans imprimer la fenêtre contextuelle

Comme il est dit dans le sujet, je dois créer une fonctionnalité pour une application Web qui permette aux utilisateurs d’imprimer directement sans aucune boîte de dialogue. Il suffit de cliquer pour imprimer, c’est simple! mais pas pour moi :(. 

S'il vous plaît, suggérez quelle serait la meilleure option et comment devrais-je l'écrire (technologie).

Suggérez s'il vous plaît!

Merci.

EDIT: L'impression doit être envoyée sur l'imprimante par défaut de l'utilisateur.

21
Ramiz Uddin

Je n'ai pas pu trouver de solution pour les autres les navigateurs. Lorsque j'ai posté cette question, IE était sur le plus haute priorité et volontiers j'ai trouvé un pour cela. Si vous avez une solution pour les autres navigateurs (firefox, safari, opera), veuillez partager ici . Merci.

VBSCRIPT est beaucoup plus pratique que de créer un ActiveX sur VB6 ou C #/VB.NET:

<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>

Maintenant, en appelant:

<a href="javascript:window.print();">Print</a>

enverra imprimer sans afficher la fenêtre d'impression.

15
Ramiz Uddin

IE9 ne prend plus en charge le déclenchement du VBScript Print () en appelant window.print () comme IE7 et IE8 le font. Ainsi, window.print () déclenchera désormais toujours le dialogue d'impression dans IE9.

Le correctif est assez simple. Il vous suffit d'appeler Print () lui-même, au lieu de window.print () dans l'événement onclick. 

J'ai décrit le correctif plus en détail dans une réponse à une autre question, avec un exemple de code de travail utilisant une syntaxe HTML légèrement mise à jour (autant que possible tout en restant testé en tant que code de travail).

Vous pouvez trouver cet exemple de code ici:

Contourner Printdialog dans IE9

3
purefusion

AttendStar a créé un module complémentaire gratuit qui supprime la boîte de dialogue Imprimer et supprime tous les en-têtes et les pieds de page de la plupart des versions de Firefox.

https://addons.mozilla.org/en-US/firefox/addon/attendprint/

Avec cette fonctionnalité, vous pouvez utiliser $ ('img'). Jqprint (); et jqprint for jquery imprimera uniquement cette image appelée automatiquement à partir de votre application Web.

3
Jon

Je ne crois pas que ce soit possible. La boîte de dialogue qui s’affiche permet à l’utilisateur de sélectionner une imprimante sur laquelle imprimer. Supposons donc que votre application puisse simplement cliquer et imprimer, et qu'un utilisateur clique sur votre bouton Imprimer, mais que deux imprimantes sont connectées à l'ordinateur. Ou, plus probablement, cet utilisateur travaille dans un immeuble de bureaux avec 25 imprimantes. Sans cette boîte de dialogue, comment l’ordinateur saurait-il sur quelle imprimante imprimer?

1
Zachary Murray

Pour les navigateurs IE, la "solution VBScript" fonctionne.

Mais comme mentionné par @purefusion sur Contourner Printdialog dans IE9 , utilisez Print () plutôt que window.print ()

0
pprain

this.print (false);

J'ai essayé ceci dans Chrome, Firefox et IE. Cela ne fonctionne que dans Firefox et IE, il utilise l'imprimante par défaut (avec les paramètres d'impression par défaut) et ne fonctionne que lorsque je présente un PDF (j'utilise Foxit Reader avec le mode de lecture sans échec désactivé). Chrome affiche la boîte de dialogue Imprimer, ainsi que les autres navigateurs lors du rendu d'une page HTML.

0
DannyC