Comment spécifier le nom de l'imprimante en C

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

La classe PrintSettings d'IronPrint expose une propriété PrinterName qui redirige les tâches d'impression vers une imprimante spécifique. Nous attribuons le nom exact de l'imprimante cible sous forme de chaîne de caractères, transmettons l'objet PrintSettings configuré à n'importe quelle méthode d'impression IronPrint, et le document est envoyé vers cette imprimante plutôt que vers l'imprimante par défaut du système.

Ce guide explique comment définir un nom d'imprimante, découvrir les imprimantes disponibles lors de l'exécution, et combiner la sélection de l'imprimante avec d'autres paramètres d'impression.

Démarrage rapide : spécifiez le nom de l'imprimante

  1. Installez IronPrint avec le Gestionnaire de Packages NuGet

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

    using IronPrint;
    
    // Print a document to a specific printer
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = "HP LaserJet Pro M404"
    });
  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 spécifier un nom d'imprimante en C# ?

Nous spécifions l'imprimante cible en attribuant son nom à la propriété PrinterName d'un objet PrintSettings. Nous transmettons ensuite cet objet à Printer.Print.

Entrée

invoice.pdf est une facture B2B au format A4 avec des lignes de commande et des totaux, imprimée sur une imprimante spécifique via PrintSettings.PrinterName.

: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";

// Print 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"

' Print to the specified printer
Printer.Print("invoice.pdf", settings)
$vbLabelText   $csharpLabel

Nous instancions d'abord PrintSettings, qui s'initialise avec PrinterName = null, c'est-à-dire l'imprimante par défaut du système d'exploitation. Nous remplaçons ensuite PrinterName par le nom exact de l'imprimante cible. Lorsque nous appelons Printer.Print, IronPrint envoie le travail directement dans la file d'attente de cette imprimante.

Sortie

La facture est envoyée directement à l'imprimante nommée. Le travail apparaît dans la file d'attente de l'imprimante, comme vu dans l'exemple de impression silencieuse.

Facture sortie imprimée sur "Microsoft Print to PDF" en utilisant PrinterName.

Deux détails à garder à l'esprit. Tout d'abord, le nom de l'imprimante doit correspondre exactement à ce que le système d'exploitation rapporte ; Cette comparaison est sensible à la casse. Une correspondance incorrecte, telle que "hp laserjet" au lieu de "HP LaserJet", échouera silencieusement ou provoquera une erreur. Deuxièmement, si l'utilisateur ouvre une boîte de dialogue PRINT via ShowPrintDialog, la sélection effectuée dans cette boîte de dialogue remplace toute valeur PrinterName définie dans le code, donnant ainsi le contrôle final à l'utilisateur.

Si le nom de l'imprimante n'est pas connu à l'avance, nous pouvons interroger toutes les imprimantes installées à l'exécution au lieu de coder la valeur en dur.

Comment découvrir les imprimantes disponibles ?

Plutôt que de coder en dur les noms d'imprimantes, nous pouvons interroger le système lors de l'exécution à l'aide de Printer.GetPrinterNames. Cette méthode renvoie un List<string> contenant toutes les imprimantes installées sur la machine.

Entrée

report.pdf est un rapport d'affaires au format A4 avec une section résumé et un tableau de données, imprimé sur la première imprimante découverte dynamiquement.

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-discover-printers.cs
using IronPrint;

// List every installed printer
List<string> printers = Printer.GetPrinterNames();

// Print each printer name
foreach (string name in printers)
{
    Console.WriteLine(name);
}

// Print to the first available printer
if (printers.Count > 0)
{
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = printers[0]
    });
}
Imports IronPrint

' List every installed printer
Dim printers As List(Of String) = Printer.GetPrinterNames()

' Print each printer name
For Each name As String In printers
    Console.WriteLine(name)
Next

' Print to the first available printer
If printers.Count > 0 Then
    Printer.Print("report.pdf", New PrintSettings With {
        .PrinterName = printers(0)
    })
End If
$vbLabelText   $csharpLabel

Nous appelons GetPrinterNames pour récupérer toutes les imprimantes connues du système d'exploitation, y compris les imprimantes locales, réseau et virtuelles telles que " Microsoft Print to PDF ". Nous parcourons ensuite la liste et sélectionnons une imprimante par index, par correspondance de nom ou selon toute logique personnalisée requise par l'application.

Sortie

Le rapport est envoyé à la première imprimante disponible. Le travail apparaît dans la file d'attente de l'imprimante comme indiqué ci-dessus.

Sortie du rapport imprimée sur la première imprimante disponible via GetPrinterNames.

Ce modèle de découverte-puis-impression est essentiel pour les applications déployées sur différentes machines. Coder en dur un nom d'imprimante fonctionne pour des scénarios sur une seule machine, mais les applications de production devraient interroger les imprimantes disponibles et soit laisser l'utilisateur choisir, soit en sélectionner une de manière programmatique en fonction de conventions de nommage.

La sélection de l'imprimante peut également être associée au format de papier, à la DPI, au nombre de copies et aux marges dans un seul objet de configuration.

Comment combiner le nom d'imprimante avec d'autres paramètres ?

La classe PrintSettings expose PrinterName ainsi que des propriétés relatives au format du papier, à l'orientation, à la résolution (DPI), aux marges, au nombre de copies, etc. Nous configurons tout dans un seul objet.

Entrée

quarterly-report.pdf est un rapport financier trimestriel au format A4 contenant des fiches KPI et des graphiques, imprimé avec PrinterName combiné au format de papier, à la résolution (DPI) et au nombre de copies dans un seul objet PrintSettings.

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-combined-settings.cs
using IronPrint;

// Configure full print settings with a named 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 the quarterly report
Printer.Print("quarterly-report.pdf", settings);
Imports IronPrint

' Configure full print settings with a named 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 the quarterly report
Printer.Print("quarterly-report.pdf", settings)
$vbLabelText   $csharpLabel

Nous utilisons la syntaxe d'initialisation d'objet pour la lisibilité. PrinterName achemine la tâche vers " Office Color Printer " tandis que les autres propriétés contrôlent le format de sortie. Dpi à 300 produit un texte et des graphiques nets. PaperMargins accepte des valeurs en millimètres via le constructeur Margins. Pour la liste complète des propriétés disponibles, consultez le guide des paramètres d'impression.

Sortie

Le rapport trimestriel s'imprime avec l'imprimante nommée, A4 en mode portrait, 300 DPI, 2 copies, et des marges de 15 mm combinées en un seul travail. Le travail apparaît dans la file d'attente de l'imprimante comme indiqué ci-dessus.

Sortie du rapport trimestriel avec NomImprimante, A4, 300 DPI, 2 copies, et marges de 15 mm.

IronPrint valide la configuration en tant qu'unité et soumet les paramètres combinés au pilote d'imprimante dans un seul travail.

Les applications qui ne peuvent pas bloquer le thread principal lors de la découverte de l'imprimante ou de l'impression peuvent utiliser les équivalents asynchrones de ces deux opérations.

Comment sélectionner une imprimante et imprimer de manière asynchrone ?

Pour les applications WPF et WinForms où le blocage du thread principal n'est pas envisageable, nous utilisons Printer.GetPrinterNamesAsync et Printer.PrintAsync. Les deux renvoient un Task, ce qui permet à l'interface utilisateur de rester réactive.

: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 available printers asynchronously
        List<string> printers = await Printer.GetPrinterNamesAsync();

        // Exit if no printers are installed
        if (printers.Count == 0)
        {
            Console.WriteLine("No printers found.");
            return;
        }

        // Configure settings for the first available printer
        PrintSettings settings = new PrintSettings
        {
            PrinterName = printers[0],
            Dpi = 300
        };

        // Print asynchronously
        await Printer.PrintAsync(filePath, settings);
    }
}
Imports IronPrint
Imports System.Threading.Tasks

Public Class PrintService
    Public Async Function PrintToFirstAvailableAsync(filePath As String) As Task
        ' Discover available printers asynchronously
        Dim printers As List(Of String) = Await Printer.GetPrinterNamesAsync()

        ' Exit if no printers are installed
        If printers.Count = 0 Then
            Console.WriteLine("No printers found.")
            Return
        End If

        ' Configure settings for the first available printer
        Dim settings As New PrintSettings With {
            .PrinterName = printers(0),
            .Dpi = 300
        }

        ' Print asynchronously
        Await Printer.PrintAsync(filePath, settings)
    End Function
End Class
$vbLabelText   $csharpLabel

Cet exemple basé sur des classes encapsule la logique de détection et d'impression dans un service réutilisable. Nous appelons GetPrinterNamesAsync pour récupérer la liste des imprimantes sans bloquer l'interface utilisateur, puis nous attribuons la première imprimante disponible à PrinterName. L'appel await Printer.PrintAsync envoie la tâche de manière asynchrone.

Sortie

La facture est imprimée de manière asynchrone sur la première imprimante détectée. Le travail apparaît dans la file d'attente de l'imprimante comme indiqué ci-dessus.

Sortie de facture imprimée de manière asynchrone vers la première imprimante disponible.

En production, nous pourrions remplacer printers[0] par une logique respectant une convention de nommage, par exemple en recherchant les imprimantes contenant " Label " pour les étiquettes d'expédition ou " Color " pour les documents de marque. Les méthodes asynchrones d'IronPrint acceptent toutes le même objet PrintSettings, de sorte que le comportement PrinterName est identique entre les chemins synchrones et asynchrones.

Avec l'affectation statique, la découverte à l'exécution, les paramètres combinés et les workflows asynchrones tous couverts, une poignée de ressources connexes méritent d'être ajoutées aux favoris.

Quelles Sont Mes Prochaines Étapes ?

Nous avons abordé la spécification d'un nom d'imprimante via PrintSettings.PrinterName, de l'affectation statique à la découverte dynamique en exécution avec Printer.GetPrinterNames. Points clés : les noms d'imprimantes doivent correspondre exactement (sensible à la casse), null utilise par défaut l'imprimante par défaut du système d'exploitation, et les boîtes de dialogue d'impression remplacent la sélection programmatique.

L'exemple obtenir les noms d'imprimante fournit un extrait de découverte autonome, tandis que le guide des paramètres d'impression couvre chaque propriété configurable en détail. La référence de l'API de la classe Printer documente toutes les méthodes d'impression statiques, et la référence de l'API PrintSettings répertorie chaque champ et valeur par défaut. Pour un aperçu complet de bout en bout, le tutoriel Imprimer un document rassemble tous les éléments.

Commencez un essai gratuit de 30 jours pour tester la sélection d'imprimante dans un projet en direct. Lorsque vous êtes prêt, consultez les options de licence à partir de $999.

https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html https://ironsoftware.com/csharp/print/how-to/print-settings/ https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html

Questions Fréquemment Posées

Comment puis-je spécifier un nom d'imprimante en C# en utilisant IronPrint ?

Avec IronPrint, vous pouvez spécifier un nom d'imprimante en C# en définissant la propriété PrinterName. Cela vous permet de cibler une imprimante spécifique pour vos tâches d'impression.

Qu'est-ce qu'IronPrint ?

IronPrint est une bibliothèque de Iron Software qui permet aux développeurs de gérer les tâches d'impression dans les applications C#, offrant des fonctionnalités pour spécifier les noms d'imprimantes et d'autres options d'impression.

Comment découvrir les imprimantes disponibles en C# ?

En utilisant IronPrint, vous pouvez facilement découvrir les imprimantes disponibles sur votre réseau en accédant à la liste des imprimantes et en sélectionnant le PrinterName désiré pour votre tâche d'impression.

Puis-je définir la propriété PrinterName de manière dynamique ?

Oui, avec IronPrint, vous pouvez définir dynamiquement la propriété PrinterName dans votre code C# pour sélectionner l'imprimante désirée à l'exécution.

Est-il possible d'imprimer sur une imprimante réseau en utilisant IronPrint ?

Oui, IronPrint vous permet de spécifier et d'imprimer sur des imprimantes réseau en définissant la propriété PrinterName appropriée dans votre application C#.

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 41,154 | Version : 2026.5 just released
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.