Druckernamen angeben und PDF drucken an spezifischen Drucker in C

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

Die PrintSettings-Klasse von IronPrint stellt eine PrinterName-Eigenschaft bereit, die Druckaufträge an einen bestimmten Drucker leitet. Wir weisen den exakten Namen des Zieldruckers als Zeichenkette zu, übergeben das konfigurierte PrintSettings-Objekt an eine der Druckmethoden von IronPrint, und das Dokument wird an diesen Drucker statt an den systemweiten Standard-Drucker gesendet.

Diese Anleitung führt Sie durch das Festlegen eines Druckernamens, das Ermitteln verfügbarer Drucker zur Laufzeit und das Kombinieren der Druckerauswahl mit anderen Druckeinstellungen.

Schnellstart: Druckernamen angeben

  1. Installieren Sie IronPrint über NuGet: Install-Package IronPrint
  2. Fügen Sie using IronPrint; zur Datei hinzu
  3. Erstellen Sie ein PrintSettings-Objekt
  4. Setzen Sie PrinterName auf den exakten Namen des Zieldruckers
  5. Übergeben Sie die Einstellungen an Printer.Print() oder Printer.PrintAsync()
  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;
    
    // Print a document to a specific printer
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = "HP LaserJet Pro M404"
    });
  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 gebe ich einen Druckernamen in C# an?

Wir geben den Zieldrucker an, indem wir seinen Namen der PrinterName-Eigenschaft auf einem PrintSettings-Objekt zuweisen. Anschließend übergeben wir dieses Objekt an 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

Wir instanziieren zunächst PrintSettings, das mit PrinterName = null initialisiert wird — das bedeutet der OS-Standarddrucker. Wir überschreiben dann PrinterName mit dem exakten Zeichenkettennamen des Zieldruckers. Wenn wir Printer.Print aufrufen, sendet IronPrint den Auftrag direkt an die Warteschlange dieses Druckers.

Zwei wichtige Details, die Sie beachten sollten. Erstens muss der Druckername genau dem entsprechen, was das Betriebssystem meldet — dieser Vergleich ist buchstabengenau (case-sensitive). Eine Abweichung wie "hp laserjet" statt "HP LaserJet" führt zu einem stillschweigenden Fehler oder einer Fehlerausgabe. Zweitens, wenn der Benutzer einen Druckdialog über ShowPrintDialog öffnet, überschreibt die Dialogauswahl, was auch immer in Code auf PrinterName gesetzt wurde. Dies ist beabsichtigt — der Dialog gibt den Benutzern die endgültige Kontrolle.

Wie ermittle ich verfügbare Drucker?

Anstatt Druckernamen hartzukodieren, können wir das System zur Laufzeit mit Printer.GetPrinterNames() abfragen. Diese Methode gibt eine List<string> zurück, die jeden auf dem Rechner installierten Drucker enthält.

: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

Wir rufen GetPrinterNames() auf, um jeden Drucker abzurufen, den das Betriebssystem kennt — einschließlich lokaler, Netzwerk- und virtueller Drucker wie 'Microsoft Print to PDF'. Wir durchlaufen dann die Liste und wählen einen Drucker basierend auf Index, Namensübereinstimmung oder jeder benutzerdefinierten Logik, die die Anwendung erfordert.

Dieses Muster Ermitteln-dann-Drucken ist für Anwendungen, die auf verschiedenen Maschinen bereitgestellt werden, essenziell. Das Hartcodieren eines Druckernamens funktioniert bei Einmaschinen-Szenarien, aber Produktionsanwendungen sollten verfügbare Drucker abfragen und entweder den Benutzer wählen lassen oder programmatisch basierend auf Namenskonventionen auswählen. Für ein spezielles Codebeispiel sehen Sie sich das Beispiel zum Abrufen von Druckernamen an.

Wie kombiniere ich den Druckernamen mit anderen Einstellungen?

Die PrintSettings-Klasse stellt PrinterName zusammen mit Eigenschaften für Papiergröße, Ausrichtung, DPI, Ränder, Kopienanzahl und Abflachung zur Verfügung. Wir konfigurieren alles in einem einzigen Objekt.

: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

Wir verwenden die Syntax für Objektersteller zur besseren Lesbarkeit. PrinterName leitet den Auftrag zum 'Office Color Printer', während die restlichen Eigenschaften das Ausgabeformat steuern. Dpi bei 300 erzeugt scharfen Text und Grafiken. PaperMargins akzeptiert vier Millimeterwerte durch den Margins-Konstruktor — oben, rechts, unten, links.

IronPrint validiert die Konfiguration als Einheit und übergibt die kombinierten Einstellungen in einem einzigen Auftrag an den Druckertreiber. Für zusätzliche Optionen wie Fachauswahl und Graustufenmodus, sehen Sie sich die vollständige Druckeinstellungen-Anleitung an.

Wie wähle ich einen Drucker aus und drucke asynchron?

Für Anwendungen, bei denen das Blockieren des Hauptthreads keine Option ist — wie WPF- oder WinForms-Apps — verwenden wir Printer.GetPrinterNamesAsync() und Printer.PrintAsync(). Beide geben eine Task zurück und halten die Benutzeroberfläche reaktionsfähig.

: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

Dieses klassenbasierte Beispiel umschließt die Logik zum Ermitteln und Drucken in einem wiederverwendbaren Service. Wir rufen GetPrinterNamesAsync() auf, um die Druckerliste abzurufen, ohne die Benutzeroberfläche einzufrieren, und weisen dann den ersten verfügbaren Drucker PrinterName zu. Der await Printer.PrintAsync-Aufruf sendet den Auftrag asynchron.

In der Produktion könnten wir printers[0] durch eine Logik ersetzen, die einer Namenskonvention entspricht, wie zum Beispiel die Suche nach Druckern, die 'Label' für Versandetiketten oder 'Color' für Marken-Dokumente enthalten. Die asynchronen Methoden von IronPrint akzeptieren alle das gleiche PrintSettings-Objekt, sodass PrinterName-Verhalten bei synchronen und asynchronen Abläufen identisch ist.

Was sind meine nächsten Schritte?

Wir haben behandelt, wie man mithilfe der PrintSettings.PrinterName-Eigenschaft von IronPrint einen Druckernamen in C# angibt, von der statischen Zuweisung bis zur dynamischen Laufzeit-Ermittlung mit Printer.GetPrinterNames(). Die wichtigsten Punkte: Druckernamen müssen genau übereinstimmen (buchstabengenau), null standardmäßig auf den OS-Standarddrucker gesetzt und Druckdialoge überschreiben die programmiert ausgewählte Auswahl.

Um IronPrints Fähigkeiten weiter zu erkunden:

Starten Sie eine kostenlose 30-Tage-Testversion, um die Druckerauswahl in Ihren eigenen Projekten zu testen, oder sehen Sie sich Lizenzierungsoptionen für den Produktionseinsatz an.

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.