Imprimir en una aplicación web ASP.NET Framework con C
El método PrintAsync de IronPrint permite la impresión de documentos sin bloqueo en aplicaciones web ASP.NET , lo que evita que la interfaz de usuario se congele mientras se procesan las solicitudes de impresión. Este enfoque asíncrono garantiza que las aplicaciones web con capacidad de respuesta puedan gestionar operaciones de impresión sin bloquear hilos.
Las aplicaciones web suelen requerir imprimir documento como resultado final. La integración de funciones de impresión con aplicaciones web plantea dificultades, sobre todo cuando se trata de operaciones asíncronas. IronPrint resuelve esto con la función PrintAsync. Este tutorial demuestra cómo implementar PrintAsync con ASP.NET Core para crear una aplicación web que imprime documentos sin bloqueos.
Antes de la implementación, tenga en cuenta que IronPrint proporciona amplias funciones, incluyendo recuperación de información de la impresora y configuración personalizada de la impresión. Estas capacidades lo hacen ideal para aplicaciones ASP.NET empresariales que requieren una sólida funcionalidad de impresión.
Inicio rápido: Impresión asincrónica de PDF con IronPrint en ASP.NET
Aquí tienes un ejemplo mínimo de la API PrintAsync de IronPrint: una línea en tu controlador inicia la impresión sin bloquear la aplicación. No se requiere código repetitivo.
-
Instala IronPrint con el Administrador de Paquetes NuGet
PM > Install-Package IronPrint -
Copie y ejecute este fragmento de código.
return await IronPrint.Printer.PrintAsync("Basic.pdf"); -
Despliegue para probar en su entorno real
Comienza a usar IronPrint en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
- Descargue una biblioteca de C# para imprimir en aplicaciones web
- Importar **IronPrint** al archivo de clase
- Añadir un botón de impresión para activar el método
- Implementar `PrintAsync` en el controlador
- Verificar la impresión de documentos al pulsar un botón
¿Cómo implementar la impresión asíncrona de PDF en ASP.NET?
Este ejemplo demuestra cómo imprimir un archivo PDF de forma asincrónica en un proyecto de aplicación web ASP.NET (.NET Framework) utilizando el método PrintAsync. PrintAsync inicia la impresión de forma asincrónica, manteniendo la aplicación responsiva en comparación con los métodos sincrónicos Print que bloquean los subprocesos.
El enfoque asíncrono es fundamental en aplicaciones web en las que varios usuarios pueden activar operaciones de impresión simultáneamente. A diferencia del método Print sincrónico, PrintAsync garantiza que su aplicación maneje solicitudes simultáneas sin degradación del rendimiento.
¿Dónde debo añadir el botón Imprimir?
En tu "Index.cshtml" (o vista de página de inicio), añade un botón que active una acción al hacer clic. Este botón invoca un método ActionResult en su 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>

¿Cómo configuro PrintAsync en mi controlador?
En su HomeController, implemente el método PrintAsync. Este método realiza operaciones de impresión de forma asíncrona, mejorando la capacidad de respuesta de la aplicación. Antes de la implementación, asegúrese de que la clave de licencia esté configurada correctamente para su uso en producción.
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 escenarios avanzados, implemente patrones async/await adecuados y personalice la operación de impresión. He aquí un ejemplo mejorado que muestra la gestión de errores y la configuración de impresión personalizada:
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 implementación mejorada muestra conceptos de la guía Configuración de impresión, incluida la especificación de nombres de impresora, la configuración de tamaños de papel y el manejo adecuado de errores.
Al trabajar con la selección de impresoras en entornos web, aproveche la funcionalidad Obtener nombres de impresoras para rellenar dinámicamente las listas de impresoras disponibles:
// 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 escenarios que requieran interacción con el usuario, considere la posibilidad de implementar un enfoque Imprimir con diálogo, aunque esto se adapta mejor a las aplicaciones de escritorio que a los entornos web.
Consideraciones adicionales para imprimir PDF en producción
Al implantar su aplicación ASP.NET con IronPrint, tenga en cuenta estos factores:
-
Configuración de licencias: Para aplicaciones ASP.NET, configure su clave de licencia en Web.config. Consulte la guía Configuración de la clave de licencia en Web.config para una configuración adecuada.
-
Acceso a impresoras: asegúrese de que la identidad del grupo de aplicaciones tiene permisos para acceder a impresoras locales o de red. La documentación Imprima sus documentos proporciona los requisitos de acceso a la impresora.
-
Manejo de errores: Implementar un manejo de errores robusto para impresoras fuera de línea o documentos inaccesibles. Para cuestiones técnicas, utilice el proceso Solicitud de ingeniería para resolver problemas complejos.
- Rendimiento: Para grandes volúmenes de impresión, implemente un sistema de colas para gestionar las solicitudes de impresión de forma eficiente. El código asincrónico
PrintAsynces ideal para tales implementaciones.
Si desea conocer todas las funciones de impresión, consulte API Reference para obtener documentación detallada de todos los métodos y propiedades del espacio de nombres IronPrint.
Preguntas Frecuentes
¿Cómo puedo implementar la impresión asíncrona de PDF en aplicaciones ASP.NET Framework?
Puede implementar la impresión asíncrona de PDF utilizando el método PrintAsync de IronPrint. Simplemente añada `return await IronPrint.Printer.PrintAsync("yourfile.pdf");` en la acción de su controlador. Este enfoque no bloqueante garantiza que su aplicación web siga respondiendo mientras procesa las solicitudes de impresión, evitando que la interfaz de usuario se bloquee durante las operaciones de impresión de documentos.
¿Por qué debería utilizar la impresión asíncrona en lugar de la síncrona en las aplicaciones web?
La impresión asíncrona con el método PrintAsync de IronPrint es fundamental para las aplicaciones web en las que varios usuarios pueden activar operaciones de impresión simultáneamente. A diferencia de los métodos de impresión síncronos que bloquean los hilos, PrintAsync garantiza que su aplicación gestione las solicitudes simultáneas sin degradar el rendimiento, manteniendo la capacidad de respuesta incluso con cargas pesadas.
¿Cuáles son los pasos mínimos para añadir la impresión en PDF a mi proyecto ASP.NET Framework?
El flujo de trabajo mínimo consta de 5 pasos: 1) Descargar la librería IronPrint para C#, 2) Importar IronPrint a su archivo de clase, 3) Añadir un botón de impresión a su vista, 4) Implementar PrintAsync en su acción de controlador, y 5) Verificar que la impresión del documento funciona cuando se pulsa el botón. Este proceso simplificado requiere cambios mínimos en el código.
¿Cómo añado un botón de impresión a mi vista ASP.NET?
En su Index.cshtml o en la vista de la página de inicio, añada un botón que active una acción del controlador. Utilice HTML como ``. Este botón invocará el método PrintPDF ActionResult en su controlador Home cuando se haga clic en él.
¿Puedo personalizar la configuración de impresión al utilizar la impresión asíncrona?
Sí, IronPrint ofrece funciones completas, como la configuración de impresión personalizada y la recuperación de información de la impresora. Estas capacidades lo hacen ideal para aplicaciones ASP.NET empresariales que requieren una funcionalidad de impresión robusta con opciones para configurar la selección de la impresora, la orientación de la página, los márgenes y otros parámetros de impresión.

