Comment Récupérer les Noms des Imprimantes en C# pour Imprimer un Document
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
- Installez IronPrint via NuGet :
Install-Package IronPrint - Ajoutez
using IronPrint;au fichier - Appelez
Printer.GetPrinterNames()pour obtenir unList<string>des noms d'imprimantes - Parcourez la liste et affichez ou stockez chaque nom
- Passez un nom sélectionné à
PrintSettings.PrinterNamelors de l'impression
-
Installez IronPrint avec le Gestionnaire de Packages NuGet
PM > Install-Package IronPrint -
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); } -
Déployez pour tester sur votre environnement de production.
Commencez à utiliser IronPrint dans votre projet dès aujourd'hui avec un essai gratuit
Flux de travail minimal (5 étapes)
- Installez la bibliothèque d'impression C# IronPrint
- Appelez `Printer.GetPrinterNames()`
- Parcourez la `List
` retournée - Attribuez un nom à `PrintSettings.PrinterName` pour cibler cette imprimante
- Passez les paramètres configurés à `Printer.Print()` pour imprimer
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
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
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)
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 :
- Tutoriels IronPrint — Imprimer un document pour des présentations d'impression de bout en bout.
- Guide de configuration des paramètres d'impression pour configurer la résolution, les marges, l'orientation, et plus.
- Référence API de la classe Printer pour la liste complète des méthodes statiques.
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.

