Comment récupérer les noms des imprimantes en C
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 seule méthode statique — Printer.GetPrinterNames() — qui renvoie toutes les imprimantes installées sur la machine Windows actuelle sous la forme 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 uneList<string>des noms d'imprimantes - Parcourez la liste et affichez ou stockez chaque nom
- Transmettre un nom sélectionné à
PrintSettings.PrinterNamelors de la commande PRINT
-
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
Listretournée - Attribuez un nom à
PrintSettings.PrinterNamepour 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 toutes les imprimantes enregistrées sous la forme 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;
// List every installed printer
List<string> printerNames = Printer.GetPrinterNames();
Console.WriteLine($"Found {printerNames.Count} printer(s):\n");
// Print each printer name
foreach (string name in printerNames)
{
Console.WriteLine($" • {name}");
}
Imports IronPrint
Imports System
Imports System.Collections.Generic
' List every installed printer
Dim printerNames As List(Of String) = Printer.GetPrinterNames()
Console.WriteLine($"Found {printerNames.Count} printer(s):" & vbCrLf)
' Print each printer name
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 suffit avant de présenter les 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 — applications WPF, MAUI ou ASP.NET — IronPrint fournit Printer.GetPrinterNamesAsync(). La méthode renvoie un Task<List<string>> et fonctionne de manière identique à 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;
// Retrieve printer names asynchronously
List<string> printerNames = await Printer.GetPrinterNamesAsync();
// Print each printer name
foreach (string name in printerNames)
{
Console.WriteLine(name);
}
Imports IronPrint
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
' Retrieve printer names asynchronously
Dim printerNames As List(Of String) = Await Printer.GetPrinterNamesAsync()
' Print each printer name
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> que celui renvoyé par GetPrinterNames(), donc aucun analyse syntaxique ni conversion supplémentaire n'est nécessaire. Ce modèle asynchrone s'intègre naturellement aux actions de contrôleur async Task et aux 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 transmettons l'objet de 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;
// Retrieve available printers
List<string> printers = Printer.GetPrinterNames();
// Select a printer matching "LaserJet", or fall back to the first available
string targetPrinter = printers.Find(p => p.Contains("LaserJet"))
?? printers[0];
// Configure print settings
PrintSettings settings = new PrintSettings
{
PrinterName = targetPrinter,
PaperSize = PaperSize.A4,
NumberOfCopies = 1
};
// Print the document
Printer.Print("invoice.pdf", settings);
Imports IronPrint
Imports System.Collections.Generic
' Retrieve available printers
Dim printers As List(Of String) = Printer.GetPrinterNames()
' Select a printer matching "LaserJet", or fall back to the first available
Dim targetPrinter As String = printers.Find(Function(p) p.Contains("LaserJet")) _
OrElse printers(0)
' Configure print settings
Dim settings As New PrintSettings With {
.PrinterName = targetPrinter,
.PaperSize = PaperSize.A4,
.NumberOfCopies = 1
}
' 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 à l'aide de Printer.GetPrinterTrays(printerName), ce qui est utile lorsqu'un travail d'impression doit puiser du papier dans un bac spécifique.
Quelles Sont Mes Prochaines Étapes ?
Nous avons abordé 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 l'acheminement 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.
- PrintSettings How-To pour configurer le DPI, 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.
Questions Fréquemment Posées
Quelle est la manière la plus simple de récupérer les noms des imprimantes en C# ?
La manière la plus simple de récupérer les noms des imprimantes en C# est d'utiliser IronPrint .NET, qui vous permet d'obtenir une liste des imprimantes installées avec un seul appel de méthode.
Puis-je récupérer les noms des imprimantes de manière asynchrone en utilisant IronPrint ?
Oui, IronPrint .NET prend en charge les opérations asynchrones, vous permettant de récupérer les noms des imprimantes sans bloquer le fil principal.
Est-il possible d'imprimer sur une imprimante spécifique par son nom en utilisant IronPrint ?
Absolument, IronPrint .NET vous permet de spécifier le nom de l'imprimante, vous pouvez donc imprimer des documents directement sur n'importe quelle imprimante installée de votre choix.
IronPrint prend-il en charge la récupération des noms d'imprimantes sur toutes les plateformes .NET ?
IronPrint .NET est conçu pour fonctionner avec diverses plateformes .NET, vous permettant de récupérer les noms des imprimantes de manière transparente dans différents environnements.
Comment IronPrint gère-t-il les noms d'imprimantes dans un environnement en réseau ?
IronPrint .NET peut récupérer les noms des imprimantes à la fois locales et en réseau, ce qui le rend polyvalent pour une utilisation dans différentes configurations réseau.

