Dokument drucken mit einem Druckdialog in C

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

Der Druckdialog ist das standardmäßige Betriebssystemfenster, das es Benutzern ermöglicht, einen Drucker auszuwählen, die Anzahl der Kopien festzulegen, einen Seitenbereich zu wählen und Papieroptionen vor dem Drucken anzupassen. Für Desktop-Anwendungen, bei denen Benutzer die Kontrolle darüber benötigen, wie und wo ihre Dokumente gedruckt werden, ist das Anzeigen dieses Dialogs das erwartete Verhalten.

IronPrint bietet eine einzelne Methode — Printer.ShowPrintDialog() — die den nativen Druckdialog anzeigt, Benutzerauswahlen anwendet und das Dokument an den ausgewählten Drucker sendet. Wir installieren ein NuGet-Paket und schreiben eine Zeile Code.

Schnellstart: Drucken mit einem Dialog

  1. Installieren Sie IronPrint über NuGet: Install-Package IronPrint
  2. Fügen Sie using IronPrint; der Datei hinzu
  3. Rufen Sie Printer.ShowPrintDialog("filepath") auf, um den nativen Druckdialog zu öffnen
  4. (Optional) Übergeben Sie ein PrintSettings Objekt, um die Dialogstandards voreinzustellen
  5. Der Benutzer wählt Drucker, Kopien und Optionen, dann klickt er auf 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;
    
    // Display the print dialog and print the document
    Printer.ShowPrintDialog("document.pdf");
  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 funktioniert der Druckdialog in C#?

Die Printer.ShowPrintDialog() Methode öffnet den nativen Druckdialog des Betriebssystems. Der Benutzer sieht das vollständige Set an Druckoptionen — Druckerauswahl, Anzahl der Kopien, Seitenbereich, Ausrichtung und Papiergröße — und klickt auf Drucken, um den Auftrag zu senden, oder auf Abbrechen, um den Dialog ohne Druck zu schließen.

Hinter den Kulissen erfordert der native .NET-Ansatz das Erstellen einer System.Windows.Forms.PrintDialog Instanz, das Verkabeln mit einem PrintDocument, das Handhaben des PrintPage Ereignisses, um Inhalte auf die Druckgrafikoberfläche zu zeichnen, das Überprüfen des DialogResult und dann das Aufrufen von PrintDocument.Print(). Diese Einrichtung umfasst typischerweise 15–25 Codezeilen. Es enthält auch keine integrierte PDF- oder Bildwiedergabe — wenn man ein PDF über den nativen Dialog drucken möchte, muss man es zuerst in zeichbare Seiten parsen, was eine weitere Bibliothek erfordert.

IronPrint verarbeitet die gesamte Pipeline in einem Aufruf:

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-show-print-dialog-open-and-print.cs
using IronPrint;

// Open the dialog, let the user configure settings, and print
Printer.ShowPrintDialog("quarterly-report.pdf");
Imports IronPrint

' Open the dialog, let the user configure settings, and print
Printer.ShowPrintDialog("quarterly-report.pdf")
$vbLabelText   $csharpLabel

Die Methode akzeptiert einen Dateipfad als string oder Rohdateidaten als byte[]. IronPrint erkennt das Dokumentformat, rendert es durch die entsprechende Engine und präsentiert den Dialog. Wenn der Benutzer bestätigt, wird das Dokument mit den ausgewählten Einstellungen gedruckt. Das Druckdokument-Tutorial erklärt den gesamten Drucklebenszyklus ausführlicher.

Wie konfiguriere ich Dialogeinstellungen vor?

Wir können vor dem Öffnen des Dialogs Standardwerte festlegen, indem wir ein PrintSettings Objekt erstellen und es als zweiten Parameter übergeben. Der Dialog wird mit diesen Werten voreingestellt geöffnet, und der Benutzer kann sie unverändert akzeptieren oder jede Einstellung überschreiben.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-preconfigure-dialog-settings.cs
using IronPrint;

// Pre-configure defaults for the dialog
var settings = new PrintSettings
{
    PrinterName = "HP LaserJet Pro",
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    Grayscale = false
};

// Open dialog with pre-filled settings
Printer.ShowPrintDialog("invoice.pdf", settings);
Imports IronPrint

' Pre-configure defaults for the dialog
Dim settings As New PrintSettings With {
    .PrinterName = "HP LaserJet Pro",
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .Grayscale = False
}

' Open dialog with pre-filled settings
Printer.ShowPrintDialog("invoice.pdf", settings)
$vbLabelText   $csharpLabel

Dies ist nützlich, wenn die Anwendung den wahrscheinlichen Drucker oder das Papierformat im Voraus kennt. Zum Beispiel kann ein Point-of-Sale-System, das immer Quittungen auf einem bestimmten Thermodrucker druckt, PrinterName standardmäßig auf dieses Gerät einstellen. Der Benutzer hat weiterhin die Möglichkeit, es im Dialog zu ändern.

Um herauszufinden, welche Drucker auf dem System verfügbar sind, rufen wir Printer.GetPrinterNames() auf, das eine List<string> aller installierten Drucker zurückgibt. Ebenso gibt Printer.GetPrinterTrays() verfügbare Papierschächte für einen bestimmten Drucker zurück.

Die vollständige Liste der konfigurierbaren Eigenschaften umfasst PrinterName, PaperSize, PaperOrientation, Dpi, NumberOfCopies, Grayscale, PaperMargins, Flatten (für PDF-Formularfelder) und Tray. Das Druckeinstellungen-How-To deckt jede Eigenschaft mit Codebeispielen ab. Eine nicht in PrintSettings gesetzte Eigenschaft wird auf die Standardkonfiguration des ausgewählten Druckers zurückgesetzt.

Wie zeige ich den Dialog asynchron an?

Die Printer.ShowPrintDialogAsync() Methode gibt einen Task zurück, wodurch sie mit await kompatibel ist. Dies verhindert, dass der Dialog den UI-Thread blockiert — unerlässlich für WPF, MAUI und jede Anwendung, bei der eine eingefrorene Oberfläche eine schlechte Benutzererfahrung erzeugt.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-show-print-dialog-async.cs
using IronPrint;

// Non-blocking dialog — the UI remains responsive
await Printer.ShowPrintDialogAsync("report.pdf");
Imports IronPrint

' Non-blocking dialog — the UI remains responsive
Await Printer.ShowPrintDialogAsync("report.pdf")
$vbLabelText   $csharpLabel

ShowPrintDialogAsync() akzeptiert dieselben Parameter wie die synchrone Version: einen Dateipfad oder ein Byte-Array sowie ein optionales PrintSettings Objekt. Das asynchrone Muster folgt dem gleichen Task-basierten Asynchronen Muster, das in der modernen .NET-Entwicklung verwendet wird.

IronPrint funktioniert über WinForms, WPF, MAUI und Konsolenanwendungen hinweg. Das Aussehen des Dialogs passt sich der Host-Plattform und der OS-Version an, sodass der Benutzer immer das native Druckfenster sieht, das er erwartet.

Wann sollte ich einen Dialog vs. Stiller Druckverwenden?

Die Wahl hängt davon ab, ob der Benutzer die Kontrolle über den Druckauftrag benötigt.

Kriterien Drucken mit Dialog Stiller Druck
Benutzerinteraktion Der Benutzer wählt Drucker, Kopien, Seitenbereich Keine Interaktion — druckt sofort
Am besten geeignet für Desktop-Apps, einmalige Drucke, benutzerorientierte Funktionen Batch-Jobs, Hintergrunddienste, Kiosk-Apps
Auswahl des Druckers Benutzer wählt über Dialog Programmgesteuert über PrintSettings festgelegt
IronPrint-Methode Printer.ShowPrintDialog() Printer.Print()
Async-Variante ShowPrintDialogAsync() PrintAsync()

Verwenden Sie den Dialog, wenn Benutzer Einstellungen vor dem Drucken überprüfen oder ändern müssen — Berichtsexporte, Rechnungsdrucke oder jeder Fall, bei dem der falsche Drucker eine verschwendete Seite verursacht. Verwenden Sie silent printing, wenn die Anwendung den gesamten Job steuert und keine menschliche Entscheidung erforderlich ist. Das Druckdokument-Tutorial zeigt beide Ansätze Seite an Seite.

Welche Dateiformate unterstützt der Druckdialog?

Printer.ShowPrintDialog() unterstützt dieselben Formate wie silent printing: PDF, PNG, TIFF, JPEG, GIF, HTML und BMP. Wir übergeben den Dateipfad unabhängig vom Format, und IronPrint kümmert sich um das Rendering und die Kommunikation mit dem Druckerspooler. Dateidaten als byte[] werden ebenfalls akzeptiert, was nützlich ist, wenn das Dokument im Speicher generiert oder aus einer Datenbank abgerufen wird.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-print-dialog-image-and-byte-array.cs
using IronPrint;

// Print an image with the dialog
Printer.ShowPrintDialog("product-photo.png");

// Print from a byte array
byte[] reportData = File.ReadAllBytes("monthly-report.pdf");
Printer.ShowPrintDialog(reportData);
Imports IronPrint

' Print an image with the dialog
Printer.ShowPrintDialog("product-photo.png")

' Print from a byte array
Dim reportData As Byte() = File.ReadAllBytes("monthly-report.pdf")
Printer.ShowPrintDialog(reportData)
$vbLabelText   $csharpLabel

Die Codebeispiele-Seite zeigt zusätzliche formatspezifische Szenarien. Für PDF-spezifische Workflows — ein PDF generieren und es sofort drucken — passt IronPDF natürlich zu IronPrint. Der IronPrint vs. IronPDF Vergleich erklärt, wann man welches verwendet.

Nächste Schritte

Das Drucken mit einem Dialog reduziert sich auf zwei Methoden: Printer.ShowPrintDialog() für synchrone Aufrufe und Printer.ShowPrintDialogAsync() für nicht blockierende Ausführung. Konfigurieren Sie Standardwerte mit PrintSettings vor und lassen Sie den Benutzer von dort aus anpassen. Beide Methoden unterstützen alle von IronPrints Dokumentformate und arbeiten in WinForms-, WPF-, MAUI- und Konsolenprojekten.

Erkunden Sie die IronPrint Tutorials für vollständige Durchgänge, die Printer-Klassen-API-Referenz für jede verfügbare Methode oder das Druckeinstellungen-How-To für erweiterte Konfiguration. Der Changelog verfolgt die neuesten Verbesserungen und neuen Funktionen.

Starten Sie eine kostenlose 30-tägige Testversion, um Dialogdruck in einem Live-Projekt zu testen – keine Kreditkarte erforderlich. Wenn Sie bereit sind, zu verschicken, sehen Sie sich die Lizenzierungsoptionen ab 749 $ 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.