2010-11-27 18 views
14

Die unten Snippet funktioniert gut, aber es das Dialogfeld Fenster zu öffnen,Javascript-Druck ohne Druckdialogfeld

, aber ich möchte nicht das Dialogfeld Drucken öffnen,

nur Druck sollte ohne Dialogfeld durchgeführt, auszudrucken nehme in Punktmatrixdruckern

was Schnipsel i in der unten stehenden snippet hinzufügen soll,

Und auch ein Zweifel, ich will, arbeiten die unten Schnipsel wissen?

var prtContent = document.getElementById(strid); 
var WinPrint = 
window.open('','','left=0,top=0'); 
WinPrint.document.write(prtContent.innerHTML); 
WinPrint.document.close(); 
WinPrint.focus(); 
WinPrint.print(); 
WinPrint.close(); 
prtContent.innerHTML=strOldOne; 

ich die Abrechnung Anwendung entwickelt,

Wenn ich das Druckdialogfeld zeige, dann verbrauchen sie einige Sekunden, um den Druck zu geben, siehe, ich habe mehr Drucker getan, ich habe nur einen Drucker, dass Punktmatrix ist, wann immer ich Druckbefehl geben, dann sollte es die Rechnung ohne offene Dialogfeld drucken drucken,

+2

Wie erwarten Sie, dass der Benutzer auswählt, auf welchen Drucker gedruckt werden soll? –

+1

@Ignacio Vazquez-Abrams: Die meisten Systeme haben die Vorstellung eines "Standarddruckers". Drucken von einem Browser ohne Benutzerbestätigung klingt jedoch nach einer nicht ganz großartigen Idee ("aber natürlich werden alle Besucher unserer Website einen Ausdruck unserer neuen Anzeige haben wollen!" - Pop-ups auf dem Bildschirm waren) schlecht genug) – Piskvor

+0

Firefox kann konfiguriert werden, um direkt zu drucken, ohne den Dialog anzuzeigen, siehe http://forums.mozillazine.org/viewtopic.php?t=48336 – Nelson

Antwort

9

Dies ist absolut möglich. Ich arbeite im Bankwesen und hatte eine Webseite, die Kassierer benötigten, um automatisch zu drucken, wenn eine Transaktion gebucht wurde. Da sie den ganzen Tag Transaktionen durchführen, würde sie sie verlangsamen, wenn sie das Dialogfeld immer anzeigen würden. Dieser Code wird Ihren Standarddrucker auswählen und direkt ohne Dialogfeld drucken.

<form> 
<input type="button" value="Print Page" onClick="window.print()"> 
</form> 


<script language="VBScript"> 
// THIS VB SCRIP REMOVES THE PRINT DIALOG BOX AND PRINTS TO YOUR DEFAULT PRINTER 
Sub window_onunload() 
On Error Resume Next 
Set WB = nothing 
On Error Goto 0 
End Sub 

Sub Print() 
OLECMDID_PRINT = 6 
OLECMDEXECOPT_DONTPROMPTUSER = 2 
OLECMDEXECOPT_PROMPTUSER = 1 


On Error Resume Next 

If DA Then 
call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1) 

Else 
call WB.IOleCommandTarget.Exec(OLECMDID_PRINT ,OLECMDEXECOPT_DONTPROMPTUSER,"","","") 

End If 

If Err.Number <> 0 Then 
If DA Then 
Alert("Nothing Printed :" & err.number & " : " & err.description) 
Else 
HandleError() 
End if 
End If 
On Error Goto 0 
End Sub 

If DA Then 
wbvers="8856F961-340A-11D0-A96B-00C04FD705A2" 
Else 
wbvers="EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B" 
End If 

document.write "<object ID=""WB"" WIDTH=0 HEIGHT=0 CLASSID=""CLSID:" 
document.write wbvers & """> </object>" 
</script> 
+0

schnelle Frage, diese Arbeit in allen Plattform. (Win, Linux, Mac) – Bharanikumar

+0

Nicht sicher. Ich benutze IE einfach auf einem Windows-PC. – JoBaxter

+12

Das ist IE spezifisch. – thejh

2

es ist nicht möglich, und es gibt ein paar gute Gründe dafür:

  • der Benutzer könnte selbst einen Drucker
  • der Benutzer möchten in der Lage sein zu steuern, wenn sein Drucker aktiviert werden soll (stellen Sie sich vor, böse auto-selbst drucken Werbung Popups, ARRGH!)
  • könnte der Benutzer möchten die Druckereinstellungen (Graustufen oder Farbe, Auflösung, Größe, ...)
+1

Es ist möglich. Bitte sehen Sie meinen Kommentar. Und meine Benutzer sind Kassierer, die automatisch drucken müssen, wenn eine Transaktion gebucht wird. Sie drucken mit den Standardeinstellungen auf demselben Drucker. Nichts ändert sich mehr als die nächste Person, die zum Fenster des Wählers geht. – JoBaxter

+4

-1 Dies ist nicht die Antwort. Jeder weiß, warum wir einen Dialog brauchen. Aber es gibt viele Szenarien, in denen das Drucken ohne Dialog Zeit und Geld spart. Zum Beispiel im Bankwesen. –

+0

Ich kaufe das nicht als Antwort, eher ein "Du solltest das nicht tun" Kommentar. Ich brauche genau das, was das OP verlangt, weil ich versuche, ein Programm zu schreiben, das Schecks druckt, und ich kann dem Benutzer nicht erlauben, den Druckdialog dafür zu verwenden. Die akzeptierte Antwort ist nah an dem, was ich suche. –

8

Es scheint, die meisten Menschen konzentrieren sich auf die negativen Aspekte eines solchen Merkmals angeben.

Ja, in den meisten Fällen wäre es nicht wünschenswert, dass eine Website das Dialogfeld unterdrücken könnte.

Aber in einigen Fällen, wie in diesem Beispiel, wo er versucht, eine Quittung für sein Geschäft aus dem Browser zu drucken. Wie ich in einem solchen Fall verstehe, ist jede Sekunde zu wertvoll, um verschwendet zu werden, was möglicherweise Hunderte von Quittungen pro Tag bestätigt.

Es ist ein Geschäft, wo Zeit Geld ist!

Es gibt unzählige andere Fälle, in denen man das Dialogfeld unterdrücken möchte, wie etwa die eBay-Verkäufer, die ihre Etiketten vor dem Versand drucken.

Idealerweise sollte der Website-Entwickler in der Lage sein, einige grundlegende Parameter wie Druckername, Farbe/Monochrom, Qualität, Papierformat anzugeben. Und befehlen Sie den Druck vollständig von der Quelle coude, ohne irgendeine Handlung vom Benutzer zu erfordern, außer natürlich, diese Parameter nur einmal zu konfigurieren.

Leider sind die meisten Browser noch nicht da, da ihre Entwickler noch nicht das volle Potenzial haben, ALLE ANWENDUNGEN von Anwendungen in der Cloud zu hosten, einschließlich Anwendungen, die Drucker wie POS und Etikettendrucksoftware verwenden! Übrigens, hier ist eine großartige Nische für Software als Service!

Die gute Nachricht ist, dass es bereits möglich ist, etwas ähnliches auf Firefox zu erreichen, wo Sie die Browsereinstellung ändern konnten, um das zu aktivieren, was sie "Silent Printing" nannten, sollten Sie es auf "Immer" setzen und Sie werden gut sein .

Ich bin sicher, IE könnte auch eine Möglichkeit haben, es zu tun, aber ich habe es noch nicht gefunden.

Jeder weiß, wie der Zustand der Drucker und Druckfunktionen von anderen gängigen Browsern wie Chrome und Opera ist?

2

Download von Google Chrome Version 18.xx.xx.xx und Sie können Flags verwenden, um den Druckerdialog

--kiosk-noprint

Etwas dieser Art und Weise auszuschalten, kann ich nicht ganz die Spitze erinnern off mein Kopf, aber Google wird dabei helfen. Dadurch kann der Dialog nicht aus dem Weg geräumt werden, wenn Sie auswählen, was Sie drucken möchten.