Extensión IronPDF Razor

Chaknith Bin
Chaknith Bin
25 de enero, 2023
Actualizado 20 de octubre, 2024
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF es una biblioteca PDF para .NET y .NET Core. Se trata principalmente de una biblioteca PDF gratuita, ya que IronPDF es una biblioteca PDF comercial de C#. Es gratuito para el desarrollo, pero debe adquirirse una licencia para su implantación comercial. Este modelo de licencia más claro no requiere que los desarrolladores aprendan los entresijos de los modelos de licencia GNU / AGPL y, en su lugar, pueden centrarse en sus proyectos.

IronPDF permite a los desarrolladores de .NET y .NET Core generar, combinar, dividir, editar y extraer contenido PDF fácilmente en C#, F# y VB.NET para .NET Core y .NET Framework, así como crear archivos PDF a partir de HTML, ASPX, CSS, JS y archivos de imagen.

IronPDF dispone de una completa funcionalidad de edición y generación de PDF mediante HTML a PDF. ¿Cómo funciona? Pues bien, la mayor parte del diseño y la maquetación del documento pueden utilizar activos HTML y HTML5 ya existentes.

Puede descargar el proyecto de ejemplo de Razor a PDF para C# desde la descarga de IronPDF Razor View to PDF.

Funciones de IronPDF para aplicaciones .NET y .NET Core

Algunas de las fantásticas funciones de la biblioteca PDF de IronPDF son:

  • La biblioteca PDF de .NET puede generar documentos PDF a partir de HTML, imágenes y archivos ASPX
  • Lectura de texto PDF en aplicaciones .NET y .NET Core
  • Extraer datos e imágenes de PDF
  • Fusión de documentos PDF
  • Dividir PDF
  • Manipulación de PDF

Ventajas de IronPDF

  • La biblioteca PDF IronPDF es fácil de instalar
  • La biblioteca IronPDF .NET tiene opciones de licencia rápidas y sencillas
  • IronPDF supera a la mayoría de las bibliotecas PDF .NET y a la mayoría de las bibliotecas PDF .NET Core

IronPDF es la solución PDF que has estado buscando.


Instalación de la biblioteca PDF IronPDF

Instalar la biblioteca IronPDF para PDF en .NET o .NET Core es bastante sencillo. Puedes instalarlo de las siguientes maneras:

Utilice el gestor de paquetes NuGet y escriba lo siguiente en el símbolo del sistema:

Install-Package IronPdf

Utilice el gestor de paquetes NuGet en Visual Studio abriendo la opción "Seleccionar Gestionar paquetes NuGet" del menú del proyecto y buscando IronPDF, como se muestra a continuación:

Figura 1 - IronPDF NuGet Package
**Figura 1** - *Paquete NuGet de IronPDF* Esto instala la extensión PDF. Con IronPDF puede utilizar ASP.NET MVC para devolver un archivo PDF. A continuación se ofrecen algunos ejemplos de código: Un ejemplo de un método que podría ser servido por su controlador como se muestra a continuación. ```cs public FileResult Generate_PDF_FromHTML_Or_MVC(long id) { using var objPDF = Renderer.RenderHtmlAsPdf(""); //Create a PDF Document var objLength = objPDF.BinaryData.Length; //return a PDF document from a view Response.AppendHeader("Content-Length", objLength.ToString()); Response.AppendHeader("Content-Disposition", "inline; filename=PDFDocument_" + id + ".pdf"); return File(objPDF.BinaryData, "application/pdf;"); } ``` A continuación se muestra un ejemplo de cómo servir un PDF existente en ASP.NET. ```cs Response.Clear(); Response.ContentType = "application/pdf"; Response.AddHeader("Content-Disposition", "attachment;filename=\"FileName.pdf\""); Response.BinaryWrite(System.IO.File.ReadAllBytes("PdfName.pdf")); Response.Flush(); Response.End(); ```
Hagamos un ejemplo rápido en ASP.NET usando MVC y .NET Core. Abra Visual Studio y cree una nueva aplicación web ASP.NET Core. ## 1. Crear un nuevo proyecto web ASP.NET Core en Visual Studio [//]: # 'envoltura de imagen para hacer el margen más grande - formateo' Crear un proyecto ASP.NET Core
## 2. Crear modelo MVC - Crea una nueva carpeta y llámala "Modelos". [//]: # 'envoltura de imagen para hacer el margen más grande - formateo'
Añadir Carpeta
- Haga clic con el botón derecho en la carpeta Modelo y añada una nueva clase [//]: # 'envoltura de imagen para hacer el margen más grande - formateo'
Añadir clase
- Cambia el nombre de la clase a "ExampleModel". Añade contenido al Modelo, por ejemplo: ```cs namespace WebApplication4.Models { public class ExampleModel { public string Name { get; set; } public string Surname { get; set; } public int Age { get; set; } } } ```
## 3. Añadir controlador MVC - Cree una nueva carpeta y nómbrela "Controladores". - Haga clic con el botón derecho en la carpeta Controladores y añada un nuevo "Controlador MCV - vacío" [//]: # 'envoltura de imagen para hacer el margen más grande - formateo'
Añadir clase de controlador
Añade contenido al controlador: ```cs namespace WebApplication4.Models { public class HomeController : Controller { [HttpPost] public IActionResult ExampleView(ExampleModel model) { var html = this.RenderViewAsync("_Example", model); var ironPdfRender = new IronPdf.ChromePdfRenderer(); using var pdfDoc = ironPdfRender.RenderHtmlAsPdf(html.Result); return File(pdfDoc.Stream.ToArray(), "application/pdf"); } } } ```
## 4. Modificar Index.cshtml Dentro de la carpeta Pages, modifique el archivo Index.cshtml para: ```html @page @model WebApplication4.Models.ExampleModel @{ ViewBag.Title = "Example Index View"; }

Index

@using (Html.BeginForm()) {
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.Surname, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Surname, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Surname, "", new { @class = "text-danger" })
@Html.LabelFor(model => model.Age, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model => model.Age, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Age, "", new { @class = "text-danger" })
}
```
## 5. Añadir página Razor Dentro de la carpeta Shared de Pages, añade una página Razor y nómbrala "_Example.cshtml" [//]: # 'envoltura de imagen para hacer el margen más grande - formateo'
Agregar página Razor
Añada el siguiente código a _Example.cshtml: ```html @Html.Partial("../Index.cshtml") ```
## 6. Añadir una nueva clase - Añadir un nuevo nombre de clase "ControllerPDF" Esta clase tomará el HTML de _Example.cshtml con la envoltura de _Layout.cshtml y lo devolverá a HomeController.cs - Añade el código siguiente: ```cs namespace WebApplication4 { public static class ControllerPDF { public static async Task RenderViewAsync(this Controller controller, string viewName, TModel model, bool partial = false) { if (string.IsNullOrEmpty(viewName)) { viewName = controller.ControllerContext.ActionDescriptor.ActionName; } controller.ViewData.Model = model; using (var writer = new StringWriter()) { IViewEngine viewEngine = controller.HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine; ViewEngineResult viewResult = viewEngine.FindView(controller.ControllerContext, viewName, !partial); if (viewResult.Success == false) { return $"A view with the name {viewName} could not be found"; } ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer, new HtmlHelperOptions()); await viewResult.View.RenderAsync(viewContext); return writer.GetStringBuilder().ToString(); } } } } ```
## 7. Modificar Program.cs Añada el siguiente código para asegurarse de que cuando se pulse el botón de guardar, la página navegará a la URL correcta. ```cs app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); ```
## 8. Demostración - Desde el Index.cshtml, el método ExampleView se activará cuando se pulse el botón guardar con asp-action="ExampleView". - El método RenderViewAsync de la clase ControllerPDF será llamado desde ExampleView. Este método devolverá el HTML generado de _Example.cshtml envuelto con _layout.cshtml. - Generar un documento PDF pasando el HTML devuelto por RenderViewAsync al método RenderHtmlAsPdf de IronPDF. [//]: # 'envoltura de imagen para hacer el margen más grande - formateo' Crear un proyecto ASP.NET Core
Chaknith Bin
Ingeniero de software
Chaknith trabaja en IronXL e IronBarcode. Tiene una gran experiencia en C# y .NET, ayudando a mejorar el software y a apoyar a los clientes. Sus conocimientos de las interacciones con los usuarios contribuyen a mejorar los productos, la documentación y la experiencia general.