Imprimir em um aplicativo Web ASP.NET Framework com C
O método PrintAsync do IronPrint permite imprimir documento 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
- Instale IronPrint via NuGet:
Install-Package IronPrint - Importe
IronPrintno arquivo controlador - Adicione um botão de impressão para acionar o método
- Chame
await Printer.PrintAsync("file.pdf")na ação do controlador - Verifique a impressão do documento ao pressionar o botão
-
Instale IronPrint com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPrint -
Copie e execute este trecho de código.
return await IronPrint.Printer.PrintAsync("Basic.pdf"); -
Implante para testar em seu ambiente de produção.
Comece a usar IronPrint em seu projeto hoje com uma avaliação gratuita
Comece com o IronPrint
!{--010011000100100101000010010100100100000101010010010110010101111101010011010101000100000101010010010101000101111101010001010010010010010010100000101001100010111110100001001001100010011110100001101001011--}
Como Imprimir em uma Aplicação Web ASP.NET
- Instale a biblioteca de impressão C# do NuGet
- Importe `IronPrint` para o controlador
- Adicione um botão de impressão para acionar a ação
- Chame `PrintAsync` no método do controlador
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>

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
}
}
}
Imports IronPrint
Imports System.Threading.Tasks
Imports System.Web.Mvc
Namespace WebApplication4.Controllers
Public Class HomeController
Inherits Controller
Public Function Index() As ActionResult
Return View()
End Function
Public Function About() As ActionResult
ViewBag.Message = "Your application description page."
Return View()
End Function
Public Function Contact() As ActionResult
Return View()
End Function
' Action method to handle the printing operation
' This makes use of the PrintAsync method to avoid blocking the main thread
Public Function PrintPdf() As ActionResult
' 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
End Function
End Class
End Namespace
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");
}
}
}
}
Imports IronPrint
Imports System
Imports System.Threading.Tasks
Imports System.Web.Mvc
Namespace WebApplication4.Controllers
Public Class HomeController
Inherits Controller
' Async action method with proper error handling
Public Async Function PrintPdfAdvanced() As Task(Of ActionResult)
Try
' Create custom print settings
Dim printSettings As New PrintSettings With {
' 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 ex As Exception
' Handle printing errors gracefully
System.Diagnostics.Debug.WriteLine($"Printing error: {ex.Message}")
TempData("ErrorMessage") = "Unable to print document. Please try again."
Return RedirectToAction("Index")
End Try
End Function
End Class
End Namespace
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();
}
' Get list of available printers
Public Function GetAvailablePrinters() As ActionResult
Dim printers = Printer.GetPrinterNames()
ViewBag.PrinterList = New SelectList(printers)
Return View()
End Function
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:
-
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.
-
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.
-
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.
- 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.

