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 ao imprimir PDF ou imprimir documento, 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 - Chame
Printer.GetPrinterNames()para obter umaList<string>de nomes de impressoras - Itere sobre a lista e exiba ou armazene cada nome
- Passe um 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
- Instale a biblioteca de impressão IronPrint C#
- Chame `Printer.GetPrinterNames()`
- Itere sobre o `List
` retornado - Atribua um nome a `PrintSettings.PrinterName` para 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 cada impressora registrada 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/list-all-printers.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
' ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
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 verificação rápida 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 UI não é aceitável — WPF, MAUI, ou apps web ASP.NET — IronPrint fornece Printer.GetPrinterNamesAsync(). O método retorna um Task<List<string>> e funciona de forma idêntica ao seu equivalente síncrono:
:path=/static-assets/print/content-code-examples/how-to/retrieve-printer-names/async-printer-names.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
' ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
Nós await a chamada como qualquer outra API assíncrona. O resultado é o mesmo List<string> retornado por GetPrinterNames(), portanto, não é necessário nenhum processamento ou conversão adicional. Esse padrão assíncrono se integra naturalmente com ações do controlador async Task e manipuladores de eventos async void.
Como faço para imprimir em uma impressora específica por nome?
Uma vez que temos o nome da impressora, nós o 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/print-to-specific-printer.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
' ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
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.
Nós também recuperamos bandejas de papel disponíveis para uma dada impressora usando Printer.GetPrinterTrays(printerName), que é útil quando um trabalho de impressão precisa tirar papel de uma bandeja específica.
Quais são os meus próximos passos?
Cobrimos quatro operações: instalar 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 por meio 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 Impressões 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.

