如何在C#中指定列印機名稱

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPrint的PrinterName屬性,用於將列印工作導向特定的列印機。 我們將目標列印機的確切名稱分配為字串,將配置的PrintSettings物件傳遞給任何IronPrint列印方法,文件將直接發送到該列印機,而不是系統預設的列印機。

本指南介紹如何設定列印機名稱、在運行時發現可用的列印機,以及將列印機選擇與其他列印設置組合起來。

快速入門:指定列印機名稱

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPrint

    PM > Install-Package IronPrint
  2. 複製並運行這段程式碼片段。

    using IronPrint;
    
    // Print a document to a specific printer
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = "HP LaserJet Pro M404"
    });
  3. 部署以在您的實時環境中測試

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

    arrow pointer

如何在C#中指定列印機名稱?

我們透過將目標列印機的名稱分配給PrintSettings物件。 然後我們將該物件傳遞給Printer.Print

輸入

invoice.pdf是一個樣式化的A4 B2B發票,包含項目列和總計,通過PrintSettings.PrinterName列印到特定名稱的列印機。

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-set-printer-name.cs
using IronPrint;

// Configure print settings with a target printer
PrintSettings settings = new PrintSettings();
settings.PrinterName = "Microsoft Print to PDF";

// Print to the specified printer
Printer.Print("invoice.pdf", settings);
Imports IronPrint

' Configure print settings with a target printer
Dim settings As New PrintSettings()
settings.PrinterName = "Microsoft Print to PDF"

' Print to the specified printer
Printer.Print("invoice.pdf", settings)
$vbLabelText   $csharpLabel

我們首先實例化PrinterName = null,表示作業系統預設列印機。 然後我們使用目標列印機的確切字串名稱覆蓋PrinterName。 當我們呼叫Printer.Print時,IronPrint將工作直接發送到該列印機的隊列。

輸出

發票直接發送到命名的列印機。 作業顯示在列印機隊列中,如無聲列印範例所示。

使用PrinterName列印發票輸出到"Microsoft Print to PDF"。

需要記住的兩個細節。 首先,列印機名稱必須與作業系統報告的完全匹配; 此比較區分大小寫。不匹配如"HP LaserJet"將會靜默失敗或拋出錯誤。 其次,如果使用者通過PrinterName,使使用者保有最終控制權。

如果事先不知道列印機名稱,我們可以在運行時查詢所有已安裝的列印機,而非硬編碼值。

如何發現可用的列印機?

我們可以在運行時使用Printer.GetPrinterNames查詢系統,而不是硬編碼列印機名稱。 此方法返回List<string>,其中包含機器上已安裝的所有列印機。

輸入

report.pdf是一份A4商務報告,帶有摘要部分和資料表,列印到第一個動態發現的列印機。

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-discover-printers.cs
using IronPrint;

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

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

// Print to the first available printer
if (printers.Count > 0)
{
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = printers[0]
    });
}
Imports IronPrint

' List every installed printer
Dim printers As List(Of String) = Printer.GetPrinterNames()

' Print each printer name
For Each name As String In printers
    Console.WriteLine(name)
Next

' Print to the first available printer
If printers.Count > 0 Then
    Printer.Print("report.pdf", New PrintSettings With {
        .PrinterName = printers(0)
    })
End If
$vbLabelText   $csharpLabel

我們呼叫GetPrinterNames以檢索作業系統知道的每台列印機,包括本地、網路和虛擬列印機,如"Microsoft Print to PDF"。然後遍歷列表,按索引、名稱匹配或應用程式需要的任何自定義邏輯選擇一台列印機。

輸出

報告發送到第一台可用的列印機。 作業顯示在上面所示的列印機隊列中。

使用GetPrinterNames列印的報告輸出到第一台可用的列印機。

這種先發現再列印的模式對於跨不同機器部署的應用程式至關重要。 硬編碼列印機名稱適用於單台機器情況,但生產應用程式應查詢可用列印機,並讓使用者選擇或根據命名約定以程式方式選擇列印機。

列印機選擇也可以與紙張尺寸、DPI、複印數量和邊距配對在一個配置物件中。

如何將列印機名稱與其他設置結合?

PrinterName以及紙張尺寸、方向、DPI、邊距、複印數量等屬性。 我們將所有這些設置配置在一個物件中。

輸入

quarterly-report.pdf是一份A4季度財務報告,帶有KPI卡片和圖表,以PrintSettings物件中列印。

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-combined-settings.cs
using IronPrint;

// Configure full print settings with a named printer
PrintSettings settings = new PrintSettings
{
    PrinterName = "Office Color Printer",
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    PaperMargins = new Margins(15, 15, 15, 15),
    Grayscale = false
};

// Print the quarterly report
Printer.Print("quarterly-report.pdf", settings);
Imports IronPrint

' Configure full print settings with a named printer
Dim settings As New PrintSettings With {
    .PrinterName = "Office Color Printer",
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .PaperMargins = New Margins(15, 15, 15, 15),
    .Grayscale = False
}

' Print the quarterly report
Printer.Print("quarterly-report.pdf", settings)
$vbLabelText   $csharpLabel

我們使用物件初始化器語法以提高可讀性。 PrinterName將工作路由到"Office Color Printer",而其餘屬性則控制輸出格式。 Dpi設置於300產生清晰的文字和圖形。 Margins構造函式接受毫米值。 有關可用屬性的完整列表,請參見列印設置指南

輸出

季度報告以命名列印機、A4縱向、300 DPI、2份和15毫米邊距結合在一個作業中列印。 作業顯示在上面所示的列印機隊列中。

季度報告輸出包括PrinterName、A4、300 DPI、2份和15毫米邊距。

IronPrint將配置作為一個單元進行驗證,並將組合設置提交給列印機驅動程式作為單一作業。

不能在列印機發現或列印期間阻塞主執行緒的應用程式可以使用這兩個操作的異步對應方法。

如何選擇列印機並以異步方式列印?

對於阻塞主執行緒不是選擇的WPF和WinForms應用程式,我們使用Printer.PrintAsync。 兩者均返回Task,保持UI保持響應。

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-async-printer-select.cs
using IronPrint;
using System.Threading.Tasks;

public class PrintService
{
    public async Task PrintToFirstAvailableAsync(string filePath)
    {
        // Discover available printers asynchronously
        List<string> printers = await Printer.GetPrinterNamesAsync();

        // Exit if no printers are installed
        if (printers.Count == 0)
        {
            Console.WriteLine("No printers found.");
            return;
        }

        // Configure settings for the first available printer
        PrintSettings settings = new PrintSettings
        {
            PrinterName = printers[0],
            Dpi = 300
        };

        // Print asynchronously
        await Printer.PrintAsync(filePath, settings);
    }
}
Imports IronPrint
Imports System.Threading.Tasks

Public Class PrintService
    Public Async Function PrintToFirstAvailableAsync(filePath As String) As Task
        ' Discover available printers asynchronously
        Dim printers As List(Of String) = Await Printer.GetPrinterNamesAsync()

        ' Exit if no printers are installed
        If printers.Count = 0 Then
            Console.WriteLine("No printers found.")
            Return
        End If

        ' Configure settings for the first available printer
        Dim settings As New PrintSettings With {
            .PrinterName = printers(0),
            .Dpi = 300
        }

        ' Print asynchronously
        Await Printer.PrintAsync(filePath, settings)
    End Function
End Class
$vbLabelText   $csharpLabel

以型別範例將發現和列印邏輯包裝在一個可重用的服務中。我們呼叫PrinterNameawait Printer.PrintAsync呼叫異步發送工作。

輸出

發票以異步方式列印到第一台發現的列印機。 作業顯示在上面所示的列印機隊列中。

發票輸出異步列印到第一台可用的列印機。

在生產中,我們可能會用符合命名約定的邏輯替換printers[0],如搜尋包含"Label"的列印機以用於運送標籤,或"Color"用於品牌文件。 IronPrint的異步方法均接受相同的PrinterName行為相同。

在涵蓋靜態分配、運行時發現、組合設定和異步工作流之後,有一些相關資源值得收藏。

我的下一步是什麼?

我們涵蓋了透過Printer.GetPrinterNames的動態運行時發現。 要點:列印機名稱必須完全匹配(區分大小寫),null預設為作業系統預設列印機,並且列印對話框會覆蓋程式化選擇。

獲取列印機名稱範例提供了獨立的發現片段,而列印設置指南詳述每個可配置屬性。 Printer類別API參考記錄了所有靜態列印方法,而PrintSettings API參考列出了每個字段及其預設值。 要進行端到端演練,Print Document教程將所有內容結合起來。

開始免費30天試用以在實際項目中測試列印機選擇。 準備就緒時,查看授權選項從$999開始。

https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html https://ironsoftware.com/csharp/print/how-to/print-settings/https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html

常見問題

如何使用IronPrint在C#中指定印表機名稱?

使用IronPrint,您可以透過設置PrinterName屬性來在C#中指定印表機名稱。這允許您針對您的列印任務選擇特定的印表機。

什麼是IronPrint?

IronPrint是Iron Software推出的一個程式庫,使開發人員能夠在C#應用程式中管理列印任務,提供指定印表機名稱和其他列印選項的功能。

如何在C#中查找可用的印表機?

使用IronPrint,您可以透過存取印表機列表並選擇所需的PrinterName來輕鬆發現網路中的可用印表機。

我可以動態設置PrinterName屬性嗎?

可以,使用IronPrint,您可以在C#程式碼中動態設置PrinterName屬性,以在運行時選擇所需的印表機。

是否可以使用IronPrint列印至網路印表機?

是的,IronPrint允許您透過在C#應用程式中設置對應的PrinterName屬性來指定並列印至網路印表機。

Curtis Chau
技術作家

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

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 44,051 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動?

想要快速證明嗎? PM > Install-Package IronPrint
運行範例 看看您的文件如何到達印表機。