Установите ориентацию страницы при печати из элемента управления WebBrowser в c #.(Без применения WPF) - PullRequest
2 голосов
/ 01 марта 2012

Можно ли изменить ориентацию на принтере при использовании веб-браузера? Мне нужно изменить это на ландшафт. Если мне нужно изменить настройки принтера по умолчанию для самого принтера, это будет нормально, так как я просто верну их обратно после завершения. (Это то, что я сейчас делаю с печатью на принтере не по умолчанию).

В настоящее время я использую это, чтобы временно установить принтер по умолчанию, а затем установить его обратно после завершения задания печати ...

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

Кто-нибудь знает, как изменить ориентацию?

Ответы [ 2 ]

1 голос
/ 24 июля 2018

Вы можете сделать это, используя шаблоны печати IE.Об этом не так уж много документации, но здесь ниже еще одно сообщение о переполнении стека, которое предлагает некоторые полезные ссылки на этот счет, и оно мне очень помогло:

Настройки печати WebBrowser

Самой полезной частью было предложение просмотреть стандартный шаблон печати IE, перейдя по указанному ниже URL-адресу внутри IE:

res: //ieframe.dll/preview.dlg

А также вы можете просмотреть связанный файл JavaScript, перейдя по указанному ниже URL-адресу внутри IE:

res: //ieframe.dll/preview.js

Эти два файла мне очень помоглипонять, что происходит в фоновом режиме, и, изменив значение «Printer.orientation» внутри файла «preview.js», я смог бы успешно изменить ориентацию печатного документа HTML.

0 голосов
/ 16 марта 2014

// EDIT: Я проверял это неправильно. Документация, относящаяся к этому ключу реестра, относится к 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);

Вы должны сохранить старое значение и восстановить его после печати. ​​

...