IRONSOFTWAREHOME
USANDO IRONPDF

Cómo Crear un Visor PDF de Blazor Usando IronPDF

Curtis Chau
Curtis Chau
Updated: 23 de abril de 2026

Las tareas de impresión de archivos PDF en ASP .NET a menudo implican desafíos únicos que los desarrolladores con frecuencia encuentran. Ya sea que estés generando documentos PDF para facturas, informes o etiquetas de envío, implementar una funcionalidad de impresión confiable requiere navegar por las complejidades de la arquitectura cliente-servidor.

En este artículo, te mostraremos cómo manejar tareas de impresión PDF usando la poderosa biblioteca PDF de IronPDF para .NET.

Entendiendo el reto

Las aplicaciones de escritorio tradicionales pueden acceder directamente a la impresora predeterminada, pero las aplicaciones ASP.NET Core enfrentan varios obstáculos al imprimir documentos PDF:

// This fails in ASP.NET - wrong approach
Process.Start(@"C:\Files\document.pdf"); // Works locally, crashes on server

El código anterior ilustra un error común. El entorno del servidor carece de acceso directo a la impresora, y el sistema arroja errores debido a las restricciones de permisos de IIS. Otra cosa a recordar es que las aplicaciones web deben manejar eficazmente tanto los escenarios de impresión del lado del servidor como del lado del cliente.

Introducción a IronPDF

IronPDF proporciona una solución completa .NET Core para generar documentos PDF e imprimirlos sin dependencias externas como Adobe Reader. Vamos a instalar el paquete IronPDF usando NuGet:

PM > Install-Package IronPdf

Esta biblioteca .NET funciona sin problemas en todos los sistemas operativos, eliminando problemas de compatibilidad que afectan a otras bibliotecas. Esta herramienta funciona bien en Microsoft Windows y otros entornos de sistemas operativos.

Creación e impresión de documentos PDF del lado del servidor con la impresora predeterminada

Aquí te mostramos cómo generar e imprimir un documento PDF desde marcado HTML en tu controlador ASP.NET:

using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.Drawing; 
public class PdfController : Controller
{
    public IActionResult Index()
    {
        // Initialize the renderer
        var renderer = new ChromePdfRenderer();
        // Configure print-optimized settings
        renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
        // Generate PDF from HTML
        var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $999</p>");
        // Print to default printer
        pdf.Print();
        return Ok("Document sent to printer");
    }
}
C#

ChromePdfRenderer maneja la conversión manteniendo el estilo CSS y el formato de tamaño de fuente. Este ejemplo muestra la impresión básica a la impresora predeterminada sin interacción del usuario.

Resultado

Configuración de impresoras en red

Para entornos empresariales que requieren asignación específica de impresoras:

public IActionResult PrintToNetworkPrinter(string filePath)
{
    // Load existing PDF file
    var pdfDocument = PdfDocument.FromFile(filePath);
    // Get print document for advanced settings
    var printDocument = pdfDocument.GetPrintDocument();
    // Specify network printer
    printDocument.PrinterSettings.PrinterName = @"\\server\printer";
    printDocument.PrinterSettings.Copies = 2;
    // Configure page settings
    printDocument.DefaultPageSettings.Landscape = false;
    var renderer = printDocument.PrinterSettings.PrinterResolution;
    // Execute print
    printDocument.Print();
    return Json(new { success = true });
}

Este enfoque proporciona control total sobre la configuración de la impresora, incluyendo formato de papel y resolución, lo cual es vital para el dibujo y maquetación correctos.

Resultado

Cómo imprimir archivos PDF mediante programación en ASP.NET: Figura 2 - Impresión de archivos PDF con impresión en red

Confirmación de impresión

Cómo imprimir archivos PDF mediante programación en ASP.NET: Figura 3 - Mensaje de éxito para el trabajo de impresión PDF

Estrategia de impresión del lado del cliente

Dado que los navegadores restringen el acceso directo a impresoras, implementa la impresión del lado del cliente proporcionando el archivo PDF para su descarga:

public IActionResult GetRawPrintablePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml());
        // This header tells the browser to display the file inline.
        // We use IHeaderDictionary indexer to prevent ArgumentException.
        **HttpContext context**.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf";
        return File(pdf.BinaryData, "application/pdf");
    }
    public IActionResult PrintUsingClientWrapper()
    {
        var printUrl = Url.Action(nameof(GetRawPrintablePdf));
        // Use a simple HTML/JavaScript wrapper to force the print dialog
        var html = new StringBuilder();
        html.AppendLine("<!DOCTYPE html>");
        html.AppendLine("<html lang=\"en\">");
        html.AppendLine("<head>");
        html.AppendLine("    <title>Print Document</title>");
        html.AppendLine("</head>");
        html.AppendLine("<body>");
        // Load the PDF from the 'GetRawPrintablePdf' action into an invisible iframe.
        html.AppendLine($"    <iframe src='{printUrl}' style='position:absolute; top:0; left:0; width:100%; height:100%; border:none;'></iframe>");
        html.AppendLine("    <script>");
        // Wait for the iframe (and thus the PDF) to load, then trigger the print dialog.
        html.AppendLine("        window.onload = function() {");
        html.AppendLine("            // Wait briefly to ensure the iframe content is rendered before printing.");
        html.AppendLine("            setTimeout(function() {");
        html.AppendLine("                window.print();");
        html.AppendLine("            }, 100);");
        html.AppendLine("        };");
        html.AppendLine("    </script>");
        html.AppendLine("</body>");
        html.AppendLine("</html>");
        return Content(html.ToString(), "text/html");
    }
    private string GetInvoiceHtml()
    {
        // Build HTML with proper structure
        return @"
        <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                .header { font-weight: bold; color: #1e40af; border-bottom: 2px solid #3b82f6; padding-bottom: 5px; }
                .content { padding-top: 10px; }
            </style>
        </head>
        <body>
            <div class='header'>Invoice Summary (Client View)</div>
            <div class='content'>
                <p>Document content: This file is optimized for printing.</p>
                <p>Total Amount: <b>$999.00</b></p>
            </div>
        </body>
        </html>";
    }
C#

El documento PDF se abre en el navegador donde los usuarios pueden activar la impresión a través de su impresora predeterminada usando los cuadros de diálogo de impresión estándar del navegador. Este enfoque es superior a realizar una solicitud directa desde el lado del servidor para la impresión.

Resultado

Cómo imprimir archivos PDF mediante programación en ASP.NET: Figura 4 - Cuadro de diálogo de impresión del lado del cliente

Trabajar con varias entradas de código fuente

IronPDF maneja de manera flexible varias entradas de código fuente, lo cual es importante notar para los desarrolladores que buscan crear código de impresión dinámico:

public async Task<IActionResult> PrintFromMultipleSources()
{
    var renderer = new ChromePdfRenderer();
    // From URL
    var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://example.com");
    // From HTML file path
    var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html");
    var pdfToStream = renderer.RenderHtmlAsPdf("<h2>PDF from Memory Stream</h2><p>This content was loaded into memory first.</p>");
// Now, write the valid PDF bytes to the stream
using (var stream = new MemoryStream(pdfToStream.BinaryData))
{
    var pdfFromStream = new PdfDocument(stream);
    // Example: Print the PDF loaded from the stream
    // pdfFromStream.Print(); 
}
pdfFromUrl.Print();
// Logging the various files handled
    var fileList = new List<string> { "URL", "File Path", "Memory Stream" };
return Ok("PDF documents processed and 'example.com' printed to default server printer.");
}

Las líneas anteriores demuestran cómo crear una nueva lista de fuentes de archivos manejadas. Cada método preserva la estructura del documento y los gráficos mientras mantiene la calidad de impresión.

Cómo imprimir archivos PDF mediante programación en ASP.NET: Figura 5

Manejo y registro de errores

Implementa un manejo de errores robusto para entornos de producción:

using System.Drawing.Printing; // For PrinterSettings
// ... other usings ...
public IActionResult SafePrint(string documentId)
{
    try
    {
        var pdf = LoadPdfDocument(documentId);
        // Verify printer availability
        if (!PrinterSettings.InstalledPrinters.Cast<string>()
            .Contains("Target Printer"))
        {
            // Log error and handle gracefully
            return BadRequest("Printer not available");
        }
        pdf.Print();
        // Log successful output
        return Ok($"Document {documentId} printed successfully");
    }
    catch (Exception ex)
    {
        // Log error details
        return StatusCode(500, "Printing failed");
    }
}

Esto asegura una impresión confiable incluso cuando los recursos del sistema no están disponibles y es una parte clave de tu servicio de impresión.

Escenarios de salida

Impresora no disponible

Si la impresora especificada en el código no está disponible, el código proporcionará este mensaje de error:

Cómo imprimir archivos PDF mediante programación en ASP.NET: Figura 6 - Error de impresora no disponible

PDF impreso con éxito

Si tu PDF se imprime exitosamente, deberías ver un mensaje de confirmación como:

Cómo imprimir archivos PDF mediante programación en ASP.NET: Figura 7 - Mensaje de éxito de impresión del PDF

Configuración avanzada

La estructura de carpetas de IronPDF admite escenarios complejos. La versión de la biblioteca IronPDF que uses puede afectar estas configuraciones:

public IActionResult ConfigureAdvancedPrinting(object sender, EventArgs e)
{
    var renderer = new ChromePdfRenderer();
    // Configure rendering options
    renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.RenderDelay = 500; // Wait for dynamic content
    // Generate complex PDF documents
    var pdf = renderer.RenderHtmlAsPdf(GetDynamicContent());
    // Apply security settings
    pdf.SecuritySettings.AllowUserPrinting = true;
    pdf.MetaData.Author = "Your Company";
    return File(pdf.BinaryData, "application/pdf");
}

El comando para imprimir es simplemente pdf.Print() una vez que el documento ha sido generado.

Alternativa a IronPrint

Para requisitos de impresión especializados, Iron Software también ofrece IronPrint, una biblioteca de impresión .NET dedicada con soporte mejorado multiplataforma. Puedes encontrar un enlace a más información en su sitio web. El parámetro principal es simplemente la ruta del archivo. La descripción del producto está disponible en su sitio web.

Conclusión

IronPDF transforma la impresión de PDF en ASP.NET de un desafío complejo a una implementación sencilla. Sin requerir Adobe Reader o dependencias externas, puedes generar e imprimir archivos PDF con un código mínimo. La biblioteca PDF maneja todo desde la conversión de HTML hasta la configuración de la impresora, haciéndola ideal para escenarios de automatización del lado del servidor e impresión del lado del cliente.

¿Listo para optimizar tu flujo de trabajo de impresión de PDF? Comienza hoy de forma gratuita con la prueba gratuita y experimenta cómo IronPDF simplifica el procesamiento de documentos en tus aplicaciones ASP.NET. Con documentación completa y soporte de ingeniería directo, tendrás la impresión de PDF lista para producción en minutos.

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 estructurados y visualmente atractivos.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta