Ich möchte HTML von einem C # -Webedienst drucken. Die Webbrowser-Steuerung ist übertrieben und funktioniert weder in einer Serviceumgebung noch auf einem System mit sehr strengen Sicherheitsbeschränkungen. Gibt es eine kostenlose .NET
Bibliothek, die das Drucken einer einfachen HTML-Seite unterstützt? Hier ist der Code, den ich bisher habe und der nicht richtig läuft.
public void PrintThing(string document)
{
if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA)
{
Thread thread =
new Thread((ThreadStart) delegate { PrintDocument(document); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
else
{
PrintDocument(document);
}
}
protected void PrintDocument(string document)
{
WebBrowser browser = new WebBrowser();
browser.DocumentText = document;
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
browser.Print();
}
Dies funktioniert gut, wenn es von Threads vom Typ UI aufgerufen wird, aber nichts passiert, wenn es von einem Thread vom Typ Service aufgerufen wird. Das Ändern Print()
auf ShowPrintPreviewDialog()
ergibt den folgenden IE-Skriptfehler:
Fehler:
dialogArguments.___IE_PrintType
ist null oder kein Objekt.URL:
res://ieframe.dll/preview.dlg
Ein kleines leeres Druckvorschau-Dialogfeld wird angezeigt.