如何从打印机变量中获取纸张大小

本文关键字:获取 张大小 变量 打印机 | 更新日期: 2024-09-20 12:31:31

我有3台打印机连接到我的电脑,在我的获胜表格上,我用代码按名称选择打印(我不使用PrintDialog)。每台打印机都有不同的纸张尺寸(小、中、大)。有没有办法我可以得到当前打印机的纸张尺寸。我尝试

Console.WriteLine(e.PageSettings.Bounds.ToString());
Console.WriteLine(e.PageSettings.PaperSize.ToString());
Console.WriteLine(e.Graphics.VisibleClipBounds.ToString());
Console.WriteLine(e.Graphics.ClipBounds.ToString());

我从我的委托参数方法中得到变量e:

// When I launch my printer (in class constructor):
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(PrintLabel);
//.... other code

//My delegate method:
   private void PrintLabel(object o, PrintPageEventArgs e)
   {
      //This is my code from above:
        Console.WriteLine(e.PageSettings.Bounds.ToString());
      // other code
   }

但无论我使用哪台打印机,它都显示相同的尺寸。提前谢谢。

如何从打印机变量中获取纸张大小

为什么不使用System.Drawing.Printing命名空间中的特殊设计类?或者我在问题中遗漏了什么?

using System.Drawing.Printing;
public static PageSettings GetPrinterPageInfo(String printerName) {
  PrinterSettings settings;
  // If printer name is not set, look for default printer
  if (String.IsNullOrEmpty(printerName)) {
    foreach (var printer in PrinterSettings.InstalledPrinters) {
      settings = new PrinterSettings();
      settings.PrinterName = printer.ToString();
      if (settings.IsDefaultPrinter)
        return settings.DefaultPageSettings;
    }
    return null; // <- No default printer  
  }
  // printer by its name 
  settings = new PrinterSettings();
  settings.PrinterName = printerName;
  return settings.DefaultPageSettings;
}
// Default printer default page info
public static PageSettings GetPrinterPageInfo() {
  return GetPrinterPageInfo(null);
}
...
// Default printer default page
PageSettings page = GetPrinterPageInfo(); 
// Or default page of some other printer given by its name
// PageSettings page = GetPrinterPageInfo(MyPrinterName); 
RectangleF area = page.PrintableArea;
Rectangle bounds = page.Bounds;
Margins margins = page.Margins;