Wie drucke ich ein HTML-Dokument von einem Webdienst aus?

Ich möchte HTML von einem C # -Webdienst drucken. Das Webbrowser-Steuerelement ist überlastet und funktioniert in einer Serviceumgebung nicht einwandfrei. In einem System mit sehr strengen Sicherheitsanforderungen funktioniert es auch nicht einwandfrei. Gibt es irgendeine Art von frei.NET Bibliothek, die das Drucken einer einfachen HTML-Seite unterstützt? Hier ist der Code, den ich bisher habe, 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 einwandfrei, wenn es von UI-Threads aufgerufen wird, aber nichts passiert, wenn es von einem Service-Thread aufgerufen wird. ÄndernPrint() zuShowPrintPreviewDialog() ergibt folgenden IE-Skriptfehler:

Error: dialogArguments.___IE_PrintType ist null oder kein Objekt.

URL:res://ieframe.dll/preview.dlg

Ein kleines leeres Dialogfeld für die Druckvorschau wird angezeigt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage