IronPrint 操作指南 檢索打印機名稱 如何在 C# 中擷取印表機名稱 Curtis Chau 更新:2026年3月2日 下載 IronPrint NuGet 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 This article was translated from English: Does it need improvement? Translated View the article in English 在任何需要列印文件的 .NET 應用程式中,了解系統上可用的印表機是常見的前置條件。 無論目標是讓使用者從下拉選單選取印表機,還是自動將列印工作路由至特定設備,以程式化方式擷取印表機名稱都是第一步。 IronPrint 提供一個靜態方法 — Printer.GetPrinterNames() — 可傳回目前 Windows 機器上所有已安裝的印表機,以 List<string> 形式呈現。 以下涵蓋安裝、同步與非同步擷取,以及如何將選取的印表機名稱傳入列印工作。 快速入門:擷取印表機名稱 透過 NuGet 安裝 IronPrint:Install-Package IronPrint 將 using IronPrint; 加入檔案中 呼叫 Printer.GetPrinterNames() 以取得印表機名稱的 List<string> 遍歷清單並顯示或儲存每個名稱 列印時將選取的名稱傳遞給 PrintSettings.PrinterName 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPrint PM > Install-Package IronPrint 複製並運行這段程式碼。 using IronPrint; // Retrieve every printer installed on this machine List<string> printers = Printer.GetPrinterNames(); foreach (var name in printers) { Console.WriteLine(name); } 部署到您的生產環境進行測試 今天就在您的專案中開始使用免費試用IronPrint Free 30 Day Trial 最小工作流程(5 個步驟) 安裝 IronPrint C# 程式庫 呼叫 `Printer.GetPrinterNames()` 遍歷傳回的 `List` 將名稱指派給 `PrintSettings.PrinterName` 以定向至該印表機 將設定傳遞給 `Printer.Print()` 以列印 如何列出所有已安裝的印表機名稱? Printer.GetPrinterNames() 會查詢作業系統並以 List<string> 形式傳回所有已登錄的印表機。 我們呼叫此方法一次並遍歷結果: :path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-list-all-printers.cs using IronPrint; using System; using System.Collections.Generic; // Get every printer registered on this Windows machine List<string> printerNames = Printer.GetPrinterNames(); Console.WriteLine($"Found {printerNames.Count} printer(s):\n"); foreach (string name in printerNames) { Console.WriteLine($" • {name}"); } Imports IronPrint Imports System Imports System.Collections.Generic ' Get every printer registered on this Windows machine Dim printerNames As List(Of String) = Printer.GetPrinterNames() Console.WriteLine($"Found {printerNames.Count} printer(s):" & vbCrLf) For Each name As String In printerNames Console.WriteLine($" • {name}") Next $vbLabelText $csharpLabel 控制台輸出 Found 3 printer(s): • Microsoft Print to PDF • HP LaserJet Pro MFP M428 • OneNote (Desktop) 傳回的清單包含本地印表機、網路印表機和虛擬列印驅動程式。 每個字串與 Windows 設定 > 印表機與掃描器面板中顯示的確切名稱相符,因此可直接用於列印設定配置。 若未安裝任何印表機,此方法會傳回空清單而非拋出例外。 在向使用者呈現選項前,只需快速檢查 printerNames.Count 即可。 如何以非同步方式擷取印表機名稱? 對於不允許阻塞 UI 執行緒的應用程式(WPF、MAUI 或 ASP.NET Web 應用程式),IronPrint 提供 Printer.GetPrinterNamesAsync()。 此方法傳回 Task<List<string>>,其運作方式與同步版本完全相同: :path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-async-printer-names.cs using IronPrint; using System; using System.Collections.Generic; using System.Threading.Tasks; // Await the async call to avoid blocking the UI thread List<string> printerNames = await Printer.GetPrinterNamesAsync(); foreach (string name in printerNames) { Console.WriteLine(name); } Imports IronPrint Imports System Imports System.Collections.Generic Imports System.Threading.Tasks ' Await the async call to avoid blocking the UI thread Dim printerNames As List(Of String) = Await Printer.GetPrinterNamesAsync() For Each name As String In printerNames Console.WriteLine(name) Next $vbLabelText $csharpLabel 我們像其他非同步 API 一樣 await 此呼叫。 結果是 GetPrinterNames() 傳回的相同 List<string>,因此不需要額外的解析或轉換。 此非同步模式可自然整合到 async Task 控制器動作和 async void 事件處理程序中。 如何依名稱列印至特定印表機? 取得印表機名稱後,我們將其指派給 PrintSettings.PrinterName 並將設定物件傳遞給 Printer.Print()。 這會直接將文件傳送至所選印表機,而不顯示對話方塊: :path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/retrieve-printer-names-print-to-specific-printer.cs using IronPrint; using System.Collections.Generic; // Step 1 — Retrieve available printers List<string> printers = Printer.GetPrinterNames(); // Step 2 — Select a printer (first match containing "LaserJet" as an example) string targetPrinter = printers.Find(p => p.Contains("LaserJet")) ?? printers[0]; // fallback to first available // Step 3 — Configure print settings PrintSettings settings = new PrintSettings { PrinterName = targetPrinter, PaperSize = PaperSize.A4, NumberOfCopies = 1 }; // Step 4 — Print the document Printer.Print("invoice.pdf", settings); Imports IronPrint Imports System.Collections.Generic ' Step 1 — Retrieve available printers Dim printers As List(Of String) = Printer.GetPrinterNames() ' Step 2 — Select a printer (first match containing "LaserJet" as an example) Dim targetPrinter As String = printers.Find(Function(p) p.Contains("LaserJet")) _ OrElse printers(0) ' fallback to first available ' Step 3 — Configure print settings Dim settings As New PrintSettings With { .PrinterName = targetPrinter, .PaperSize = PaperSize.A4, .NumberOfCopies = 1 } ' Step 4 — Print the document Printer.Print("invoice.pdf", settings) $vbLabelText $csharpLabel PrintSettings 支援其他屬性,如 Dpi、PaperOrientation、Grayscale 和 PaperMargins。 請參閱 PrintSettings API 參考和列印設定操作指南中的完整清單。 我們也可以使用 Printer.GetPrinterTrays(printerName) 擷取特定印表機的可用紙匣,這在列印工作需要從特定紙匣取紙時非常有用。 接下來我該怎麼做? 我們涵蓋了四項操作:安裝 IronPrint、使用 GetPrinterNames() 列出所有印表機名稱、使用 GetPrinterNamesAsync() 非同步執行相同查詢,以及透過 PrintSettings.PrinterName 將文件路由至特定印表機。 如需進一步閱讀和更深入的範例,請探索以下資源: IronPrint 教學 — 列印文件,提供端到端列印操作指南。 列印設定操作指南,用於配置 DPI、邊距、方向等設定。 Printer 類別 API 參考,提供完整靜態方法清單。 立即取得免費試用授權,在實際環境中測試所有功能;或於準備部署時查看授權選項。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 準備好開始了嗎? Nuget 下載 38,930 | 版本: 2026.4 剛剛發布 開始免費試用 免費 NuGet 下載 總下載量:38,930 查看許可證 還在捲動嗎? 想要快速證明? PM > Install-Package IronPrint 執行範例 觀看您的文件打到印表機上。 免費 NuGet 下載 總下載量:38,930 查看許可證