Imprimir en una aplicación web ASP.NET Framework con C

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

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 la impresión de documentos 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.

  1. Instala IronPrint con el Administrador de Paquetes NuGet

    PM > Install-Package IronPrint
  2. Copie y ejecute este fragmento de código.

    return await IronPrint.Printer.PrintAsync("Basic.pdf");
  3. Despliegue para probar en su entorno real

    Comienza a usar IronPrint en tu proyecto hoy mismo con una prueba gratuita

    arrow pointer

¿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>
HTML

 Interfaz de aplicación ASP.NET que muestra el menú de navegación y el botón azul Imprimir PDF para generar archivos PDF


¿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
        }
    }
}
$vbLabelText   $csharpLabel

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");
            }
        }
    }
}
$vbLabelText   $csharpLabel

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();
}
$vbLabelText   $csharpLabel

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 la implementación en producción

Al implantar su aplicación ASP.NET con IronPrint, tenga en cuenta estos factores:

  1. 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.

  2. 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.

  3. 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.

  4. 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 PrintAsync es 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.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 38,454 | Versión: 2026.3 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPrint
ejecuta una muestra observa cómo tu documento llega a la impresora.