Como recuperar nomes de impressoras em C
Saber quais impressoras estão disponíveis em um sistema é um pré-requisito comum para qualquer aplicação .NET que envia documentos para impressão. Se o objetivo é permitir que os usuários escolham uma impressora em um menu suspenso ou direcionar trabalhos de impressão para um dispositivo específico automaticamente, obter os nomes das impressoras programaticamente é o primeiro passo.
IronPrint expõe um único método estático — Printer.GetPrinterNames() — que retorna todas as impressoras instaladas na máquina Windows atual como um List<string>. Cobrimos a instalação, recuperação síncrona e assíncrona, e como inserir um nome de impressora selecionado em um trabalho de impressão abaixo.
Início Rápido: Recuperar Nomes de Impressoras
- Instale o IronPrint via NuGet:
Install-Package IronPrint - Adicione
using IronPrint;ao arquivo - Ligue para
Printer.GetPrinterNames()para obter uma lista de nomes de impressorasList<string> - Itere sobre a lista e exiba ou armazene cada nome
- Passe o nome selecionado para
PrintSettings.PrinterNameao imprimir
-
Instale IronPrint com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPrint -
Copie e execute este trecho de código.
using IronPrint; // Retrieve every printer installed on this machine List<string> printers = Printer.GetPrinterNames(); foreach (var name in printers) { Console.WriteLine(name); } -
Implante para testar em seu ambiente de produção.
Comece a usar IronPrint em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Instale a biblioteca de impressão IronPrint C#
- Chame
Printer.GetPrinterNames() - Itere sobre o
Listretornado - Atribua um nome a
PrintSettings.PrinterNamepara direcionar essa impressora - Passe as configurações configuradas para
Printer.Print()para imprimir
Como posso listar todos os nomes de impressoras instaladas?
Printer.GetPrinterNames() consulta o sistema operacional e retorna todas as impressoras registradas como um List<string>. Chamamos este método uma vez e iteramos sobre o resultado:
: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
Saída do console
Encontrada(s) 3 impressora(s):
• Microsoft Print to PDF
• HP LaserJet Pro MFP M428
• OneNote (Área de Trabalho)
A lista retornada inclui impressoras locais, impressoras de rede e drivers de impressão virtuais. Cada string corresponde exatamente ao nome exibido no painel do Windows Configurações > Impressoras e scanners, então pode ser usado diretamente na configuração de impressão.
Se nenhuma impressora estiver instalada, o método retorna uma lista vazia em vez de lançar uma exceção. Uma rápida verificação de código printerNames.Count é tudo o que é necessário antes de apresentar opções a um usuário.
Como faço para recuperar nomes de impressoras assincronamente?
Para aplicações onde bloquear a thread da interface do usuário não é aceitável — aplicativos web WPF, MAUI ou ASP.NET — o IronPrint fornece Printer.GetPrinterNamesAsync(). O método retorna um Task<List<string>> e funciona de forma idêntica à sua contraparte síncrona:
: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
Nós await a chamada da mesma forma que qualquer outra API assíncrona. O resultado é o mesmo List<string> retornado por GetPrinterNames(), portanto, nenhuma análise ou conversão adicional é necessária. Esse padrão assíncrono se integra naturalmente com as ações do controlador e os manipuladores de eventos.
Como faço para imprimir em uma impressora específica por nome?
Assim que tivermos o nome da impressora, atribuímos a PrintSettings.PrinterName e passamos o objeto de configurações para Printer.Print(). Isso envia o documento diretamente para a impressora escolhida sem exibir uma caixa de diálogo:
: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 suporta propriedades adicionais como Dpi, PaperOrientation, Grayscale e PaperMargins. Veja a lista completa na referência API PrintSettings e o guia de como configurar impressões.
Também recuperamos as bandejas de papel disponíveis para uma determinada impressora usando Printer.GetPrinterTrays(printerName) , o que é útil quando um trabalho de impressão precisa puxar papel de uma bandeja específica.
Quais são os meus próximos passos?
Abordamos quatro operações: instalar o IronPrint, listar todos os nomes de impressoras com GetPrinterNames(), executar a mesma consulta de forma assíncrona com GetPrinterNamesAsync() e encaminhar um documento para uma impressora específica através de PrintSettings.PrinterName.
Para mais leitura e exemplos mais profundos, explore estes recursos:
- Tutoriais IronPrint — Imprimir Documento para guias de impressão de ponta a ponta.
- Como Configurar PrintSettings para configurar DPI, margens, orientação e mais.
- Referência API da Classe Printer para a lista completa de métodos estáticos.
Obtenha uma licença de teste gratuita para testar cada recurso em um ambiente ao vivo, ou veja as opções de licenciamento quando estiver pronto para implantar.
Perguntas frequentes
Qual é a maneira mais fácil de recuperar nomes de impressoras em C#?
A maneira mais fácil de recuperar nomes de impressoras em C# é usando o IronPrint .NET, que permite obter uma lista de impressoras instaladas com uma única chamada de método.
Posso recuperar nomes de impressoras de forma assíncrona usando o IronPrint?
Sim, o IronPrint .NET suporta operações assíncronas, permitindo que você recupere nomes de impressoras sem bloquear o thread principal.
É possível imprimir para uma impressora específica por nome usando o IronPrint?
Absolutamente, o IronPrint .NET permite que você especifique o nome da impressora, para que você possa imprimir documentos diretamente para qualquer impressora instalada de sua escolha.
O IronPrint suporta a recuperação de nomes de impressoras em todas as plataformas .NET?
O IronPrint .NET foi projetado para funcionar com várias plataformas .NET, permitindo que você recupere nomes de impressoras de forma contínua em diferentes ambientes.
Como o IronPrint lida com nomes de impressoras em um ambiente de rede?
O IronPrint .NET pode recuperar nomes de impressoras de impressoras locais e de rede, tornando-o versátil para uso em diferentes configurações de rede.

