Jak wydrukować dokument HTML z usługi internetowej?

Chcę wydrukować HTML z usługi internetowej C #. Kontrola przeglądarki internetowej jest przesadna i nie działa dobrze w środowisku usługowym, ani nie działa dobrze w systemie o bardzo ograniczonych ograniczeniach bezpieczeństwa. Czy jest jakiś wolny.NET biblioteka, która będzie wspierać drukowanie podstawowej strony HTML? Oto kod, który mam do tej pory, który nie działa poprawnie.

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();
}

Działa to dobrze, gdy wywoływany jest z wątków typu UI, ale nic się nie dzieje, gdy zostanie wywołany z wątku typu usługi. Wymiana pieniędzyPrint() doShowPrintPreviewDialog() daje następujący błąd skryptu IE:

Błąd: dialogArguments.___IE_PrintType ma wartość null lub nie jest obiektem.

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

Pojawi się małe puste okno podglądu wydruku.

questionAnswers(6)

yourAnswerToTheQuestion