Chr*_*ett 15 c# printing webbrowser-control winforms
我终于想出了如何在不提示用户或显示IE窗口的情况下打印转换后的XML,但现在我需要指定一些副本以及可能的其他打印机设置.
有没有办法以编程方式更改WebBrowser控件上的打印机设置?
有问题的代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
Aus*_*nen 13
我成功的唯一方法是动态修改注册表(并将其更改回不影响其他任何内容).
您可以在CurrentUser下的"Software\Microsoft\Internet Explorer\PageSetup"中找到所需的设置.
要更改打印机,您可以使用:
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;
}
Run Code Online (Sandbox Code Playgroud)
至于副本数量,您始终可以将WebBrowser.Print置于while循环中.
小智 5
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26519 次 |
| 最近记录: |