Guten Tag,
ich versuche gerade aus meinem Programm heraus eine txt- und eine html-Datei zu drucken. Mit der txt-Datei funktioniert das auch problemlos.
Bei der html-Datei öffnet sich immer das Fenster für die Druckerauswahl.
Meine Frage ist, kann ich dieses Fenster unterdrücken und das Dokument direkt an den Standarddrucker senden?
var printProcess = new Process()
printProcess.StartInfo.FileName = speicherortHtml;
printProcess.StartInfo.UseShellExecute = true;
printProcess.StartInfo.Verb = "print";
printProcess.StartInfo.Arguments = "\""+"standardDrucker"+"\"";
printProcess.Start();
IIRC geht das bei HTML Dateien in der Form nicht, da der Drucker mit HTML nichts anfangen kann. Mit Text geht das.
Der Drucker müsste ja das HTML Rendern, was er sicherlich nicht kann.
Vermutlich wirst Du ein WebBrowserControl brauchen oder zB. auf die IE Libs zugreifen müssen, um das ohne Dialog hinzubekommen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo danke für deine Antwort.
Der Drucker druckt nach den Druckdialog das html-file ganz normal aus. Es geht nur darum, dass der Druckdialog nicht aufgerufen wird.
Hallo,
der Dialog kommt aber eben genau von dem Programm, das das HTML für Dich rendert bevor es an den Drucker gesendet wird. Mit ShellExecute = true
und dem Verb = "print"
wird eben ein Programm ausgeführt, das in der Registry für diesen Dateityp und dieses Verb gelistet ist. Das wird dann für gewöhnlich mit einer Kommandozeilenoption aufgerufen, die nur den Druckdialog anzeigt.
Kannst ja mal bei Dir in HKEY_CLASSES_ROOT\htmlfile\shell\Print\command
gucken, da sollte das Kommando drinstehen.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Such doch mal nach einer Bibliothek mit Render-Klassen für HTML-Dateien.
Für pdf-Dateien bietet ja bspw. Adobe auch eine entsprechende Möglichkeit an mit einer print-Methode
OO gibts seit Platon - hatte der auch C#?