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, evitando que la interfaz de usuario se bloquee 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.

<Descripción: Diagrama o captura de pantalla que ilustre el concepto de código -->

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 este problema con la función PrintAsync. Este tutorial demuestra la implementación de PrintAsync con ASP.NET Core para crear una aplicación web que imprima documentos sin bloquearse.

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.

como-encabezado:2(Inicio Rápido: Impresión PDF Asincrónica con IronPrint en ASP.NET)

He aquí un ejemplo mínimo que muestra la API PrintAsync de IronPrint: una línea en el controlador inicia la impresión sin congelar la aplicación. No es necesaria ninguna repetición.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronPrint con el gestor 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

    Empieza a utilizar 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 la impresión de un archivo PDF de forma asíncrona en un proyecto de Aplicación Web ASP.NET (.NET Framework) utilizando el método PrintAsync. PrintAsync inicia la impresión de forma asíncrona, manteniendo la capacidad de respuesta de la aplicación en comparación con los métodos síncronos Print que bloquean los hilos.

<Descripción: Diagrama o captura de pantalla que ilustre el flujo de trabajo de PrintAsync -->

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 síncrono Print, PrintAsync garantiza que su aplicación maneje solicitudes concurrentes 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>
            <!-- Button that triggers the PrintPdf ActionResult -->
            <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>
            <!-- Button that triggers the PrintPdf ActionResult -->
            <a class="btn btn-primary btn-md" onclick="location.href='@Url.Action("PrintPdf", "Home")'">Print PDF</a>
        </p>
    </section>
</main>
HTML

Interfaz de la aplicación ASP.NET que muestra el menú de navegación y el botón azul Print 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
        }
    }
}
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
$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");
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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 PrintAsync asíncrono es ideal para este tipo de 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 35,444 | Versión: 2025.12 recién lanzado