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.
O IronPrint expõe um único método estático — Printer.GetPrinterNames() — que retorna cada impressora instalada 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.
- Install IronPrint via NuGet:
Install-Package IronPrint - Adicione
using IronPrint;ao arquivo - Chame
Printer.GetPrinterNames()para obter umList<string>de nomes de impressoras - Itere sobre a lista e exiba ou armazene cada nome
- Passe um nome selecionado para
PrintSettings.PrinterNameao imprimir
-
1Install IronPrint with NuGet Package Manager
-
2Copie 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); }C# -
3Implante 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
List<string>retornado - 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 cada impressora registrada como um List<string>. Chamamos este método uma vez e iteramos sobre o resultado:
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}")
NextSaí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. Um rápido check 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 o thread da UI não é aceitável — WPF, MAUI, ou aplicativos 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:
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)
NextNós await a chamada como qualquer outra API assíncrona. O resultado é o mesmo List<string> retornado por GetPrinterNames(), então não é necessário parsing adicional ou conversão. Este padrão assíncrono integra-se naturalmente com ações de 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:
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 bandejas de papel disponíveis para uma impressora específica 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?
Cobrimos 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.
What additional properties can I configure with PrintSettings?
With `PrintSettings`, you can configure properties like `Dpi`, `PaperSize`, `PaperOrientation`, `Grayscale`, and `PaperMargins`.
How do I iterate over printer names in C# using IronPrint?
You can use a foreach loop to iterate over the list returned by `Printer.GetPrinterNames()`, allowing you to display or store each printer name.
Can IronPrint work with network and virtual printers?
Yes, the list returned by `Printer.GetPrinterNames()` includes local printers, network printers, and virtual print drivers.
Where can I find more information on printing settings in IronPrint?
You can refer to the [PrintSettings How-To Guide](https://ironsoftware.com/csharp/print/how-to/print-settings/) and the [API Reference](https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html) for detailed information.
Does IronPrint provide support for different paper trays?
Yes, you can use `Printer.GetPrinterTrays(printerName)` to retrieve available paper trays for a given printer.

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 bem estruturados e visualmente atraentes.