如何从打印机变量获取纸张尺寸? [英] How to get paper size from printer variable?

查看:85
本文介绍了如何从打印机变量获取纸张尺寸?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有3台打印机连接到我的PC,并且在我的获胜表格上,按名称通过代码选择了打印(我不使用PrintDialog).每台打印机都有不同的纸张尺寸(小,中和大).有什么方法可以获取当前打印机的纸张尺寸.我尝试

I have 3 printers connected to my PC and on my win form I select the print by name, in code, (I don't use PrintDialog). Every printer has different paper size (small, medium and large). Is any way I can get the paper size for current printer. I try

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:

I get the variable e from my delegate parameter method:

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

但是无论我使用哪种打印机,它都显示相同的尺寸.预先感谢.

But it show me the same size no matter which printer I use. Thanks in advance.

推荐答案

为什么不只使用 System.Drawing.Printing 命名空间中的特殊设计的类?还是我错过了问题中的某些内容?

Why don't just use specialy designed classes from System.Drawing.Printing namespace? Or I've missed something in the question?

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;

这篇关于如何从打印机变量获取纸张尺寸?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆