Seit vielen Jahren haben wir die .net WebBrowser-Steuerelement verwendet, wie in anderen Antworten skizziert, aber in jüngster Zeit, dass geworden Kontrolle mehr und mehr instabil. Selbst wenn wir die Maschine, mit der wir unsere Pick-Sheets im Warehouse für die Ausführung von Windows 10 drucken, neu erstellen, haben wir immer noch Probleme mit Seiten, die einfach nie gedruckt werden, bis wir den Computer neu starten. Der gleiche Code hat uns gut über 4 Jahre hinweg gedient, aber jetzt scheint es, dass jüngste Updates von Microsoft diese Kontrolle noch buggyer gemacht haben als in der Vergangenheit. Das andere wichtige Problem ist, dass es keine einfache Möglichkeit gibt, auf einen anderen Drucker als den für Internet Explorer festgelegten Standard zu drucken. Wenn Sie also auf verschiedenen Druckern drucken möchten, haben Sie mit dieser Steuerung ziemlich viel Glück.
Vor vielen Jahren haben wir eine Version unseres Druckcodes für Packzettel mit C++ und der QtWebKit-Bibliothek geschrieben. Um diese Probleme zu lösen, grub ich die alte C++ - Anwendung aus, die Webseiten-Dateien druckte und in dieses Projekt verwandelte, um über die Befehlszeile zu drucken, und ermöglichte es, auf verschiedenen Druckern zu drucken.
Sie können den Quellcode für es hier:
https://github.com/kendallb/PrintHtml
und Sie können ein Download 32-Bit-Binär-vorkompilierte für Windows MinGW mit von hier:
https://github.com/kendallb/PrintHtml/blob/master/deploy/PrintHtml-window-x86.zip?raw=true
Der Code ist vollständig portierbar, so dass Sie ihn leicht kompilieren können, um auf Mac OS oder Linux zu laufen, wenn es aus dem Quellcode gewünscht wird.
Die Kommandozeile ist ziemlich einfach zu bedienen und die Nutzung ist unter:
Usage: PrintHtml [-test] [-p printer] [-l left] [-t top] [-r right] [-b bottom] <url> [url2]
-test - Don't print, just show what would have printed.
-p printer - Printer to print to. Use 'Default' for default printer.
-l left - Optional left margin for page.
-t top - Optional top margin for page.
-r right - Optional right margin for page.
-b bottom - Optional bottom margin for page.
url - Defines the list of URLs to print, one after the other.
Offensichtlich ist dies die Verwendung von einer .NET-Anwendung müssen Sie es auf der Kommandozeile, um laichen, aber das ist ziemlich einfach, machen. im Verzeichnis ist das PrintHtml.exe Programm Unter der Annahme, für Ihre Anwendung oder Website ist, können Sie es von .net wie so laufen:
public bool PrintHtmlPages(
string printer,
List<string> urls)
{
try {
// Spawn the code to print the packing slips
var info = new ProcessStartInfo();
info.Arguments = $"-p \"{printer}\" \"{string.Join("\" \"", urls)}\"";
var pathToExe = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
info.FileName = Path.Combine(pathToExe, "PrintHtml.exe");
using (var p = Process.Start(info)) {
// Wait until it is finished
while (!p.HasExited) {
Application.DoEvents();
System.Threading.Thread.Sleep(10);
}
// Return the exit code
return p.ExitCode == 0;
}
} catch {
return false;
}
}
Vielen Spaß!
Sie sollten beachten, dass dies nur vom Windows Forms-WebBrowser-Steuerelement und nicht von WPF unterstützt wird. – ygoe