Изменение формата бумаги принтера по умолчанию



У меня есть несколько пользовательских форматов бумаги, определенных на принтере (принтер установлен по умолчанию). Мне нужно иметь возможность выбрать один из этих форматов в качестве стандартного.



Программное (C#) решение было бы идеальным, но и командная строка тоже была бы в порядке.



Прямо сейчас я могу получить список форматов бумаги(имя/размеры), определенных на принтере, и я могу узнать, какой из них является стандартным.



Чтобы выбрать другой формат по умолчанию, единственное решение, которое у меня есть до сих пор это путем изменения поляdmPaperSize в структуреdevMode ; но я не могу найти правильное значение, соответствующее требуемому формату бумаги. Поэтому я устанавливаю dmPaperSize в 0 и увеличиваю его, пока на принтере не появится правильный формат. На некоторых принтерах это занимает очень много времени.



Есть ли другой способ выбрать (по имени) формат papaer по умолчанию на принтере по умолчанию ?

801   2  

2 ответов:

Вы находитесь в правильном направлении при изменении настроек принтера по умолчанию. .NET не предоставляет прямой поддержки для изменения параметров принтера по умолчанию.

Я использовал класс PrinterSettings из этой статьи codeproject для изменения настроек принтера.

Доступные размеры бумаги из принтера можно извлечь с помощью кнопки PrintDocument.PrinterSettings. Ниже приведен пример кода для извлечения доступных размеров бумаги из принтера и использования PaperSize.RawKind для изменения размера бумаги принтера. принтер.

public class PrinterSettingsDlg : Form
{
    PrinterSettings ps = new PrinterSettings();
    Button button1 = new Button();
    ComboBox combobox1 = new ComboBox();
    public PrinterSettingsDlg()
    {
        this.Load += new EventHandler(PrinterSettingsDlg_Load);
        this.Controls.Add(button1);
        this.Controls.Add(combobox1);
        button1.Dock = DockStyle.Bottom;
        button1.Text = "Change Printer Settings";
        button1.Click += new EventHandler(button1_Click);
        combobox1.Dock = DockStyle.Top;
    }

    void button1_Click(object sender, EventArgs e)
    {
        PrinterData pd = ps.GetPrinterSettings(PrinterName);
        pd.Size = ((PaperSize)combobox1.SelectedItem).RawKind;
        ps.ChangePrinterSetting(PrinterName, pd);
    }

    void PrinterSettingsDlg_Load(object sender, EventArgs e)
    {
        PrintDocument pd = new PrintDocument();
        pd.PrinterSettings.PrinterName = // printer name
        combobox1.DisplayMember = "PaperName";
        foreach (PaperSize item in pd.PrinterSettings.PaperSizes)
        {
            combobox1.Items.Add(item);
        }            
    }
}

Следующий код установит размер бумаги принтера по умолчанию:

PrintDocument pd = new PrintDocument();
pd.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("PaperA4", 840, 1180);
pd.Print();

О том, как печатать с помощью PrintDocument, вы можете сослаться на эту ссылку .

Надеюсь, это поможет.

Comments

    Ничего не найдено.