Comment Récupérer les Noms des Imprimantes en C# pour Imprimer un Document

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

Connaître les imprimantes disponibles sur un système est une exigence courante pour toute application .NET envoyant des documents à imprimer. Que l'objectif soit de permettre aux utilisateurs de choisir une imprimante dans un menu déroulant ou de diriger automatiquement les tâches d'impression vers un appareil spécifique, récupérer les noms des imprimantes par programmation est la première étape.

IronPrint expose une méthode statique unique — Printer.GetPrinterNames() — qui renvoie toutes les imprimantes installées sur la machine Windows actuelle sous forme de List<string>. Nous couvrons l'installation, la récupération synchrone et asynchrone, et comment intégrer un nom d'imprimante sélectionné dans un travail d'impression ci-dessous.

Démarrage rapide : Récupérer les noms des imprimantes

  1. Installez IronPrint via NuGet : Install-Package IronPrint
  2. Ajoutez using IronPrint; au fichier
  3. Appelez Printer.GetPrinterNames() pour obtenir un List<string> des noms d'imprimantes
  4. Parcourez la liste et affichez ou stockez chaque nom
  5. Passez un nom sélectionné à PrintSettings.PrinterName lors de l'impression
  1. Installez IronPrint avec le Gestionnaire de Packages NuGet

    PM > Install-Package IronPrint
  2. Copiez et exécutez cet extrait de code.

    using IronPrint;
    
    // Retrieve every printer installed on this machine
    List<string> printers = Printer.GetPrinterNames();
    
    foreach (var name in printers)
    {
        Console.WriteLine(name);
    }
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronPrint dans votre projet dès aujourd'hui avec un essai gratuit

    arrow pointer

Comment puis-je lister tous les noms d'imprimantes installées ?

Printer.GetPrinterNames() interroge le système d'exploitation et renvoie chaque imprimante enregistrée sous forme de List<string>. Nous appelons cette méthode une fois et itérons sur le résultat :

: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

Sortie Console

3 imprimante(s) trouvées :

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

La liste retournée inclut les imprimantes locales, les imprimantes réseau et les pilotes d'impression virtuels. Chaque chaîne correspond exactement au nom affiché dans le panneau Windows Paramètres > Imprimantes et scanners, elle peut donc être utilisée directement dans la configuration des paramètres d'impression.

Si aucune imprimante n'est installée, la méthode renvoie une liste vide plutôt que de lancer une exception. Une simple vérification printerNames.Count est tout ce qui est nécessaire avant de présenter des options à un utilisateur.

Comment puis-je récupérer les noms des imprimantes de manière asynchrone ?

Pour les applications où le blocage du thread de l'interface utilisateur n'est pas acceptable — WPF, MAUI ou applications web ASP.NET — IronPrint fournit Printer.GetPrinterNamesAsync(). La méthode renvoie un Task<List<string>> et fonctionne identiquement à son équivalent synchrone :

: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

Nous await l'appel comme n'importe quelle autre API asynchrone. Le résultat est le même List<string> retourné par GetPrinterNames(), donc aucun parsing ou conversion supplémentaire n'est nécessaire. Ce modèle asynchrone s'intègre naturellement avec les actions de contrôleur async Task et les gestionnaires d'événements async void.

Comment puis-je imprimer sur une imprimante spécifique par nom ?

Une fois que nous avons le nom de l'imprimante, nous l'attribuons à PrintSettings.PrinterName et passons l'objet paramètres à Printer.Print(). Cela envoie le document directement à l'imprimante choisie sans afficher de dialogue :

: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 prend en charge des propriétés supplémentaires telles que Dpi, PaperOrientation, Grayscale, et PaperMargins. Voir la liste complète dans la référence API PrintSettings et le guide de configuration des paramètres d'impression.

Nous récupérons également les bacs à papier disponibles pour une imprimante donnée en utilisant Printer.GetPrinterTrays(printerName), ce qui est utile lorsqu'un travail d'impression doit tirer du papier d'un bac spécifique.

Quelles Sont Mes Prochaines Étapes ?

Nous avons couvert quatre opérations : l'installation d'IronPrint, la liste de tous les noms d'imprimantes avec GetPrinterNames(), l'exécution de la même requête de manière asynchrone avec GetPrinterNamesAsync(), et le routage d'un document vers une imprimante spécifique via PrintSettings.PrinterName.

Pour des lectures supplémentaires et des exemples plus approfondis, explorez ces ressources :

Obtenez une licence d'essai gratuite pour tester chaque fonctionnalité dans un environnement en direct, ou voir les options de licences lorsque vous êtes prêt à déployer.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 38,930 | Version : 2026.4 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronPrint
exécuter un échantillon regarder votre document sortir de l'imprimante.