Como recuperar nomes de impressoras em C#

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

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

  1. Instale o IronPrint via NuGet: Install-Package IronPrint
  2. Adicione using IronPrint; ao arquivo
  3. Chame Printer.GetPrinterNames() para obter uma List<string> de nomes de impressoras
  4. Itere sobre a lista e exiba ou armazene cada nome
  5. Passe um nome selecionado para PrintSettings.PrinterName ao imprimir
  1. Instale IronPrint com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPrint
  2. 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);
    }
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronPrint em seu projeto hoje com uma avaliação gratuita

    arrow pointer

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!
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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:

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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 38,093 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPrint
executar um exemplo Veja seu documento chegar à impressora.