Jak określić nazwę drukarki w języku C

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

Klasa PrintSettings w IronPrint posiada właściwość PrinterName, która kieruje zadania drukowania do konkretnej drukarki. Przypisujemy dokładną nazwę docelowej drukarki jako łańcuch znaków, przekazujemy skonfigurowany obiekt PrintSettings do dowolnej z metod drukowania IronPrint print methods i dokument trafia do tej drukarki, a nie do domyślnej systemowej.

W tym przewodniku omówiono ustawianie nazwy drukarki, wykrywanie dostępnych drukarek w czasie wykonywania oraz łączenie wyboru drukarki z innymi ustawieniami drukowania.

Szybki start: Określ nazwę drukarki

  1. Zainstaluj IronPrint przez NuGet: Install-Package IronPrint
  2. Dodaj using IronPrint; do pliku
  3. Utwórz obiekt PrintSettings
  4. Ustaw PrinterName na dokładną nazwę docelowej drukarki
  5. Przekaż ustawienia do Printer.Print() lub Printer.PrintAsync()
  1. Install IronPrint with NuGet Package Manager

    PM > Install-Package IronPrint
  2. Skopiuj i uruchom ten fragment kodu.

    using IronPrint;
    
    // Print a document to a specific printer
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = "HP LaserJet Pro M404"
    });
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPrint w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Jak określić nazwę drukarki w języku C#?

Określamy docelową drukarkę, przypisując jej nazwę do właściwości PrinterName na obiekcie PrintSettings. Następnie przekazujemy ten obiekt do metody Printer.PRINT.

: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";

// Send the document 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"

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

Najpierw tworzymy instancję PrintSettings, która inicjalizuje się z PrinterName = null — oznacza to domyślną drukarkę systemu operacyjnego. Następnie nadpisujemy PrinterName dokładnym łańcuchem znaków nazwy docelowej drukarki. Kiedy wywołujemy Printer.Print, IronPrint wysyła zadanie bezpośrednio do kolejki tej drukarki.

Dwa istotne szczegóły, o których należy pamiętać. Po pierwsze, nazwa drukarki musi dokładnie odpowiadać temu, co raportuje system operacyjny — porównanie uwzględnia wielkość liter. Niedopasowanie jak "hp laserjet" zamiast "HP LaserJet" skończy się błędem lub brakiem działania. Po drugie, jeśli użytkownik otworzy okno dialogowe drukowania za pomocą ShowPrintDialog, wybór dokonany w tym oknie nadpisze to, co zostało ustawione dla PrinterName w kodzie. Tak zostało zaprojektowane — okno dialogowe zapewnia użytkownikom ostateczną kontrolę.

Jak sprawdzić dostępne drukarki?

Zamiast na stałe wpisywać nazwy drukarek, możemy zapytać system w czasie wykonywania za pomocą Printer.GetPrinterNames(). Ta metoda zwraca List<string> zawierającą wszystkie zainstalowane drukarki na maszynie.

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

// Discover all installed printers
List<string> printers = Printer.GetPrinterNames();

foreach (string name in printers)
{
    Console.WriteLine(name);
}

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

' Discover all installed printers
Dim printers As List(Of String) = Printer.GetPrinterNames()

For Each name As String In printers
    Console.WriteLine(name)
Next

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

Wywołujemy GetPrinterNames(), by pobrać wszystkie drukarki, jakie zna system operacyjny — włącznie z lokalnymi, sieciowymi i wirtualnymi jak „Microsoft Print to PDF". Następnie przechodzimy przez listę i wybieramy drukarkę po indeksie, dopasowaniu do nazwy lub według dowolnej logiki aplikacji.

Ten wzorzec „znajdź i wydrukuj" jest istotny dla aplikacji wdrażanych na różnych maszynach. Hardcoding nazwy drukarki działa dla scenariuszy jednomaczynowych, ale aplikacje produkcyjne powinny zapytać o dostępne drukarki i albo pozwolić użytkownikowi wybrać, albo wybrać jedną programowo na podstawie konwencji nazw. Dla przykladu z dedykowanym kodem zobacz przyklad pobierania nazw drukarek.

Jak połączyć nazwę drukarki z innymi ustawieniami?

Klasa PrintSettings udostępnia PrinterName wraz z właściwościami rozmiaru papieru, orientacji, DPI, marginesów, liczby kopii oraz spłaszczenia. Konfigurujemy wszystko w jednym obiekcie.

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

// Build a fully configured print job targeting a specific 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 a branded report to the color printer
Printer.Print("quarterly-report.pdf", settings);
Imports IronPrint

' Build a fully configured print job targeting a specific 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 a branded report to the color printer
Printer.Print("quarterly-report.pdf", settings)
$vbLabelText   $csharpLabel

Używamy składni inicjalizacji obiektu dla czytelności. PrinterName kieruje zadanie do „Office Color Printer", podczas gdy pozostałe właściwości kontrolują format wyjściowy. Dpi na poziomie 300 produkuje wyraźny tekst i grafikę. PaperMargins akceptuje cztery wartości milimetrowe przez konstruktor Margins — góra, prawo, dół, lewo.

IronPrint waliduje konfigurację jako jednostkę i przesyła skonsolidowane ustawienia do sterownika drukarki w jednym zgłoszeniu. Dla dodatkowych opcji jak wybór zasobnika i tryb grayscale, zobacz pełny przewodnik ustawień drukowania.

Jak wybrać drukarkę i drukować asynchronicznie?

Dla aplikacji, gdzie blokowanie głównego wątku nie wchodzi w grę — takich jak WPF czy WinForms — używamy Printer.GetPrinterNamesAsync() i Printer.PrintAsync(). Obie zwracają Task, pozwalając na responsywność interfejsu.

: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 printers without blocking the UI
        List<string> printers = await Printer.GetPrinterNamesAsync();

        if (printers.Count == 0)
        {
            Console.WriteLine("No printers found.");
            return;
        }

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

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

Public Class PrintService
    Public Async Function PrintToFirstAvailableAsync(filePath As String) As Task
        ' Discover printers without blocking the UI
        Dim printers As List(Of String) = Await Printer.GetPrinterNamesAsync()

        If printers.Count = 0 Then
            Console.WriteLine("No printers found.")
            Return
        End If

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

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

Ten przykład oparty na klasie obejmuje logikę wykrywania i drukowania w usłudze wielokrotnego użytku. Wywołujemy GetPrinterNamesAsync(), aby pobrać listę drukarek bez zamrażania interfejsu użytkownika, a następnie przypisujemy pierwszą dostępną drukarkę do PrinterName. Wywołanie await Printer.PrintAsync wysyła zadanie asynchronicznie.

W produkcji możemy zastąpić printers[0] logiką dopasowującą konwencję nazw — na przykład szukając drukarek zawierających "Label" dla etykiet wysyłkowych lub "Color" dla dokumentów firmowych. Asynchroniczne metody IronPrint akceptują wszystkie ten sam obiekt PrintSettings, a więc zachowanie PrinterName jest identyczne na ścieżkach synchronicznych i asynchronicznych.

Jakie są moje kolejne kroki?

Przedstawiliśmy, jak określić nazwę drukarki w C# używając właściwości PrintSettings.PrinterName IronPrint, od statycznego przypisania do dynamicznego wykrywania w czasie wykonania z Printer.GetPrinterNames(). Kluczowe punkty: nazwy drukarek muszą pasować dokładnie (wielkość liter ma znaczenie), null domyślnie ustawia się na domyślną drukarkę systemową, a okna dialogowe drukowania nadpisują wybór programowy.

Aby dalej poznawać możliwości IronPrint:

Rozpocznij bezpłatny 30-dniowy okres próbny, aby przetestować wybór drukarki we własnych projektach, lub zobacz opcje licencjonowania dla wdrożenia produkcyjnego.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 38,948 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPrint
uruchom próbkę obserwuj, jak twój dokument trafia do drukarki.