Saltar al pie de página
USANDO IRONPDF

Cómo crear archivos PDF en .NET Core

Crear un documento PDF programáticamente es un enfoque común y un requisito frecuente en las aplicaciones web modernas. Ya sea que estés construyendo facturas, informes o cualquier sistema basado en documentos, saber cómo crear archivos PDF de manera eficiente en aplicaciones ASP y .NET Core es esencial. En este tutorial, exploraremos los mejores métodos para manejar la tarea .NET Core crear archivos PDF usando IronPDF. Esta es una poderosa biblioteca .NET Core que simplifica las capacidades de generación de PDF. Para detalles técnicos completos, consulte la documentación oficial.

Introducción a IronPDF

IronPDF es una completa biblioteca PDF de .NET Core que transforma la creación de PDF compleja en operaciones sencillas. A diferencia de los enfoques tradicionales que requieren dibujar elementos manualmente, IronPDF aprovecha el marcado HTML y CSS para generar archivos PDF que se ajustan exactamente a los requisitos de tu diseño.

Para comenzar a crear PDFs en tu proyecto de biblioteca .NET Core, instala el paquete NuGet de IronPDF usando la Consola del Administrador de Paquetes de Visual Studio ejecutando el siguiente comando:

Install-Package IronPdf

Esta simple instalación proporciona acceso inmediato a capacidades robustas de generación de PDF para tus aplicaciones web.

Creación de su primer documento PDF

Vamos a crear un documento PDF simple para entender lo básico. El siguiente ejemplo demuestra la generación de PDFs con contenido formateado:

using IronPdf;
// Create a new ChromePdfRenderer object
var renderer = new ChromePdfRenderer();
// Define HTML content with styling
var html = @"
    <html>
        <body style='font-family: Arial; margin: 40px;'>
            <h1>Hello World PDF Document</h1>
            <p>This is your first PDF file created with IronPDF!</p>
        </body>
    </html>";
// Generate PDF from HTML
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the PDF document
pdf.SaveAs("output.pdf");
using IronPdf;
// Create a new ChromePdfRenderer object
var renderer = new ChromePdfRenderer();
// Define HTML content with styling
var html = @"
    <html>
        <body style='font-family: Arial; margin: 40px;'>
            <h1>Hello World PDF Document</h1>
            <p>This is your first PDF file created with IronPDF!</p>
        </body>
    </html>";
// Generate PDF from HTML
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the PDF document
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este código crea un nuevo objeto PdfDocument que creará un nuevo PDF al renderizar contenido HTML. El ChromePdfRenderer maneja la conversión, asegurando que tus documentos PDF mantengan un formato consistente.

Resultado

Convertir HTML a PDF con funciones avanzadas

IronPDF sobresale en convertir páginas web complejas y contenido HTML en archivos PDF profesionales. El siguiente código explora cómo crear un nuevo documento PDF con características más avanzadas como tablas, imágenes y elementos estilizados funciona:

public void CreateAdvancedPdf()
{
    var renderer = new ChromePdfRenderer();
    // Configure rendering options
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    var html = @"
        <html>
        <head>
            <style>
                table { width: 100%; border-collapse: collapse; }
                th, td { padding: 10px; border: 1px solid #ddd; }
                th { background-color: #f2f2f2; }
            </style>
        </head>
        <body>
            <h2>Sales Report</h2>
            <table>
                <tr>
                    <th>Product</th>
                    <th>Quantity</th>
                    <th>Total</th>
                </tr>
                <tr>
                    <td>Software License</td>
                    <td>10</td>
                    <td>$500</td>
               </tr>
            </table>
        </body>
        </html>";
    // Create PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("report.pdf");
}
public void CreateAdvancedPdf()
{
    var renderer = new ChromePdfRenderer();
    // Configure rendering options
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    var html = @"
        <html>
        <head>
            <style>
                table { width: 100%; border-collapse: collapse; }
                th, td { padding: 10px; border: 1px solid #ddd; }
                th { background-color: #f2f2f2; }
            </style>
        </head>
        <body>
            <h2>Sales Report</h2>
            <table>
                <tr>
                    <th>Product</th>
                    <th>Quantity</th>
                    <th>Total</th>
                </tr>
                <tr>
                    <td>Software License</td>
                    <td>10</td>
                    <td>$500</td>
               </tr>
            </table>
        </body>
        </html>";
    // Create PDF file
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("report.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este ejemplo muestra cómo crear documentos PDF con tablas formateadas, demostrando la habilidad de IronPDF para manejar diseños complejos y estilo CSS.

Resultado

Cómo Crear Archivos PDF en .NET Core: Figura 2 - PDF con Características Avanzadas

Trabajar con aplicaciones ASP.NET Core

Integrar la generación de PDF en vistas ASP.NET Core MVC es sencillo. Aquí hay una implementación de proyecto de ejemplo para generar PDFs desde un controlador:

using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.IO;
public class DocumentController : Controller
{
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        // Create HTML content
        var html = "<h1>Invoice</h1><p>Thank you for your purchase!</p>";
        // Generate PDF
        var pdf = renderer.RenderHtmlAsPdf(html);
        byte[] pdfBytes = pdf.BinaryData;
    // Return PDF file using the byte array, setting the content type to PDF
    return File(pdfBytes,
            "application/pdf",
            "document.pdf");
       }
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.IO;
public class DocumentController : Controller
{
    public IActionResult GeneratePdf()
    {
        var renderer = new ChromePdfRenderer();
        // Create HTML content
        var html = "<h1>Invoice</h1><p>Thank you for your purchase!</p>";
        // Generate PDF
        var pdf = renderer.RenderHtmlAsPdf(html);
        byte[] pdfBytes = pdf.BinaryData;
    // Return PDF file using the byte array, setting the content type to PDF
    return File(pdfBytes,
            "application/pdf",
            "document.pdf");
       }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este método de controlador genera un documento PDF y lo devuelve como un archivo descargable, perfecto para el procesamiento del lado del servidor en aplicaciones web. También podrías hacer uso de un nuevo objeto MemoryStream para manejar la creación del documento PDF.

Resultado

Cómo Crear Archivos PDF en .NET Core: Figura 3 - PDF generado con nuestro controlador ASP.NET

Técnicas avanzadas de generación de PDF

IronPDF soporta numerosas características avanzadas para crear PDFs. Puedes agregar encabezados, pies de página, números de página e incluso fusionar múltiples archivos PDF:

public void CreatePdfWithHeaderFooter()
{
    var renderer = new ChromePdfRenderer();
    // Add header
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter
    {
        CenterText = "Company Report",
        DrawDividerLine = true
    };
    // Add footer with page numbers
    renderer.RenderingOptions.TextFooter = new TextHeaderFooter
    {
        CenterText = "Page {page} of {total-pages}",
        DrawDividerLine = true
    };
    var html = "<h1>Annual Report</h1><p>Content goes here...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    // Save the new document
    pdf.SaveAs("report-with-header.pdf");
}
// Merge multiple PDFs
public void MergePdfFiles()
{
    var renderer = new ChromePdfRenderer();
    var pdf1 = renderer.RenderHtmlAsPdf("<p>First Document</p>");
    var pdf2 = renderer.RenderHtmlAsPdf("<p>Second Document</p>");
    // Merge PDF documents
    var merged = PdfDocument.Merge(pdf1, pdf2);
    merged.SaveAs("merged.pdf");
}
// Example of iterating over something, illustrating 'int i' and 'index'
public void ProcessMultipleFiles(string[] filePaths)
{
    for (int i = 0; i < filePaths.Length; i++)
    {
        // Use 'i' as an index to process each source file
        var source file = filePaths[i];
        Console.WriteLine($"Processing file at index {i}: {source file}");
        // Imagine code here to load or process the file
        // var pdf = PdfDocument.FromFile(sourceFile); // load
    }
}
public void CreatePdfWithHeaderFooter()
{
    var renderer = new ChromePdfRenderer();
    // Add header
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter
    {
        CenterText = "Company Report",
        DrawDividerLine = true
    };
    // Add footer with page numbers
    renderer.RenderingOptions.TextFooter = new TextHeaderFooter
    {
        CenterText = "Page {page} of {total-pages}",
        DrawDividerLine = true
    };
    var html = "<h1>Annual Report</h1><p>Content goes here...</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    // Save the new document
    pdf.SaveAs("report-with-header.pdf");
}
// Merge multiple PDFs
public void MergePdfFiles()
{
    var renderer = new ChromePdfRenderer();
    var pdf1 = renderer.RenderHtmlAsPdf("<p>First Document</p>");
    var pdf2 = renderer.RenderHtmlAsPdf("<p>Second Document</p>");
    // Merge PDF documents
    var merged = PdfDocument.Merge(pdf1, pdf2);
    merged.SaveAs("merged.pdf");
}
// Example of iterating over something, illustrating 'int i' and 'index'
public void ProcessMultipleFiles(string[] filePaths)
{
    for (int i = 0; i < filePaths.Length; i++)
    {
        // Use 'i' as an index to process each source file
        var source file = filePaths[i];
        Console.WriteLine($"Processing file at index {i}: {source file}");
        // Imagine code here to load or process the file
        // var pdf = PdfDocument.FromFile(sourceFile); // load
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Estos ejemplos demuestran cómo agregar toques profesionales a tus documentos PDF y combinar múltiples archivos en un solo documento.

Salida con encabezado y pie de página personalizados

Cómo Crear Archivos PDF en .NET Core: Figura 4 - PDF creado con encabezado y pie de página simples y personalizados

Trabajo con formularios y contenido dinámico

IronPDF puede crear documentos PDF interactivos con campos de formulario:

public void CreatePdfWithForm()
{
    var html = @"
    <!DOCTYPE html>
    <html>
    <head>
        <title>PDF Test Form</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                margin: 20px;
                background-color: #f4f4f4;
            }
            .form-container {
                width: 400px;
                padding: 20px;
                border: 1px solid #ccc;
                border-radius: 8px;
                background-color: #fff;
                box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
            }
            .form-group {
                margin-bottom: 15px;
            }
            label {
                display: block; /* Make label take up full width */
                margin-bottom: 5px;
                font-weight: bold;
                color: #333;
            }
            input[type='text'], textarea {
                width: 100%;
                padding: 10px;
                border: 1px solid #ddd;
                border-radius: 4px;
                box-sizing: border-box; /* Include padding and border in the element's total width and height */
            }
            textarea {
                height: 100px;
                resize: vertical;
            }
            .checkbox-group {
                display: flex;
                align-items: center;
            }
            .checkbox-group label {
                display: inline;
                font-weight: normal;
                margin-left: 8px;
            }
        </style>
    </head>
    <body>
        <div class='form-container'>
            <h2>Document Generation Test Form</h2>
            <form>
                <div class='form-group'>
                    <label for='fullName'>Full Name:</label>
                </div>
                <div class='form-group'>
                    <label for='comments'>Comments/Feedback:</label>
                    <textarea id='comments' name='comments' placeholder='Type your feedback here...'></textarea>
                </div>
                <div class='form-group checkbox-group'>
                    <label for='agree'>I agree to the terms and conditions.</label>
                </div>
                <button style='padding: 10px 15px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;'>
                    Test Button Rendering
                </button>
            </form>
        </div>
    </body>
    </html>";
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("form.pdf");
}
public void CreatePdfWithForm()
{
    var html = @"
    <!DOCTYPE html>
    <html>
    <head>
        <title>PDF Test Form</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                margin: 20px;
                background-color: #f4f4f4;
            }
            .form-container {
                width: 400px;
                padding: 20px;
                border: 1px solid #ccc;
                border-radius: 8px;
                background-color: #fff;
                box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
            }
            .form-group {
                margin-bottom: 15px;
            }
            label {
                display: block; /* Make label take up full width */
                margin-bottom: 5px;
                font-weight: bold;
                color: #333;
            }
            input[type='text'], textarea {
                width: 100%;
                padding: 10px;
                border: 1px solid #ddd;
                border-radius: 4px;
                box-sizing: border-box; /* Include padding and border in the element's total width and height */
            }
            textarea {
                height: 100px;
                resize: vertical;
            }
            .checkbox-group {
                display: flex;
                align-items: center;
            }
            .checkbox-group label {
                display: inline;
                font-weight: normal;
                margin-left: 8px;
            }
        </style>
    </head>
    <body>
        <div class='form-container'>
            <h2>Document Generation Test Form</h2>
            <form>
                <div class='form-group'>
                    <label for='fullName'>Full Name:</label>
                </div>
                <div class='form-group'>
                    <label for='comments'>Comments/Feedback:</label>
                    <textarea id='comments' name='comments' placeholder='Type your feedback here...'></textarea>
                </div>
                <div class='form-group checkbox-group'>
                    <label for='agree'>I agree to the terms and conditions.</label>
                </div>
                <button style='padding: 10px 15px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;'>
                    Test Button Rendering
                </button>
            </form>
        </div>
    </body>
    </html>";
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("form.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Esto crea un PDF interactivo con campos de formulario que los usuarios pueden completar, perfecto para aplicaciones que requieren la entrada de usuarios. El código también muestra dónde se podría usar un enlace HTML dentro del contenido generado.

PDF de salida con formulario editable

Cómo Crear Archivos PDF en .NET Core: Figura 5 - PDF con formulario para completar

Mejores prácticas y gestión de errores

Al generar archivos PDF en producción, implementa un manejo de errores adecuado:

try
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    // Log error and handle appropriately
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
try
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    // Log error and handle appropriately
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Siempre valida los datos de entrada y maneja las excepciones de manera adecuada para asegurar una generación de PDF confiable en tus aplicaciones.

Conclusión

IronPDF transforma la tarea compleja de crear un archivo PDF en .NET Core en un proceso simple y manejable. Desde la creación básica de documentos hasta características avanzadas como formularios, imágenes y gestión de páginas, esta biblioteca .NET proporciona herramientas completas para generar documentos PDF programáticamente. Usando un enfoque común de convertir HTML, puedes cargar datos rápidamente y descargar los archivos terminados.

Ya sea que estés construyendo informes simples o documentos complejos de varias páginas, la API intuitiva de IronPDF y su potente motor de renderizado lo convierten en la elección ideal para desarrolladores .NET. Comienza a crear archivos PDF profesionales en tus aplicaciones ASP.NET Core hoy mismo con la prueba gratuita de IronPDF.

¿Listo para mejorar tu aplicación con capacidades de generación de PDF? Empieza con IronPDF y experimenta lo fácil que puede ser crear PDFs.

Preguntas Frecuentes

¿Qué es IronPDF?

IronPDF es una poderosa biblioteca de .NET Core diseñada para simplificar la creación y manipulación de documentos PDF en aplicaciones ASP.NET.

¿Cómo puedo crear documentos PDF en .NET Core?

Puedes crear documentos PDF en .NET Core usando la biblioteca IronPDF, que ofrece métodos sencillos para generar PDFs programáticamente dentro de tus aplicaciones.

¿Qué tipos de documentos puedo crear usando IronPDF?

Con IronPDF, puedes crear una amplia gama de tipos de documentos, incluidos facturas, informes y cualquier otro sistema basado en documentos que requiera generación de PDF.

¿Es IronPDF adecuado para aplicaciones ASP.NET?

Sí, IronPDF es particularmente adecuado para aplicaciones ASP.NET, proporcionando una integración sin problemas y capacidades eficientes de creación de PDF.

¿Dónde puedo encontrar la documentación oficial de IronPDF?

La documentación oficial de IronPDF está disponible en el sitio web de Iron Software, ofreciendo detalles técnicos completos y guías para usar la biblioteca.

¿Cuáles son los beneficios de usar IronPDF para la creación de PDF?

Los beneficios de usar IronPDF incluyen facilidad de uso, funcionalidad robusta y la capacidad de generar PDFs de alta calidad programáticamente dentro de aplicaciones .NET Core.

¿Puede IronPDF manejar tareas complejas de generación de PDF?

Sí, IronPDF es capaz de manejar tareas complejas de generación de PDF, lo que lo hace ideal para aplicaciones que requieren manipulación y creación avanzada de PDF.

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