从c#中的WebBrowser控件打印时设置页面方向.(非WPF应用)
本文关键字:方向 WPF 应用 设置 中的 WebBrowser 控件 打印 | 更新日期: 2023-09-27 18:26:28
使用Web浏览器控件时,是否可以更改打印机的方向?我需要把它改成风景画。如果我需要更改打印机本身的打印机默认值,那就可以了,因为我只会在完成后将其设置回。(这就是我目前要用非默认打印机打印的内容)。
我目前使用它临时设置默认打印机,然后在完成打印工作后将其设置回。。。
private string SetDefaultPrinter(string newDefaultPrinter)
{
//Get the list of configured printers:
string strQuery = "SELECT * FROM Win32_Printer";
string currentDefault = string.Empty;
System.Management.ObjectQuery oq = new System.Management.ObjectQuery(strQuery);
System.Management.ManagementObjectSearcher query1 = new System.Management.ManagementObjectSearcher(oq);
System.Management.ManagementObjectCollection queryCollection1 = query1.Get();
System.Management.ManagementObject newDefault = null;
foreach (System.Management.ManagementObject mo in queryCollection1)
{
System.Management.PropertyDataCollection pdc = mo.Properties;
if ((bool)mo["Default"])
{
currentDefault = mo["Name"].ToString().Trim();
if (newDefaultPrinter == null || newDefaultPrinter == string.Empty)
{
//Just need to know the default name
break;
}
}
else if (mo["Name"].ToString().Trim() == newDefaultPrinter)
{
//Save this for later
newDefault = mo;
}
}
//Reset the default printer
if (newDefault != null)
{
//Execute the method
System.Management.ManagementBaseObject outParams = newDefault.InvokeMethod("SetDefaultPrinter", null, null);
}
return currentDefault;
}
有人知道如何改变方向吗
您可以使用IE打印模板来完成此操作。关于这方面没有太多的文档,但下面是另一篇堆栈溢出的帖子,它建议了一些关于这方面的有用链接,它实际上对我帮助很大:
WebBrowser打印设置
最有用的部分是建议通过导航到IE内的以下URL来查看标准IE打印模板:
res://ieframe.dll/preview.dlg
此外,您还可以通过在IE中导航到以下URL来查看相关的JavaScript文件:
res://ieframe.dll/preview.js
这两个文件帮助我了解了后台的情况,通过更改"preview.js"文件中的"Printer.orientation"值,我可以成功地更改打印的HTML文档的方向。
//编辑:我测试错了。引用此注册表项的文档适用于windows CE。。。因此,正确的答案是不可能,正如文件中"解释"的那样:http://support.microsoft.com/kb/236777
一个可能的解决方法是通过css旋转整个页面(transform:rotate(90deg)),但相对位置一直是旧的,所以对于多个页面来说就是一团糟。
令人难以置信的是,如此基本的事情却不能完成。。。
//旧答案:我一直在寻找同样的设置,最终发现你真的不能直接用网络浏览器组件更改打印机设置(页面方向、页眉、页脚、边距…),唯一的方法是更改注册表项以设置internet explorer的默认行为。
对于页面方向,它将是:
Registry.CurrentUser.OpenSubKey("Software''Microsoft''Windows''CurrentVersion''Internet Settings", true).SetValue("PageOrientation", 2);
您应该保留旧值,并在打印后将其恢复。