Ich suche nach einer Möglichkeit, eine formatierte HTML-Datei im Querformat in c # (in erster Linie wpf) zu drucken. Der Druckdialog wäre nett, um die Seiteneinstellung auf Querformat zu setzen. Ich habe versucht, den HTML-to-Xaml-Konverter von Microsoft zu verwenden, und es hat die Formatierung zerstört. Ich finde es ziemlich erstaunlich, dass es keine Methode gibt oder eine Datei ergreift und direkt an einen Drucker sendet.
Irgendwelche Ideen würden sehr geschätzt werden.
Sie können auf die Print () - Methode der WebBrowser-Klasse in C # zugreifen, um dies zu tun. Die coole Sache ist, dass Sie den WebBrowser nicht irgendwo in Ihrer Anwendung anzeigen müssen. Füttern Sie den Inhalt einfach wie folgt mit dem WebBrowser-Steuerelement:
webBrowser1.DocumentContent = openfiledialog.FileName;
Und dann rufen Sie einfach die Methode webBrowser1.Print();
auf. Hier ist eine MSDN-Referenz:
Hoffe, das hilft.
Viele Jahre lang haben wir das WebBrowser-Steuerelement von .net verwendet, wie in anderen Antworten beschrieben, aber in jüngerer Zeit wurde die Kontrolle immer instabiler. 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 einem anderen Drucker als dem für Internet Explorer festgelegten Standard zu drucken. Wenn Sie also auf verschiedenen Druckern drucken möchten, haben Sie mit diesem Steuerelement 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 dafür hier bekommen:
und Sie können eine 32-Bit-Binärdatei, die für Windows mit MinGW vorkompiliert wurde, von hier herunterladen:
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 Befehlszeile ist ziemlich einfach zu verwenden und die Verwendung ist unten:
%Vor%Um dies aus einer .net-Anwendung heraus zu verwenden, müssen Sie es in der Befehlszeile erzeugen, aber das ist ziemlich einfach. Angenommen, das Programm PrintHtml.exe befindet sich im bin-Verzeichnis für Ihre Anwendung oder Website, können Sie es wie folgt von .net aus starten:
%Vor%Viel Spaß!
Es klingt für mich wie der beste Weg, den Sie gehen möchten, ist, zuerst die HTML-Rendering-Engine zu wählen und sich nach Druckunterstützung umzusehen. Es gibt keine "Standard" -Möglichkeit, ein HTML-Dokument unabhängig von Sprache, Betriebssystem oder Framework zu drucken.