Como Imprimir com um Diálogo em C#

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

O diálogo de impressão é a janela padrão do sistema operacional que permite aos usuários escolher uma impressora, definir o número de cópias, escolher um intervalo de páginas e ajustar as opções de papel antes de imprimir. Para aplicações de desktop onde os usuários precisam de controle sobre como e onde seus documentos são impressos, mostrar este diálogo é o comportamento esperado.

IronPrint fornece um único método — Printer.ShowPrintDialog() — que exibe o diálogo de impressão nativo, aplica as seleções do usuário e envia o documento para a impressora escolhida. Instalamos um pacote NuGet e escrevemos uma linha de código.

Início Rápido: Imprimir com um Diálogo

  1. Instale o IronPrint via NuGet: Install-Package IronPrint
  2. Adicione using IronPrint; ao arquivo
  3. Chame Printer.ShowPrintDialog("filepath") para abrir o diálogo de impressão nativo
  4. (Opcional) Passe um objeto PrintSettings para pré-configurar padrões do diálogo
  5. O usuário seleciona impressora, cópias e opções, e então clica em 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;
    
    // Display the print dialog and print the document
    Printer.ShowPrintDialog("document.pdf");
  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 o Diálogo de Impressão Funciona em C#?

O método Printer.ShowPrintDialog() abre o diálogo de impressão nativa do sistema operacional. O usuário vê o conjunto completo de opções de impressão — seleção de impressora, número de cópias, intervalo de páginas, orientação e tamanho do papel — e clica em Imprimir para enviar o trabalho, ou em Cancelar para fechar o diálogo sem imprimir.

Por trás dos bastidores, a abordagem nativa do .NET requer criar uma instância System.Windows.Forms.PrintDialog, conectando-a a um PrintDocument, lidando com o evento PrintPage para desenhar conteúdo na superfície de gráfico de impressão, verificando o DialogResult e, em seguida, chamando PrintDocument.Print(). Essa configuração geralmente executa 15–25 linhas de código. Também não inclui renderização de PDF ou imagem embutida — imprimir um PDF através do diálogo nativo significa primeiro analisar o PDF em páginas desenháveis, o que requer ainda outra biblioteca.

IronPrint lida com todo o pipeline em uma única chamada:

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/show-print-dialog-open-and-print.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
$vbLabelText   $csharpLabel

O método aceita um caminho de arquivo como string ou dados de arquivo bruto como byte[]. IronPrint detecta o formato do documento, renderiza-o através do motor apropriado, e apresenta o diálogo. Quando o usuário confirma, o documento é impresso com as configurações escolhidas. O tutorial de impressão de documentos explora o ciclo completo de impressão em mais detalhes.

Podemos definir valores padrão antes que o diálogo seja aberto criando um objeto PrintSettings e passando-o como o segundo parâmetro. O diálogo abrirá com esses valores pré-selecionados, e o usuário pode aceitá-los como estão ou alterar qualquer configuração.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/preconfigure-dialog-settings.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
$vbLabelText   $csharpLabel

Isso é útil quando o aplicativo já conhece previamente a impressora ou o formato de papel provável. Por exemplo, um sistema de ponto de venda que sempre imprime recibos em uma impressora térmica específica pode definir PrinterName para esse dispositivo. O usuário ainda tem a opção de alterá-lo no diálogo.

Para descobrir quais impressoras estão disponíveis no sistema, chamamos Printer.GetPrinterNames(), que retorna um List<string> de todas as impressoras instaladas. Da mesma forma, Printer.GetPrinterTrays() retorna as bandejas de papel disponíveis para uma determinada impressora.

A lista completa de propriedades configuráveis inclui PrinterName, PaperSize, PaperOrientation, Dpi, NumberOfCopies, Grayscale, PaperMargins, Flatten (para campos de formulário PDF) e Tray. O guia de configurações de impressão cobre cada propriedade com exemplos de código. Qualquer propriedade não definida em PrintSettings reverte para a configuração padrão da impressora selecionada.

Como mostro o diálogo de forma assíncrona?

O método Printer.ShowPrintDialogAsync() retorna um Task, tornando-o compatível com await. Isso impede que o diálogo bloqueie a thread da interface de usuário, essencial para WPF, MAUI e qualquer aplicativo onde uma interface congelada cria uma má experiência do usuário.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/show-print-dialog-async.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
$vbLabelText   $csharpLabel

ShowPrintDialogAsync() aceita os mesmos parâmetros da versão síncrona: um caminho de arquivo ou array de bytes, além de um objeto PrintSettings opcional. O padrão assíncrono segue o mesmo Padrão Assíncrono Baseado em Tarefas usado em todo o desenvolvimento moderno do .NET.

IronPrint funciona em aplicativos WinForms, WPF, MAUI e console. A aparência do diálogo se adapta à plataforma host e à versão do sistema operacional, para que o usuário sempre veja a janela de impressão nativa que espera.

Quando devo usar um diálogo vs. impressão silenciosa?

A escolha depende de se o usuário precisa de controle sobre o trabalho de impressão.

Critérios Imprimir com Diálogo Impressão silenciosa
Interação do usuário Usuário seleciona impressora, cópias, intervalo de páginas Sem interação — imprime imediatamente
Ideal para Aplicativos de desktop, impressões avulsas, funcionalidades voltadas para o usuário Tarefas em lote, serviços de segundo plano, aplicativos de quiosque
Seleção de impressora Usuário escolhe no diálogo Defina programaticamente através de PrintSettings
Método IronPrint Printer.ShowPrintDialog() Printer.Print()
Variante assíncrona ShowPrintDialogAsync() PrintAsync()

Use o diálogo quando os usuários precisam verificar ou alterar configurações antes da impressão — exportações de relatórios, impressões de faturas ou qualquer cenário onde a impressora errada cause uma página desperdiçada. Use impressão silenciosa quando o aplicativo controlar todo o trabalho e nenhuma decisão humana for necessária. O tutorial de documento de impressão demonstra ambas as abordagens lado a lado.

Quais formatos de arquivo o diálogo de impressão suporta?

Printer.ShowPrintDialog() suporta os mesmos formatos que impressão silenciosa: PDF, PNG, TIFF, JPEG, GIF, HTML e BMP. Passamos o caminho do arquivo, independentemente do formato, e o IronPrint lida com a renderização e comunicação com o spooler de impressão. Dados de arquivo como byte[] também são aceitos, o que é útil quando o documento é gerado na memória ou obtido de um banco de dados.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-dialog-image-and-byte-array.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
$vbLabelText   $csharpLabel

A página de exemplos de código mostra cenários adicionais específicos para formatos. Para fluxos de trabalho específicos de PDF — gerando um PDF e imprimindo-o imediatamente — o IronPDF se combina naturalmente com o IronPrint. A comparação IronPrint vs. IronPDF explica quando usar cada um.

Próximos passos

Imprimir com diálogo se resume a dois métodos: Printer.ShowPrintDialog() para chamadas síncronas e Printer.ShowPrintDialogAsync() para execução não bloqueante. Pré-configure padrões com PrintSettings e deixe o usuário ajustá-los a partir daí. Ambos os métodos suportam todos os formatos de documento do IronPrint e funcionam em projetos WinForms, WPF, MAUI e de console.

Explore os tutoriais do IronPrint para tutoriais completos, a referência da API da classe Printer para todos os métodos disponíveis ou o guia de configurações de impressão para configuração avançada. O changelog rastreia melhorias recentes e novos recursos.

Inicie uma avaliação gratuita de 30 dias para testar a impressão de diálogo em um projeto em tempo real — não é necessário cartão de crédito. Quando estiver pronto para enviar, veja as opções de licenciamento, a partir de $749.

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.