Quiero imprimir HTML desde un servicio web 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 biblioteca .NET
que sea compatible con la impresión de una página HTML básica? Aquí está el código que tengo hasta ahora, que no se ejecuta correctamente.¿Cómo imprimo un documento HTML desde un servicio web?
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 roscas tipo de interfaz de usuario, pero no pasa nada cuando se llama desde un hilo de tipo de servicio. Cambiando Print()
a ShowPrintPreviewDialog()
produce el siguiente error de script IE:
Error: 'dialogArguments.___IE_PrintType' is null or not an object
URL: res://ieframe.dll/preview.dlg
y aparece un pequeño diálogo de vista previa de impresión vacío.
Por favor, seleccione la mejor respuesta, gracias. – mruanova
@mruanova Ninguna de las respuestas funcionó la última vez que las probé. Si tiene algo que funciona, háganoslo saber. –