2009-07-08 11 views
21

Wie im Betreff erwähnt, muss ich eine Funktion für eine webbasierte Anwendung erstellen, die es Benutzern ermöglicht, den Druck direkt ohne Aufforderung zu senden Druck, einfach! aber nicht für mich :(.Direkt vom Browser drucken ohne Popup-Fenster drucken

Bitte schlagen, was die beste Option wäre, und wie soll ich es aufschreiben (Technik).

vorschlagen bitte!

Dank.

EDIT : Der Ausdruck sollte auf dem Standarddrucker des Benutzers gesendet werden

+0

ich schon hatte preassumed, dass eine solche Option möglich wäre IE durch ein ActiveX-Steuerelement zu machen. Aber ich konnte mich nicht erinnern, dass dies auch über VBScript möglich war. Got Lucky und fand dies: http://msdn.microsoft.com/en-us/library/ms976105.aspx Ich habe es noch nicht versucht, aber das gibt mir eine hilfreiche Erinnerung aussehen könnte dies retten mich zu bekommen meine hand schmutzig von activeX –

+0

Ich weiß, dass dieser Thread war super alt. Aber vielleicht versucht jemand es herauszufinden, bitte überprüfen Sie dies: https://github.com/apinprastya/pulas – Apin

+0

Einige andere Browser-Drucklösungen sind hier verfügbar: http://StackOverflow.com/a/28783269/3196753 – tresf

Antwort

13

Ich konnte keine Lösung für andere Browser finden. Als ich diese Frage gepostet habe, war IE auf der höheren Priorität und ich fand gerne einen dafür. Wenn Sie eine Lösung für andere Browser (Firefox, Safari, Oper) haben, bitte teilen Sie hier. Danke.

VBSCRIPT ist viel bequemer als ein ActiveX-Erstellung auf VB6 oder 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> 

Nun ruft:

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

wird Druck ohne Popup-Fenster drucken senden.

+0

Ich habe versucht, genau den gleichen Code in Javascript zu implementieren und es hat nicht funktioniert. Nur in VBScript. Warum funktioniert es in VBScript, aber nicht in Javascript? –

+0

@Jordao Ich denke, die obigen Konfigurationsvariablen sind nur Mitglieder von VBScript. Hier, im obigen Skript, setzen wir hauptsächlich Konfigurationsvariablen zurück. Dies ist nur ein Instinkt Gedanken an Ihre Frage. –

+0

Die Variablen, auf die Sie verweisen, sind nur Konstanten. Sie sollten in Javascript gleich funktionieren. –

1

Ich glaube nicht, dass das möglich ist.Das Dialogfeld, das angezeigt wird, ermöglicht dem Benutzer, einen Drucker zu wählen, um zu drucken, also sagen wir es Es kann für Ihre Anwendung möglich sein, einfach zu klicken und zu drucken, und ein Benutzer klickt auf die Druckschaltfläche, hat jedoch zwei Drucker mit dem Computer verbunden. Oder, wahrscheinlicher, dieser Benutzer arbeitet in einem Bürogebäude mit 25 Druckern. Wie würde der Computer ohne dieses Dialogfeld wissen, welcher Drucker gedruckt werden soll?

+0

Wie wäre es mit ActiveX Steuerung für IE, die einen Ausdruck auf dem Standarddrucker des Benutzers sendet. Das sieht ziemlich gut aus. Aber investieren Stunden Aufwand, um ein solches ActiveX zu erstellen, ist nicht gerechtfertigt, Funktion nur für IE-Benutzer bereitzustellen. –

+0

Zachary, das obige Skript sendet einen Druckbefehl auf einem Standarddrucker, ohne dass ein Popup-Fenster angezeigt wird. Aber das ist nur für IE. Ich hoffe, dass dies die Zweifel beantworten wird, die wir hatten :) –

+0

Oh wow, ich habe nicht einmal daran gedacht, VBScript zu benutzen. Großartig, Ramiz. Wenn Sie nur IE verwenden, dann sind Sie vollständig eingestellt: D –

-3

Das sollte funktionieren, ich habe es selbst versucht und es hat für mich funktioniert. Wenn Sie True statt False übergeben, wird der Druckdialog angezeigt.

+0

es gibt keine print() methode in java script mit booleschen parametern. –

+0

Auch wenn Sie dies tun könnten, würde ich aus proprietären Gründen nicht implementieren. Es sei denn, es handelt sich um eine spezifische Anwendung, die bei einer bestimmten Untergruppe von Personen verwendet wird. Selbst wenn, stellen Sie sich vor, wenn mein Drucker automatisch drucken würde, nur durch den Besuch einer Seite und ohne Bestätigung, was ich drucken wollte. 1. Ich würde denken, dass es einen möglichen Virus gibt, da ich nicht einmal gefragt wurde, ob ich drucken wollte. 2. Ich würde unzählige Papiere auf Maschinen der Leute verschwenden. Was, wenn sie nur eine Seite aus einem 15-seitigen Bericht wollten. END LESSION: Drucken sollte nicht ohne Druckprotokolle durchgeführt werden. – Spoo

3

AttendStar hat ein kostenloses Add-on erstellt, das den Druckdialog unterdrückt und alle Kopf- und Fußzeilen für die meisten Firefox-Versionen entfernt. .

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

Mit diesem Merkmal auf Sie $ ('img') jqprint() verwenden können; und jqprint für jquery druckt nur das Bild, das automatisch von Ihrer Webanwendung aufgerufen wird.

3

IE9 unterstützt nicht mehr das Auslösen des Print() VBScript durch Aufruf von window.print() wie IE7 und IE8, und somit wird window.print() nun immer den Druckdialog in IE9 auslösen.

Die Lösung ist ziemlich einfach. Sie müssen nur Print() selbst anstelle von window.print() im onclick-Ereignis aufrufen.

Ich habe das Update in einer Antwort auf eine andere Frage detaillierter beschrieben, mit einem funktionierenden Codebeispiel, das leicht aktualisierte HTML-Syntax (so viel wie möglich, während noch als Arbeitscode getestet).

können Sie diesen Beispielcode finden Sie hier:

Bypass Printdialog in IE9

0

this.print (false);

Ich habe dies in Chrome, Firefox und IE versucht. Es funktioniert nur in Firefox und IE, es verwendet den Standarddrucker (mit Standard-Druckeinstellungen) und funktioniert nur, wenn ich ein PDF rendere (ich benutze Foxit Reader mit deaktiviertem Lesemodus). Chrome zeigt den Druckdialog, auch die anderen Browser, wenn ich eine HTML-Seite rendere.

0

Für IE-Browser funktioniert die "VBScript-Lösung".

Aber wie bei Bypass Printdialog in IE9 von @purefusion erwähnt, verwenden Print() statt window.print()