如何在 C# 中取得印表機名稱

Curtis Chau
Curtis Chau
Updated: 2026年6月29日

了解系統上可用的印表機,是任何將文件送印的 .NET 應用程式常見的先決條件。 無論目標是讓使用者從下拉式選單中選擇印表機,還是自動將列印工作導向特定裝置,透過程式化方式取得印表機名稱都是第一步。

IronPrint 提供一個靜態方法 - Printer.GetPrinterNames() - 該方法會將當前 Windows 電腦上所有已安裝的印表機以 List<string> 的形式傳回。 以下內容涵蓋安裝步驟、同步與非同步資料擷取,以及如何將選定的印表機名稱傳入列印工作。

快速入門:擷取印表機名稱
  1. 透過 NuGet 安裝 IronPrint:Install-Package IronPrint
  2. 在檔案中加入 using IronPrint;
  3. 呼叫 Printer.GetPrinterNames() 以取得 List<string> 列印機名稱
  4. 遍歷清單並顯示或儲存每個名稱
  5. PRINT時將選定的名稱傳遞給 PrintSettings.PrinterName
  1. 1Install IronPrint with NuGet Package Manager

    PM > Install-Package IronPrint

  2. 2複製並運行這段程式碼片段。

    using IronPrint;
    
    // Retrieve every printer installed on this machine
    List<string> printers = Printer.GetPrinterNames();
    
    foreach (var name in printers)
    {
        Console.WriteLine(name);
    }
  3. 3部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronPrint,透過免費試用
    arrow pointer

如何列出所有已安裝的印表機名稱?

Printer.GetPrinterNames() 會查詢作業系統,並將所有已註冊的印表機以 List<string> 的形式回傳。 我們呼叫此方法一次,並遍歷其結果:

using IronPrint;
using System;
using System.Collections.Generic;

// List every installed printer
List<string> printerNames = Printer.GetPrinterNames();

Console.WriteLine($"Found {printerNames.Count} printer(s):\n");

// Print each printer name
foreach (string name in printerNames)
{
    Console.WriteLine($"  • {name}");
}

主控台輸出

找到 3 台印表機:

  • Microsoft Print to PDF
  • HP LaserJet Pro MFP M428
  • OneNote (桌面版)
Text

返回的清單包含本地印表機、網路印表機以及虛擬印表機驅動程式。 每個字串均與"Windows 設定 > 印表機與掃描器"面板中顯示的名稱完全一致,因此可直接用於列印設定的配置。

若未安裝印表機,此方法會傳回一個空清單,而非拋出例外。 在向使用者提供選項之前,只需進行一次 printerNames.Count 快速檢查即可。

如何以非同步方式取得印表機名稱?

對於無法阻塞 UI 執行緒的應用場景(例如 WPF、MAUI 或 ASP.NET Web 應用程式),IronPrint 提供 Printer.GetPrinterNamesAsync()。 此方法會傳回 Task<List<string>>,其運作方式與其同步版本完全相同:

using IronPrint;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

// Retrieve printer names asynchronously
List<string> printerNames = await Printer.GetPrinterNamesAsync();

// Print each printer name
foreach (string name in printerNames)
{
    Console.WriteLine(name);
}

我們 await 像處理其他任何非同步 API 一樣呼叫此方法。 結果與 List<string> 所返回的 GetPrinterNames() 相同,因此無需進行額外的解析或轉換。 此非同步模式可自然地與 async Task 控制器動作及 async void 事件處理常式整合。

如何根據印表機名稱指定特定印表機進行列印?

取得印表機名稱後,我們將其指派給 PrintSettings.PrinterName,並將設定物件傳遞給 Printer.Print()。 這會將文件直接傳送至選定的印表機,而不會顯示對話方塊:

using IronPrint;
using System.Collections.Generic;

// Retrieve available printers
List<string> printers = Printer.GetPrinterNames();

// Select a printer matching "LaserJet", or fall back to the first available
string targetPrinter = printers.Find(p => p.Contains("LaserJet"))
                       ?? printers[0];

// Configure print settings
PrintSettings settings = new PrintSettings
{
    PrinterName = targetPrinter,
    PaperSize = PaperSize.A4,
    NumberOfCopies = 1
};

// Print the document
Printer.Print("invoice.pdf", settings);

PrintSettings 支援其他屬性,例如 Grayscale 及 PaperMargins。 請參閱 PrintSettings API 參考文件及列印設定操作指南中的完整清單。

我們亦會透過 Printer.GetPrinterTrays(printerName) 取得特定印表機的可用紙匣資訊,當列印工作需要從特定紙匣取紙時,此功能便十分實用。

接下來我該怎麼做?

我們涵蓋了四項操作:安裝 IronPrint、使用 GetPrinterNames() 列出所有印表機名稱、使用 GetPrinterNamesAsync() 異步執行相同查詢,以及透過 PrintSettings.PrinterName 將文件路由至特定印表機。

如需進一步閱讀與更深入的範例,請參閱以下資源:

立即取得免費試用授權,在實際環境中測試所有功能;或於準備部署時查看授權選項。

常見問題

在C#中檢索列印機名稱的最簡單方法是什麼?

在C#中檢索列印機名稱的最簡單方法是使用IronPrint .NET,只需一次方法調用即可獲得已安裝列印機的列表。

我可以使用IronPrint異步檢索列印機名稱嗎?

是的,IronPrint .NET支持異步操作,允許您在不阻塞主執行緒的情況下檢索列印機名稱。

使用IronPrint能否按名稱列印到特定列印機?

當然,IronPrint .NET允許您指定列印機名稱,因此您可以將文件直接列印到您選擇的任何已安裝列印機。

IronPrint是否支持在所有.NET平台上檢索列印機名稱?

IronPrint .NET旨在與各種.NET平台配合使用,使您能夠在不同的環境中無縫檢索列印機名稱。

IronPrint如何在網路環境中處理列印機名稱?

IronPrint .NET 可以從本地和網路列印機中檢索列印機名稱,使其在不同的網路配置中使用靈活。

What additional properties can I configure with PrintSettings?

With PrintSettings, you can configure properties like Dpi, PaperSize, PaperOrientation, Grayscale, and PaperMargins.

How do I iterate over printer names in C# using IronPrint?

You can use a foreach loop to iterate over the list returned by Printer.GetPrinterNames(), allowing you to display or store each printer name.

Can IronPrint work with network and virtual printers?

Yes, the list returned by Printer.GetPrinterNames() includes local printers, network printers, and virtual print drivers.

Where can I find more information on printing settings in IronPrint?

You can refer to the [PrintSettings How-To Guide](https://ironsoftware.com/csharp/print/how-to/print-settings/) and the [API Reference](https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html) for detailed information.

Does IronPrint provide support for different paper trays?

Yes, you can use Printer.GetPrinterTrays(printerName) to retrieve available paper trays for a given printer.

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

閱讀更多

準備好開始了嗎?

Nuget Downloads 49,171版本:2026.11剛剛發布