Cómo convertir vista a PDF en ASP.NET Core C#

Cómo convertir vistas a PDF en ASP.NET MVC con C

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

IronPDF te permite convertir Vistas ASP.NET MVC a documentos PDF usando el método ChromePdfRenderer.RenderView() con solo unas pocas líneas de código. El paquete IronPdf.Extensions.Mvc.Framework proporciona una integración perfecta con proyectos ASP.NET MVC para renderizar vistas CSHTML como PDFs.

Una Vista es un componente en el marco de ASP.NET utilizado para generar marcado HTML en aplicaciones web. Forma parte del patrón Modelo-Vista-Controlador (MVC), utilizado habitualmente en aplicaciones ASP.NET MVC y ASP.NET Core MVC. Las Vistas son responsables de presentar datos al usuario renderizando contenido HTML dinámicamente. La potencia de Chrome PDF Rendering Engine de IronPDF garantiza que sus vistas se rendericen con una precisión de píxel perfecta, manteniendo todos los estilos, diseños y elementos interactivos.

ASP.NET Web Application (.NET Framework) MVC es un marco de aplicación web proporcionado por Microsoft. Sigue un patrón arquitectónico estructurado conocido como Modelo-Vista-Controlador (MVC) para organizar y agilizar el desarrollo de aplicaciones web.

  • Modelo: Gestiona datos, lógica de negocio e integridad de datos.
  • Vista: Presenta la interfaz de usuario y renderiza información.
  • Controlador: gestiona las entradas de los usuarios, procesa las solicitudes y organiza las interacciones entre el modelo y la vista.

IronPDF simplifica el proceso de creación de archivos PDF a partir de Vistas dentro de un proyecto ASP.NET MVC. Esto hace que la generación de PDF sea fácil y directa en ASP.NET MVC. Ya sea que esté generando facturas, informes o cualquier documento desde sus vistas web, IronPDF proporciona las herramientas necesarias para una salida PDF profesional. Para obtener una guía de instalación completa, visite la página Installation Overview.

En España, muchos sistemas empresariales de facturación electrónica —incluyendo portales de cumplimiento VeriFactu, aplicaciones de envío a FACe y sistemas de gestión documental para la AEAT— aún se ejecutan sobre ASP.NET MVC Framework (.NET 4.x). IronPDF permite a estos sistemas heredados generar PDFs de facturas conformes con Facturae directamente desde sus Vistas existentes, facilitando la transición hacia la obligatoriedad de la factura electrónica impuesta por la Ley Crea y Crece sin necesidad de reescribir completamente la aplicación.

Inicio rápido: Convierta la vista ASP.NET MVC a PDF sin esfuerzo

Aprende cómo convertir rápidamente tus Vistas de ASP.NET MVC en documentos PDF usando IronPDF. Con solo unas pocas líneas de código, puedes renderizar tus vistas CSHTML a PDFs de alta calidad, mejorando la funcionalidad de tu aplicación. IronPDF simplifica el proceso, haciéndolo accesible para desarrolladores de todos los niveles. Comienza integrando IronPDF en tus proyectos ASP.NET Core para generar PDFs fácilmente desde tus Vistas.

  1. Instala IronPDF con el Administrador de Paquetes NuGet

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

    // Install-Package IronPdf.Extensions.Razor
    var pdf = new IronPdf.ChromePdfRenderer.RenderRazorToPdf(this.ControllerContext);
  3. Despliegue para probar en su entorno real

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

    arrow pointer

¿Qué paquete de extensión necesito?

¿Por qué IronPDF requiere un paquete de extensión?

El paquete IronPdf.Extensions.Mvc.Framework es una extensión del paquete principal IronPDF. Se requieren tanto los paquetes IronPdf.Extensions.Mvc.Framework como IronPdf para renderizar Vistas en documentos PDF en ASP.NET MVC. Esta separación permite optimizar la funcionalidad específica del marco MVC al tiempo que se mantienen las capacidades básicas de renderizado de PDF.

¿Cómo instalar el paquete de extensión?

Instalación del paquete IronPdf.Extensions.Mvc.Framework
Biblioteca C# NuGet para PDF

Instalar con NuGet

Instalación del paquete IronPdf.Extensions.Mvc.Framework

¿Cómo renderizar vistas en PDF?

¿Qué tipo de proyecto necesito?

Para convertir vistas en archivos PDF, se necesita un proyecto MVC de aplicación web ASP.NET (.NET Framework). IronPDF es compatible con varias versiones de MVC y proporciona amplias Opciones de renderizado para personalizar la salida de PDF según sus requisitos.

¿Cómo añado una clase modelo?

¿Dónde debo crear el modelo?

  • Navega hasta la carpeta "Models"
  • Crea un nuevo archivo de clase C# llamado Person. Esta clase sirve como un modelo para representar datos individuales. Utilice el siguiente código:
:path=/static-assets/pdf/content-code-examples/how-to/cshtml-to-pdf-mvc-framework-model.cs
namespace ViewToPdfMVCSample.Models
{
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
    }
}
Namespace ViewToPdfMVCSample.Models
	Public Class Person
		Public Property Id() As Integer
		Public Property Name() As String
		Public Property Title() As String
		Public Property Description() As String
	End Class
End Namespace
$vbLabelText   $csharpLabel

¿Cómo edito el controlador?

¿Qué código debo añadir al controlador?

Navega a la carpeta "Controllers" y abre el archivo HomeController. Agrega la acción Persons usando el siguiente código:

En el código proporcionado, primero se crea la clase ChromePdfRenderer. Para utilizar el método RenderView, proporciónale un HttpContext, especifica la ruta al archivo "Persons.cshtml" y proporciona un List<Person> que contenga los datos necesarios. Al renderizar la Vista, puedes utilizar RenderingOptions para personalizar márgenes, agregar textos personalizados y encabezados y pies de página HTML, y aplicar números de página al documento PDF resultante.

El documento PDF puede ser descargado a la máquina usando el siguiente código: File(pdf.BinaryData, "application/pdf", "viewToPdfMVC.pdf").

using IronPdf;
using System.Collections.Generic;
using System.Web.Mvc;
using ViewToPdfMVCSample.Models;

namespace ViewToPdfMVCSample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        // GET: Person
        public ActionResult Persons()
        {
            // Create a list of Person objects
            var persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            if (HttpContext.Request.HttpMethod == "POST")
            {
                // Define the path to the View file
                var viewPath = "~/Views/Home/Persons.cshtml";

                // Instantiate the ChromePdfRenderer
                ChromePdfRenderer renderer = new ChromePdfRenderer();

                // Render the view to a PDF document
                PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);

                // Set headers to view the PDF in-browser
                Response.Headers.Add("Content-Disposition", "inline");

                // Return the generated PDF file
                return File(pdf.BinaryData, "application/pdf");
            }
            return View(persons);
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";
            return View();
        }
    }
}
using IronPdf;
using System.Collections.Generic;
using System.Web.Mvc;
using ViewToPdfMVCSample.Models;

namespace ViewToPdfMVCSample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        // GET: Person
        public ActionResult Persons()
        {
            // Create a list of Person objects
            var persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            if (HttpContext.Request.HttpMethod == "POST")
            {
                // Define the path to the View file
                var viewPath = "~/Views/Home/Persons.cshtml";

                // Instantiate the ChromePdfRenderer
                ChromePdfRenderer renderer = new ChromePdfRenderer();

                // Render the view to a PDF document
                PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);

                // Set headers to view the PDF in-browser
                Response.Headers.Add("Content-Disposition", "inline");

                // Return the generated PDF file
                return File(pdf.BinaryData, "application/pdf");
            }
            return View(persons);
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";
            return View();
        }
    }
}
Imports IronPdf
Imports System.Collections.Generic
Imports System.Web.Mvc
Imports ViewToPdfMVCSample.Models

Namespace ViewToPdfMVCSample.Controllers
	Public Class HomeController
		Inherits Controller

		Public Function Index() As ActionResult
			Return View()
		End Function

		' GET: Person
		Public Function Persons() As ActionResult
			' Create a list of Person objects
'INSTANT VB NOTE: The local variable persons was renamed since Visual Basic will not allow local variables with the same name as their enclosing function or property:
			Dim persons_Conflict = New List(Of Person) From {
				New Person With {
					.Name = "Alice",
					.Title = "Mrs.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Bob",
					.Title = "Mr.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Charlie",
					.Title = "Mr.",
					.Description = "Software Engineer"
				}
			}

			If HttpContext.Request.HttpMethod = "POST" Then
				' Define the path to the View file
				Dim viewPath = "~/Views/Home/Persons.cshtml"

				' Instantiate the ChromePdfRenderer
				Dim renderer As New ChromePdfRenderer()

				' Render the view to a PDF document
				Dim pdf As PdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons_Conflict)

				' Set headers to view the PDF in-browser
				Response.Headers.Add("Content-Disposition", "inline")

				' Return the generated PDF file
				Return File(pdf.BinaryData, "application/pdf")
			End If
			Return View(persons_Conflict)
		End Function

		Public Function About() As ActionResult
			ViewBag.Message = "Your application description page."
			Return View()
		End Function

		Public Function Contact() As ActionResult
			ViewBag.Message = "Your contact page."
			Return View()
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

¿Cómo puedo personalizar las opciones de renderizado de PDF?

Para escenarios más avanzados, puede personalizar la salida PDF utilizando varias opciones de renderizado. He aquí un ejemplo con márgenes personalizados, tamaño de papel y ajustes adicionales:

// Advanced rendering with custom options
public ActionResult PersonsAdvanced()
{
    var persons = GetPersonsList();

    if (HttpContext.Request.HttpMethod == "POST")
    {
        var viewPath = "~/Views/Home/Persons.cshtml";

        // Configure the renderer with custom options
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Set custom rendering options
        renderer.RenderingOptions.MarginTop = 40;
        renderer.RenderingOptions.MarginBottom = 40;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        // Set custom paper size
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;

        // Add header and footer
        renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
        renderer.RenderingOptions.TextHeader.CenterText = "{pdf-title}";
        renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
        renderer.RenderingOptions.TextHeader.FontSize = 12;

        renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
        renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial;
        renderer.RenderingOptions.TextFooter.FontSize = 10;
        renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";

        // Enable JavaScript execution if needed
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.RenderDelay = 500; // Wait for JS to execute

        // Render the view to PDF
        PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);

        // Optional: Apply compression to reduce file size
        pdf.CompressImages(60);

        Response.Headers.Add("Content-Disposition", "inline");
        return File(pdf.BinaryData, "application/pdf");
    }

    return View("Persons", persons);
}
// Advanced rendering with custom options
public ActionResult PersonsAdvanced()
{
    var persons = GetPersonsList();

    if (HttpContext.Request.HttpMethod == "POST")
    {
        var viewPath = "~/Views/Home/Persons.cshtml";

        // Configure the renderer with custom options
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Set custom rendering options
        renderer.RenderingOptions.MarginTop = 40;
        renderer.RenderingOptions.MarginBottom = 40;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        // Set custom paper size
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;

        // Add header and footer
        renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
        renderer.RenderingOptions.TextHeader.CenterText = "{pdf-title}";
        renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
        renderer.RenderingOptions.TextHeader.FontSize = 12;

        renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
        renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial;
        renderer.RenderingOptions.TextFooter.FontSize = 10;
        renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";

        // Enable JavaScript execution if needed
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.RenderDelay = 500; // Wait for JS to execute

        // Render the view to PDF
        PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);

        // Optional: Apply compression to reduce file size
        pdf.CompressImages(60);

        Response.Headers.Add("Content-Disposition", "inline");
        return File(pdf.BinaryData, "application/pdf");
    }

    return View("Persons", persons);
}
Imports System.Web.Mvc
Imports IronPdf

' Advanced rendering with custom options
Public Function PersonsAdvanced() As ActionResult
    Dim persons = GetPersonsList()

    If HttpContext.Request.HttpMethod = "POST" Then
        Dim viewPath = "~/Views/Home/Persons.cshtml"

        ' Configure the renderer with custom options
        Dim renderer As New ChromePdfRenderer()

        ' Set custom rendering options
        renderer.RenderingOptions.MarginTop = 40
        renderer.RenderingOptions.MarginBottom = 40
        renderer.RenderingOptions.MarginLeft = 20
        renderer.RenderingOptions.MarginRight = 20

        ' Set custom paper size
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
        renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait

        ' Add header and footer
        renderer.RenderingOptions.TextHeader.DrawDividerLine = True
        renderer.RenderingOptions.TextHeader.CenterText = "{pdf-title}"
        renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica
        renderer.RenderingOptions.TextHeader.FontSize = 12

        renderer.RenderingOptions.TextFooter.DrawDividerLine = True
        renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial
        renderer.RenderingOptions.TextFooter.FontSize = 10
        renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"

        ' Enable JavaScript execution if needed
        renderer.RenderingOptions.EnableJavaScript = True
        renderer.RenderingOptions.RenderDelay = 500 ' Wait for JS to execute

        ' Render the view to PDF
        Dim pdf As PdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons)

        ' Optional: Apply compression to reduce file size
        pdf.CompressImages(60)

        Response.Headers.Add("Content-Disposition", "inline")
        Return File(pdf.BinaryData, "application/pdf")
    End If

    Return View("Persons", persons)
End Function
$vbLabelText   $csharpLabel

Para obtener más información sobre la optimización de márgenes, visite nuestra guía sobre Configuración de márgenes personalizados. Si necesita trabajar con dimensiones de papel específicas, consulte nuestra documentación Custom Paper Size.

¿Qué puedo hacer con el PDF generado?

Una vez que obtengas el objeto PdfDocument a través del método RenderView, puedes hacer varias mejoras y ajustes en él. Puede convertir el PDF a los formatos PDFA o PDFUA, aplicar firmas digitales al PDF creado, o fusionar y dividir documentos PDF según sea necesario. La biblioteca permite rotar páginas, insertar anotaciones o marcadores, y aplicar marcas de agua distintivas a los archivos PDF.

Para optimizar el tamaño de los archivos, considere el uso de técnicas de Compresión de PDF. Cuando se trate de contenido con mucho JavaScript, nuestra Guía de renderización de JavaScript ofrece información detallada sobre cómo gestionar los retrasos de renderización personalizados. Para conocer las distintas opciones de exportación, consulte nuestra completa guía sobre Guardar y exportar documentos PDF.

¿Cómo añado una vista?

¿Qué pasos debo seguir para crear la vista?

  • Haz clic derecho en la acción Person añadida recientemente y selecciona "Add View".

El menú contextual de Visual Studio muestra la opción 'Agregar vista...' al hacer clic con el botón derecho en el método de acción Persons()

  • Elige "Vista MVC 5" para el nuevo elemento Scaffold.

Cuadro de diálogo Agregar nuevo elemento andamiado de Visual Studio con plantilla de vista MVC 5 seleccionada

  • Selecciona el template "List" y la clase modelo Person.

Cuadro de diálogo Agregar vista en Visual Studio que muestra la configuración de la vista Personas con la plantilla de lista y la clase de modelo Persona

Esto crea un archivo .cshtml llamado "Personas"

¿Cómo añadir un botón de impresión a la vista?

  • Navega a la carpeta "Views" -> carpeta "Home" -> archivo "Persons.cshtml".

Para agregar un botón que invoque la acción Persons, usa el código a continuación:

@using (Html.BeginForm("Persons", "Home", FormMethod.Post))
{
    <input type="submit" value="Print Person" />
}
@using (Html.BeginForm("Persons", "Home", FormMethod.Post))
{
    <input type="submit" value="Print Person" />
}
HTML

¿Cómo añado una sección a la barra de navegación superior?

¿Dónde debo actualizar la navegación?

  • En la carpeta "Views", navega a la carpeta "Shared" -> archivo "_Layout.cshtml". Coloca el elemento de navegación "Person" después de "Home".

Asegúrate de que los valores para el método ActionLink coincidan exactamente con el nombre de nuestro archivo, que es "Persons".

<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark">
    <div class="container">
        @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
        <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" title="Toggle navigation" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse d-sm-inline-flex justify-content-between">
            <ul class="navbar-nav flex-grow-1">
                <li>@Html.ActionLink("Home", "Index", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("Persons", "Persons", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("About", "About", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("Contact", "Contact", "Home", new { area = "" }, new { @class = "nav-link" })</li>
            </ul>
        </div>
    </div>
</nav>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark">
    <div class="container">
        @Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
        <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" title="Toggle navigation" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse d-sm-inline-flex justify-content-between">
            <ul class="navbar-nav flex-grow-1">
                <li>@Html.ActionLink("Home", "Index", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("Persons", "Persons", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("About", "About", "Home", new { area = "" }, new { @class = "nav-link" })</li>
                <li>@Html.ActionLink("Contact", "Contact", "Home", new { area = "" }, new { @class = "nav-link" })</li>
            </ul>
        </div>
    </div>
</nav>
HTML

¿Cómo ejecutar y probar el proyecto?

Ejecutar el proyecto

Aquí se muestra cómo ejecutar el proyecto y generar un documento PDF.

Visual Studio showing ASP.NET MVC HomeController with Persons action method and PDF generation code

PDF de salida

¿Dónde puedo descargar el proyecto completo?

¿Qué incluye el proyecto de muestra?

Puede descargar el código completo de esta guía. Se trata de un archivo comprimido que puede abrirse en Visual Studio como un proyecto ASP.NET Web Application (.NET Framework) MVC. La muestra incluye todas las configuraciones, clases de modelos, controladores y vistas necesarios para empezar rápidamente con la generación de PDF en sus aplicaciones MVC.

Generación de PDFs desde ASP.NET MVC Framework en el contexto de la facturación electrónica española

Los sistemas empresariales españoles con arquitecturas ASP.NET MVC Framework (.NET 4.x) representan una parte significativa de las instalaciones activas que deben adaptarse a los requisitos de VeriFactu, FACe y la Ley Crea y Crece. IronPDF facilita esta adaptación sin reescribir la aplicación.

VeriFactu y FACe en aplicaciones MVC Framework heredadas

Los portales de facturación electrónica que generan documentos Facturae para su envío a FACe (el punto de acceso B2G del Estado) necesitan adjuntar un PDF de cortesía al XML estructurado. Con IronPDF y el método RenderView, una aplicación ASP.NET MVC Framework existente puede generar este PDF directamente desde la Vista de factura, incluyendo todos los campos obligatorios exigidos por la AEAT: NIF del emisor y receptor, número de serie, fecha de expedición, base imponible y cuota de IVA. Esto permite cumplir con el formato Facturae 3.2.x sin modificar la capa de datos ni el modelo de negocio.

Modernización incremental hacia VeriFactu sin migrar a .NET Core

Muchas empresas españolas sujetas a VeriFactu a partir de 2025 operan sobre aplicaciones MVC Framework en producción que no pueden migrarse a .NET Core en el corto plazo. IronPDF permite una estrategia de modernización incremental: el sistema existente continúa operando en MVC Framework y genera los PDFs de trazabilidad VeriFactu mediante RenderView, mientras se planifica la migración completa. El campo de firma PAdES requerido por eIDAS puede aplicarse al objeto PdfDocument resultante antes de su archivado, cumpliendo así con los requisitos de conservación de 4 años establecidos por la AEAT para documentos tributarios.

Para más información sobre la firma digital de PDFs generados desde vistas MVC, consulte la documentación de Firmas Digitales en IronPDF.

Descargar el proyecto de muestra MVC para conversión de PDF

Preguntas Frecuentes

¿Cómo puedo convertir vistas CSHTML a PDF en ASP.NET MVC?

Puede convertir vistas CSHTML a PDF en ASP.NET MVC utilizando el método ChromePdfRenderer.RenderView() de IronPDF. Sólo tiene que instalar el paquete IronPdf.Extensions.Mvc.Framework y utilizar el método de renderizado para transformar sus vistas en documentos PDF de alta calidad con sólo unas pocas líneas de código.

¿Cuál es el código mínimo necesario para convertir una vista en PDF?

El código mínimo para renderizar una vista como PDF es: var pdf = new IronPdf.ChromePdfRenderer.RenderRazorToPdf(this.ControllerContext); Esta única línea de código utilizando IronPDF convertirá su vista actual en un documento PDF.

¿Qué paquete de extensión necesito para generar archivos PDF con ASP.NET MVC?

Para las aplicaciones ASP.NET MVC, necesita el paquete IronPdf.Extensions.Mvc.Framework. Esta extensión proporciona una integración perfecta con los proyectos ASP.NET MVC y funciona junto con el paquete principal IronPDF para permitir la funcionalidad de conversión de vista a PDF.

¿Qué motor de renderizado se utiliza para convertir vistas a PDF?

IronPDF utiliza el motor de renderizado de PDF de Chrome, que garantiza una precisión de píxeles perfecta al convertir vistas a PDF. Este motor mantiene todos los estilos, diseños y elementos interactivos de sus vistas CSHTML originales en la salida PDF final.

¿Puedo generar facturas e informes a partir de vistas MVC?

Sí, IronPDF es perfecta para generar facturas, informes y cualquier otro documento desde sus vistas MVC. La biblioteca ofrece funciones profesionales de salida de PDF, por lo que es ideal para crear documentos empresariales directamente desde las vistas de su aplicación web.

¿Cuáles son los pasos básicos para implementar la conversión de vista a PDF?

La implementación básica implica 5 pasos: 1) Descargar e instalar la librería IronPDF, 2) Añadir una clase modelo para sus datos, 3) Crear una acción de controlador utilizando el método RenderView, 4) Añadir una Vista utilizando MVC 5 View Scaffolding, y 5) Ejecutar la conversión utilizando los métodos de renderizado de IronPDF.

¿Mantiene el PDF el estilo original?

Sí, el motor de renderizado de Chrome de IronPDF garantiza que todos los estilos CSS, diseños y elementos interactivos de sus vistas CSHTML se conserven en la salida PDF. Esto proporciona una precisión de píxeles perfecta y mantiene la integridad visual de sus vistas web originales.

¿Puedo usar IronPDF en ASP.NET MVC Framework para generar PDFs conformes con VeriFactu?

Sí. IronPDF con el paquete IronPdf.Extensions.Mvc.Framework permite generar el PDF de representación gráfica de facturas VeriFactu directamente desde Vistas MVC Framework existentes usando el método RenderView. El objeto PdfDocument resultante puede firmarse con certificado PAdES (FNMT) antes de su archivado, cumpliendo los requisitos de trazabilidad de la AEAT.

¿Cómo adapto un sistema ASP.NET MVC Framework heredado para enviar facturas a FACe?

FACe requiere un XML Facturae con un PDF de cortesía adjunto. Con IronPDF en una aplicación MVC Framework, puede usar RenderView para generar el PDF de cortesía a partir de la Vista de factura existente, incluyendo los campos obligatorios de Facturae (NIF, CIF, importes, tipos IVA). Esta estrategia permite cumplir con FACe sin migrar la aplicación a ASP.NET Core.

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 19,014,616 | Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.