Druckernamen abrufen und PDF drucken an bestimmten Drucker in C

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

Zu wissen, welche Drucker auf einem System verfügbar sind, ist eine häufige Voraussetzung für jede .NET-Anwendung, die Dokumente zum Druck sendet. Ob es darum geht, Benutzern die Auswahl eines Druckers aus einem Dropdown-Menü zu ermöglichen oder Druckaufträge automatisch an ein bestimmtes Gerät zu leiten, das programmgesteuerte Abrufen von Druckernamen ist der erste Schritt.

IronPrint stellt eine einzige statische Methode — Printer.GetPrinterNames() — bereit, die auf dem aktuellen Windows-System jeden installierten Drucker als List<string> zurückgibt. Wir decken die Installation, die synchrone und asynchrone Abfrage sowie die Eingabe eines ausgewählten Druckernamens in einen Druckauftrag ab.

Schnellstart: Druckernamen abrufen

  1. Installieren Sie IronPrint über NuGet: Install-Package IronPrint
  2. Fügen Sie using IronPrint; zur Datei hinzu
  3. Rufen Sie Printer.GetPrinterNames() auf, um eine List<string> der Druckernamen zu erhalten
  4. Durchlaufen Sie die Liste und zeigen Sie jeden Namen an oder speichern Sie ihn
  5. Übergeben Sie einen ausgewählten Namen an PrintSettings.PrinterName beim Drucken
  1. Installieren Sie IronPrint mit NuGet Package Manager

    PM > Install-Package IronPrint
  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    using IronPrint;
    
    // Retrieve every printer installed on this machine
    List<string> printers = Printer.GetPrinterNames();
    
    foreach (var name in printers)
    {
        Console.WriteLine(name);
    }
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronPrint in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion

    arrow pointer

Wie kann ich alle installierten Druckernamen auflisten?

Printer.GetPrinterNames() fragt das Betriebssystem ab und gibt jeden registrierten Drucker als List<string> zurück. Wir rufen diese Methode einmal auf und iterieren über das Ergebnis:

: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

Konsolenausgabe

3 Drucker gefunden:

  • Microsoft Print to PDF
  • HP LaserJet Pro MFP M428
  • OneNote (Desktop)

Die zurückgegebene Liste umfasst lokale Drucker, Netzwerkdrucker und virtuelle Druckertreiber. Jeder String entspricht dem exakten Namen, der im Windows-Fenster Einstellungen > Drucker & Scanner angezeigt wird, sodass er direkt in der Druckereinstellungskonfiguration verwendet werden kann.

Wenn keine Drucker installiert sind, gibt die Methode eine leere Liste zurück, anstatt eine Ausnahme zu werfen. Eine schnelle printerNames.Count Überprüfung ist alles, was erforderlich ist, bevor Optionen einem Benutzer präsentiert werden.

Wie kann ich Druckernamen asynchron abrufen?

Für Anwendungen, bei denen das Blockieren des UI-Threads nicht akzeptabel ist — WPF, MAUI oder ASP.NET-Webanwendungen — bietet IronPrint Printer.GetPrinterNamesAsync(). Die Methode gibt einen Task<List<string>> zurück und funktioniert identisch wie ihr synchrones Gegenstück:

: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

Wir await den Aufruf genau wie bei jeder anderen asynchronen API. Das Ergebnis ist der gleiche List<string>, der von GetPrinterNames() zurückgegeben wird, sodass keine zusätzliche Analyse oder Konvertierung erforderlich ist. Dieses asynchrone Muster integriert sich nahtlos in async Task Controlleraktionen und async void Ereignis-Handler.

Wie drucke ich auf einen bestimmten Drucker nach Namen?

Sobald wir den Druckernamen haben, weisen wir ihn PrintSettings.PrinterName zu und übergeben das Einstellungsobjekt an Printer.Print(). Dies sendet das Dokument direkt an den gewählten Drucker, ohne ein Dialogfeld anzuzeigen:

: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 unterstützt zusätzliche Eigenschaften wie Dpi, PaperOrientation, Grayscale und PaperMargins. Die vollständige Liste finden Sie in der PrintSettings API-Referenz und dem Druckereinstellungs-Leitfaden.

Wir rufen auch verfügbare Papierfächer für einen bestimmten Drucker mit Printer.GetPrinterTrays(printerName) ab, was nützlich ist, wenn ein Druckauftrag Papier aus einem bestimmten Fach ziehen muss.

Was sind meine nächsten Schritte?

Wir haben vier Vorgänge behandelt: die Installation von IronPrint, das Auflisten aller Druckernamen mit GetPrinterNames(), das gleiche Abfragen asynchron mit GetPrinterNamesAsync() und das Routen eines Dokuments zu einem bestimmten Drucker über PrintSettings.PrinterName.

Für weiterführende Lektüre und tiefere Beispiele erkunden Sie diese Ressourcen:

Holen Sie sich eine kostenlose Testlizenz, um alle Funktionen in einer Live-Umgebung zu testen, oder sehen Sie sich die Lizenzierungsoptionen an, wenn Sie bereit sind, zu deployen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 38,930 | Version: 2026.4 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPrint
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Dokument auf dem Drucker ausgegeben wird.