¿Cómo cambio programáticamente la configuración de la impresora con el control WebBrowser?

Finalmente descubrí cómo imprimir el XML transformado sin preguntar al usuario o mostrar una ventana de IE, pero ahora necesito especificar una cantidad de copias y posiblemente otras configuraciones de impresora.

¿Hay alguna manera de cambiar programáticamente la configuración de la impresora en un control WebBrowser?

El código en cuestión:

private static void PrintReport(string reportFilename) { WebBrowser browser = new WebBrowser(); browser.DocumentCompleted += browser_DocumentCompleted; browser.Navigate(reportFilename); } private static void browser_DocumentCompleted (object sender, WebBrowserDocumentCompletedEventArgs e) { WebBrowser browser = sender as WebBrowser; if (null == browser) { return; } browser.Print(); browser.Dispose(); } 

El único método con el que he tenido éxito es modificar el registro sobre la marcha (y volver a cambiarlo para que no afecte a nada más).

Puede encontrar la configuración que necesita en “Software \ Microsoft \ Internet Explorer \ PageSetup” en CurrentUser.

Para cambiar la impresora, puede usar esto:

 using System.Management public static bool SetDefaultPrinter(string defaultPrinter) { using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer")) { using (ManagementObjectCollection objectCollection = objectSearcher.Get()) { foreach (ManagementObject mo in objectCollection) { if (string.Compare(mo["Name"].ToString(), defaultPrinter, true) == 0) { mo.InvokeMethod("SetDefaultPrinter", null, null); return true; } } } } return false; } 

En cuanto al número de copias, siempre puede poner el WebBrowser.Print en un ciclo while.

necesita cambiar la configuración del registro a través del código para cambiar la configuración de Internet Explorer o el control del navegador web. revise el enlace a continuación, describe cómo hacerlo, también si hay más opciones que necesita alterar usando el registro, luego use regedit.exe para encontrar qué otras claves tiene Internet Explorer.

http://support.microsoft.com/kb/236777

ps: debe tener en cuenta que cualquier cambio que realice a través de su código a la configuración de registro de Internet Explorer persistirá en su sistema / cuenta de usuario.

  string strKey = "Software\\Microsoft\\Internet Explorer\\PageSetup"; bool bolWritable = true; RegistryKey oKey = Registry.CurrentUser.OpenSubKey(strKey, bolWritable); Console.Write(strKey); if (stringToPrint.Contains("Nalog%20za%20sluzbeno%20putovanje_files")) { oKey.SetValue("margin_bottom", 15); oKey.SetValue("margin_top", 0.19); } else { //Return onld walue oKey.SetValue("margin_bottom", 0.75); oKey.SetValue("margin_top", 0.75); } 

Esto funcionó bien para mí, sin embargo, estoy en .NET 3.5

 this.webBrowser1.ShowPrintDialog();