Como faço para imprimir um documento HTML de um serviço da web?

Eu quero imprimir HTML de um serviço da Web c #. O controle do navegador da Web é excessivo e não funciona bem em um ambiente de serviço, nem funciona bem em um sistema com restrições de segurança muito restritas. Existe algum tipo de livre.NET biblioteca que suportará a impressão de uma página HTML básica? Aqui está o código que tenho até agora, que não funciona corretamente.

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

Isso funciona bem quando chamado de segmentos de tipo de interface do usuário, mas nada acontece quando chamado de um segmento de tipo de serviço. MudandoPrint() paraShowPrintPreviewDialog() produz o seguinte erro de script do IE:

Erro: dialogArguments.___IE_PrintType é nulo ou não é um objeto.

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

E uma pequena caixa de diálogo de visualização de impressão vazia é exibida.

questionAnswers(6)

yourAnswerToTheQuestion