IRONSOFTWAREHOME

如何在 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);
    }
    C#
  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 支援其他屬性,例如 GrayscalePaperMargins。 請參閱 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
技術作家

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

...
閱讀更多

準備好開始了嗎?

Nuget Downloads 46,090版本:2026.9剛剛發布

立即獲取您的免費30天試用金鑰
不需要信用卡或帳戶建立
C# NuGet PDF程式庫
安裝方法NuGet

版本: 2026.9

PM > Install-Package IronPrint
nuget.org/packages/IronPrint/
  1. 在解決方案資源管理器中,右鍵點擊引用,管理NuGet套件
  2. 選擇瀏覽並搜尋"IronPrint"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

  1. 下載並解壓IronPrint到比如~/Libs這樣的位置在您的Solution目錄下
  2. 在Visual Studio解決方案資源管理器中,右鍵點擊引用。選擇瀏覽,"IronPrint.dll"

授權從$999

有問題嗎?聯繫我們的開發團隊。

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費
現場演示
Booking Badge

全球數百萬工程師信賴

Iron Software的客戶標誌
獲得非義務性諮詢
完成下列表單或發郵件到sales@ironsoftware.com
您的資訊將始終保密。
全球數百萬工程師信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立