2014-02-17 159 views
6

我在打印机上定义了几种自定义纸张尺寸(打印机设置为默认)。我需要能够选择其中一种格式作为默认格式。更改打印机默认纸张尺寸

编程(C#)解决方案将是理想的,但命令行也可以。

现在,我可以获取打印机上定义的纸张大小(名称/尺寸)列表,并且我可以找出哪一个是默认设置。

在为了选择另一种格式作为默认值,我迄今为止是通过改变在DEVMODE结构dmPaperSize字段唯一的解决办法;但我找不到与所需纸张格式相对应的正确值。因此,我将dmPaperSize设置为0,并将其增加,直到打印机上出现正确的格式。这在一些打印机上花费很长时间。

是否有另一种方法来选择(通过名称)在默认打印机上的默认文件格式?

+0

您是否尝试过我建议的解决方案? –

回答

8

您正在更改默认打印机设置的正确方向。 .NET不提供直接支持来更改打印机的默认设置。

我使用this codeproject文章中的PrinterSettings类来更改打印机设置。

可使用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); 
     }    
    } 
} 
+0

PaperSize.RawKind正是我在找的,谢谢! – Andy

+0

@安迪 - 很高兴帮助:) – Junaith

+0

找不到PrinterData类。 – digz6666

5

下面的代码将设置默认打印机纸张大小:

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

有关如何使用PrintDocument的,你可以参考这个link打印。

希望这会有所帮助。

+0

尽管问题是关于选择现有格式作为默认格式(而不是打印),但该代码仅适用于某些打印机。但是我没有尝试打印,我想更改打印机上的_default_ _settings_,以便在发送文档时(通过任何其他程序),将使用新格式。 – Andy

相关问题