Как распечатать документ HTML из веб-службы?

Я хочу напечатать HTML из веб-службы C #. Управление через веб-браузер является избыточным, оно плохо работает в сервисной среде и не работает хорошо в системе с очень жесткими ограничениями безопасности. Есть ли какой-нибудь бесплатный.NET библиотека, которая будет поддерживать печать базовой HTML-страницы? Вот код, который у меня есть, который не работает должным образом.

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

Это прекрасно работает при вызове из потоков типа пользовательского интерфейса, но ничего не происходит при вызове из потока типа службы. измененияPrint() вShowPrintPreviewDialog() выдает следующую ошибку скрипта IE:

Ошибка: dialogArguments.___IE_PrintType является нулем или не объектом.

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

И появляется небольшое пустое диалоговое окно предварительного просмотра.