从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;
}

有人知道如何改变方向吗

从c#中的WebBrowser控件打印时设置页面方向.(非WPF应用)

您可以使用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);

您应该保留旧值,并在打印后将其恢复。