我試圖獲得各種打印機托盤的正確詳細信息,但遇到了問題。一些研究之後,我已經添加了ReachFramework.dll也獲取額外的PaperSource詳細信息
using System.Drawing.Printing;
要獲得托盤的名字我運行下面的代碼打印機...
PrintDocument printDocument = new PrintDocument();
printDocument.PrinterSettings.PrinterName = "<Windows Printer Name>";
foreach (PaperSource paperSource in printDocument.PrinterSettings.PaperSources)
{
Console.WriteLine(paperSource.ToString());
}
...替換「Windows打印機名稱」。對於某些打印機它的偉大工程,我得到類似以下的輸出...
[PaperSource Auto Tray Select Kind=AutomaticFeed]
[PaperSource Tray 1 Kind=Upper]
[PaperSource Tray 2 Kind=Middle]
[PaperSource Tray 3 Kind=Lower]
[PaperSource Bypass Tray Kind=Manual]
這是你所期待的。然而,對於某些打印機,我得到以下...
[PaperSource Automatically Select Kind=FormSource]
[PaperSource Printer auto select Kind=Custom]
[PaperSource Manual Feed in Tray 1 Kind=Custom]
[PaperSource Tray 1 Kind=Custom]
[PaperSource Tray 2 Kind=Custom]
[PaperSource Tray 3 Kind=Custom]
[PaperSource Unspecified Kind=Custom]
[PaperSource Plain Kind=Custom]
[PaperSource HP Matte 90g Kind=Custom]
[PaperSource Light 60-74g Kind=Custom]
[PaperSource Bond Kind=Custom]
[PaperSource Recycled Kind=Custom]
[PaperSource HP Matte 105g Kind=Custom]
[PaperSource HP Matte 120g Kind=Custom]
[PaperSource HP Soft Gloss 120g Kind=Custom]
[PaperSource HP Glossy 130g Kind=Custom]
... Additional 20 lines ...
該打印機返回36盤,但只有前6個是有效的紙盒類型。此外,打印機僅配備2個標準托盤,因此'托盤3'也不存在。
所以我的問題是這樣的。我如何過濾這個列表,以便只顯示正確的托盤?
他們都是有效的打印機嗎?你如何迭代打印機? – jle 2013-05-01 17:27:46
在本例中沒有必要遍歷打印機,因爲您只需完全命名它即可,但是我使用System.Printing.LocalPrintServer()。GetPrintQueues(enumFlags)來獲取Windows打印機名稱。 – Thundter 2013-05-02 09:23:42