¿Cómo imprimo un documento HTML desde un servicio web?

Quiero imprimir HTML desde un servicio web de C #. El control del navegador web es excesivo y no funciona bien en un entorno de servicio, ni funciona bien en un sistema con restricciones de seguridad muy estrictas. ¿Hay algún tipo de libre.NET ¿Biblioteca que soporte la impresión de una página HTML básica? Aquí está el código que tengo hasta ahora, que no funciona correctamente.

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

Esto funciona bien cuando se llama desde subprocesos de tipo UI, pero no sucede nada cuando se llama desde un subproceso de tipo servicio. CambiandoPrint() aShowPrintPreviewDialog() produce el siguiente error de secuencia de comandos de IE:

Error: dialogArguments.___IE_PrintType es nulo o no es un objeto.

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

Y aparece un pequeño cuadro de diálogo de vista previa de impresión vacío.

Respuestas a la pregunta(6)

Su respuesta a la pregunta