簡體   English   中英

如何從打印機變量獲取紙張尺寸?

[英]How to get paper size from printer variable?

我有3台打印機連接到我的電腦,在我的win表格中,我按代碼選擇打印,(我不使用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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM