Estoy tratando de usar un control WebBrowser invisible para imprimir un documento HTML muy simple. Nuestra aplicación requiere que podamos imprimir varios documentos de esta manera, y que todos puedan enviarse a diferentes impresoras. Lamentablemente, no he tenido mucho éxito en hacer que la salida vaya a la impresora correcta.Programando el cambio de la impresora de destino para un control WinForms WebBrowser
La forma en que funciona ahora es que, antes de imprimir un documento, la aplicación determina qué impresora va a recibirlo y configura la impresora predeterminada en consecuencia. Para hacer esto, usa SetDefaultPrinter() importado de WinSpool.drv. Si paso el código en el modo de depuración puedo ver claramente que la impresora predeterminada cambia (y este cambio se refleja en la interfaz de usuario del panel de control), pero WebBrowser aún insiste en usar la impresora predeterminada original.
La documentación de MSDN, por lo que he visto, realmente no proporciona una solución para este escenario. Agradecería enormemente algunos comentarios sobre cómo puedo lograr esto programáticamente.
Por curiosidad: aceptaste mi respuesta, pero hice unos 6 sugerencias diferentes. ¿Qué solución eligió? ¿Cuál funcionó para usted? – ChrisW
@ChrisW: Perdón por no ser claro acerca de esto. El uso de las API de ActiveX finalmente resolvió el problema. Básicamente, tomo el objeto WebBrowser.ActiveXInstance, registro un controlador para el evento PrintTemplateTeardown y espero a que ocurra antes de considerar la impresión de una página. Curiosamente, esto resolvió todos los problemas de destino de impresión que tuvimos con el control de envoltura de WebBrowser administrado. ¡Gracias por tu consejo! –