Imprimir em um aplicativo Web ASP.NET Framework com C

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

O método PrintAsync do IronPrint permite a impressão de documentos sem bloqueio em aplicativos web ASP.NET, evitando congelamentos de UI enquanto processa requisições de impressão. Essa abordagem assíncrona garante que aplicativos web responsivos possam lidar com operações de impressão sem bloquear threads.

Aplicações web frequentemente necessitam de impressão de documentos como resultado final. A integração da funcionalidade de impressão com aplicações web apresenta desafios, particularmente quando se trata de operações assíncronas. O IronPrint resolve isso com a função PrintAsync. Este tutorial demonstra a implementação de PrintAsync com ASP.NET Core para criar um aplicativo web que imprime documentos sem bloqueio.

Antes da implementação, observe que o IronPrint oferece recursos abrangentes, incluindo recuperação de informações da impressora e configurações de impressão personalizadas . Essas funcionalidades o tornam ideal para aplicações ASP.NET empresariais que exigem recursos robustos de impressão.

Introdução Rápida: Impressão Assíncrona de PDF no ASP.NET

  1. Instale IronPrint via NuGet: Install-Package IronPrint
  2. Importe IronPrint no arquivo controlador
  3. Adicione um botão de impressão para acionar o método
  4. Chame await Printer.PrintAsync("file.pdf") na ação do controlador
  5. Verifique a impressão do documento ao pressionar o botão
  1. Instale IronPrint com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPrint
  2. Copie e execute este trecho de código.

    return await IronPrint.Printer.PrintAsync("Basic.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

Comece com o IronPrint

!{--010011000100100101000010010100100100000101010010010110010101111101010011010101000100000101010010010101000101111101010001010010010010010010100000101001100010111110100001001001100010011110100001101001011--}


Como implementar a impressão assíncrona de PDFs em ASP.NET?

Este exemplo demonstra a impressão de um arquivo PDF de forma assíncrona em um projeto ASP.NET Web Application (.NET Framework) usando o método PrintAsync. PrintAsync inicia a impressão de forma assíncrona, mantendo a aplicação responsiva em comparação aos métodos síncronos Print que bloqueiam threads.

A abordagem assíncrona é crucial em aplicações web onde vários usuários podem acionar operações de impressão simultaneamente. Diferente do método síncrono Print, PrintAsync garante que sua aplicação lide com requisições concorrentes sem degradação de desempenho.

Onde devo adicionar o botão de impressão?

No seu arquivo "Index.cshtml" (ou na página inicial), adicione um botão que execute uma ação ao ser clicado. Este botão invoca um método ActionResult em seu controlador:

@{
    ViewBag.Title = "Home Page";
}

<main>
    <section class="row" aria-labelledby="aspnetTitle">
        <h1 id="title">ASP.NET</h1>
        <p>

            <a class="btn btn-primary btn-md" onclick="location.href='@Url.Action("PrintPdf", "Home")'">Print PDF</a>
        </p>
    </section>
</main>
@{
    ViewBag.Title = "Home Page";
}

<main>
    <section class="row" aria-labelledby="aspnetTitle">
        <h1 id="title">ASP.NET</h1>
        <p>

            <a class="btn btn-primary btn-md" onclick="location.href='@Url.Action("PrintPdf", "Home")'">Print PDF</a>
        </p>
    </section>
</main>
HTML

Interface do aplicativo ASP.NET mostrando menu de navegação e botão azul Imprimir PDF para gerar PDFs


Como configuro o PrintAsync no meu controlador?

No seu HomeController, implemente o método PrintAsync. Este método executa operações de impressão de forma assíncrona, melhorando a capacidade de resposta da aplicação. Antes de implementar, certifique-se de que a configuração da chave de licença para uso em produção esteja correta.

using IronPrint;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
            return View();
        }

        public ActionResult Contact()
        {
            return View();
        }

        // Action method to handle the printing operation
        // This makes use of the PrintAsync method to avoid blocking the main thread
        public ActionResult PrintPdf()
        {
            // Wait for the asynchronous print operation to complete
            Printer.PrintAsync("Basic.pdf").Wait();

            // Return some view, for example, a confirmation page or the index page
            return View(); // Replace with an appropriate view
        }
    }
}
using IronPrint;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
            return View();
        }

        public ActionResult Contact()
        {
            return View();
        }

        // Action method to handle the printing operation
        // This makes use of the PrintAsync method to avoid blocking the main thread
        public ActionResult PrintPdf()
        {
            // Wait for the asynchronous print operation to complete
            Printer.PrintAsync("Basic.pdf").Wait();

            // Return some view, for example, a confirmation page or the index page
            return View(); // Replace with an appropriate view
        }
    }
}
$vbLabelText   $csharpLabel

Para cenários avançados, implemente padrões async/await adequados e personalize a operação de impressão. Aqui está um exemplo aprimorado que demonstra o tratamento de erros e as configurações de impressão personalizadas:

using IronPrint;
using System;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        // Async action method with proper error handling
        public async Task<ActionResult> PrintPdfAdvanced()
        {
            try
            {
                // Create custom print settings
                var printSettings = new PrintSettings
                {
                    // Select specific printer
                    PrinterName = "Microsoft Print to PDF",
                    // Set paper size
                    PaperSize = PaperSize.A4,
                    // Configure orientation
                    PaperOrientation = PaperOrientation.Portrait,
                    // Set number of copies
                    NumberOfCopies = 1,
                    // Configure DPI for high-quality output
                    Dpi = 300
                };

                // Print asynchronously with custom settings
                await Printer.PrintAsync("Basic.pdf", printSettings);

                // Log successful print operation (optional)
                System.Diagnostics.Debug.WriteLine("Document printed successfully");

                // Return success view or redirect
                TempData["PrintMessage"] = "Document sent to printer successfully!";
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                // Handle printing errors gracefully
                System.Diagnostics.Debug.WriteLine($"Printing error: {ex.Message}");
                TempData["ErrorMessage"] = "Unable to print document. Please try again.";
                return RedirectToAction("Index");
            }
        }
    }
}
using IronPrint;
using System;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        // Async action method with proper error handling
        public async Task<ActionResult> PrintPdfAdvanced()
        {
            try
            {
                // Create custom print settings
                var printSettings = new PrintSettings
                {
                    // Select specific printer
                    PrinterName = "Microsoft Print to PDF",
                    // Set paper size
                    PaperSize = PaperSize.A4,
                    // Configure orientation
                    PaperOrientation = PaperOrientation.Portrait,
                    // Set number of copies
                    NumberOfCopies = 1,
                    // Configure DPI for high-quality output
                    Dpi = 300
                };

                // Print asynchronously with custom settings
                await Printer.PrintAsync("Basic.pdf", printSettings);

                // Log successful print operation (optional)
                System.Diagnostics.Debug.WriteLine("Document printed successfully");

                // Return success view or redirect
                TempData["PrintMessage"] = "Document sent to printer successfully!";
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                // Handle printing errors gracefully
                System.Diagnostics.Debug.WriteLine($"Printing error: {ex.Message}");
                TempData["ErrorMessage"] = "Unable to print document. Please try again.";
                return RedirectToAction("Index");
            }
        }
    }
}
$vbLabelText   $csharpLabel

Esta implementação aprimorada demonstra conceitos do guia de Configurações de Impressão , incluindo a especificação de nomes de impressoras, a configuração de tamanhos de papel e o tratamento adequado de erros.

Ao trabalhar com a seleção de impressoras em ambientes web, utilize a funcionalidade Obter Nomes de Impressoras para preencher dinamicamente as listas de impressoras disponíveis:

// Get list of available printers
public ActionResult GetAvailablePrinters()
{
    var printers = Printer.GetPrinterNames();
    ViewBag.PrinterList = new SelectList(printers);
    return View();
}
// Get list of available printers
public ActionResult GetAvailablePrinters()
{
    var printers = Printer.GetPrinterNames();
    ViewBag.PrinterList = new SelectList(printers);
    return View();
}
$vbLabelText   $csharpLabel

Para cenários que exigem interação do usuário, considere implementar uma abordagem de Impressão com Diálogo , embora esta seja mais adequada para aplicações desktop do que para ambientes web.

Considerações adicionais para implantação em produção

Ao implantar seu aplicativo ASP.NET com o IronPrint, considere os seguintes fatores:

  1. Configuração da licença : Para aplicações ASP.NET , configure sua chave de licença no arquivo Web.config. Consulte o guia "Como configurar a chave de licença no Web.config" para obter instruções de configuração adequadas.

  2. Acesso à impressora : Certifique-se de que a identidade do pool de aplicativos tenha permissões para acessar impressoras locais ou de rede. A documentação "Imprimir seus documentos" fornece os requisitos de acesso à impressora.

  3. Tratamento de erros : Implemente um tratamento de erros robusto para impressoras offline ou documentos inacessíveis. Para questões técnicas, utilize o processo de Solicitação de Engenharia para resolver problemas complexos.

  4. Desempenho : Para impressão de alto volume, implemente um sistema de filas para gerenciar as solicitações de impressão de forma eficiente. O método assíncrono PrintAsync é ideal para tais implementações.

Para obter informações completas sobre as funcionalidades de impressão, consulte a Referência da API para obter documentação detalhada de todos os métodos e propriedades no namespace IronPrint .

Perguntas frequentes

Como implementar a impressão assíncrona de PDFs em aplicações ASP.NET Framework?

Você pode implementar a impressão assíncrona de PDFs usando o método `PrintAsync` do IronPrint. Basta adicionar `return await IronPrint.Printer.PrintAsync("seuarquivo.pdf");` na ação do seu controlador. Essa abordagem não bloqueante garante que seu aplicativo web permaneça responsivo enquanto processa as solicitações de impressão, evitando travamentos da interface do usuário durante as operações de impressão de documentos.

Por que devo usar impressão assíncrona em vez de impressão síncrona em aplicações web?

A impressão assíncrona com o método PrintAsync do IronPrint é fundamental para aplicações web onde múltiplos usuários podem acionar operações de impressão simultaneamente. Ao contrário dos métodos Print síncronos que bloqueiam threads, o PrintAsync garante que sua aplicação lide com requisições simultâneas sem perda de desempenho, mantendo a capacidade de resposta mesmo sob carga elevada.

Quais são os passos mínimos para adicionar impressão em PDF ao meu projeto ASP.NET Framework?

O fluxo de trabalho mínimo envolve 5 etapas: 1) Baixe a biblioteca IronPrint para C#, 2) Importe o IronPrint para o seu arquivo de classe, 3) Adicione um botão de impressão à sua view, 4) Implemente o método PrintAsync na ação do seu controller e 5) Verifique se a impressão do documento funciona quando o botão é pressionado. Este processo simplificado requer alterações mínimas no código.

Como adiciono um botão de impressão à minha view ASP.NET?

Na sua página Index.cshtml ou na página inicial, adicione um botão que acione uma ação do controlador. Use HTML como ` . Ao ser clicado, esse botão invocará o método ActionResult PrintPDF no seu controlador Home.

Posso personalizar as configurações de impressão ao usar a impressão assíncrona?

Sim, o IronPrint oferece recursos abrangentes, incluindo configurações de impressão personalizadas e recuperação de informações da impressora. Essas funcionalidades o tornam ideal para aplicações ASP.NET corporativas que exigem uma funcionalidade de impressão robusta, com opções para configurar a seleção da impressora, a orientação da página, as margens e outros parâmetros de impressão.

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.