Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Los informes son esenciales para presentar los datos en un formato estructurado y visualmente atractivo. Ya se trate de datos de ventas, análisis o resúmenes financieros, la generación de informes es un requisito habitual en las aplicaciones web. Microsoft proporciona servicios de informes rdlc que pueden integrarse en aplicaciones web mediante el control Visor de informes de formularios web. Sin embargo, el proceso puede ser a menudo complejo y lento.
Aquí es donde entra IronPDF. IronPDF es una biblioteca versátil que simplifica la generación de informes PDF en ASP.NET y otros marcos web, ofreciendo potentes funciones y facilidad de uso. En este artículo, exploraremos cómo crear un informe en ASP.NET utilizando IronPDF.
IronPDF es una biblioteca versátil que simplifica la generación de documentos PDF en ASP.NET y otros marcos web. Su rico conjunto de funciones y sus intuitivas API lo convierten en la opción ideal para los desarrolladores que buscan generar informes dinámicos, facturas, recibos y mucho más directamente desde sus aplicaciones web. Con IronPDF, los desarrolladores pueden convertir sin esfuerzo HTML, CSS e incluso vistas Razor en documentos PDF de alta calidad, lo que permite una integración perfecta de la funcionalidad de generación de informes en sus proyectos ASP.NET.
Antes de empezar, asegúrese de que dispone de los siguientes requisitos previos:
Elija la plantilla de proyecto deseada (por ejemplo, MVC o Razor Pages).
Configure los ajustes del proyecto, como el nombre, la ubicación y la versión del framework.
A continuación, vamos a instalar IronPDF y su paquete de extensión MVC utilizando el gestor de paquetes NuGet:
Busque "IronPDF" y "IronPDF.Extensions.Mvc.Core".
Ahora, vamos a sumergirnos en los pasos para crear un informe PDF utilizando IronPDF en nuestro proyecto ASP.NET. Antes de convertir una vista en un informe, necesitamos un Modelo, una Vista y un Controlador para crear una fuente de datos para crear y descargar un nuevo informe en formato PDF.
En primer lugar, cree una clase modelo (SalesModel.cs) para representar los datos de ventas. Esta clase SalesModel de ejemplo incluirá propiedades como Date, ProductName, Quantity, UnitPrice y TotalAmount. Esto es útil cuando se recupera información de una fuente de datos como Microsoft SQL Server o MySQL Server.
namespace ReportGenerator.Models
{
public class SalesModel
{
public DateTime Date { get; set; }
public string ProductName { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public decimal TotalAmount => Quantity * UnitPrice;
}
}
namespace ReportGenerator.Models
{
public class SalesModel
{
public DateTime Date { get; set; }
public string ProductName { get; set; }
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public decimal TotalAmount => Quantity * UnitPrice;
}
}
Namespace ReportGenerator.Models
Public Class SalesModel
Public Property [Date]() As DateTime
Public Property ProductName() As String
Public Property Quantity() As Integer
Public Property UnitPrice() As Decimal
Public ReadOnly Property TotalAmount() As Decimal
Get
Return Quantity * UnitPrice
End Get
End Property
End Class
End Namespace
A continuación, cree una vista Razor (Ventas.cshtml) para mostrar los datos de ventas en formato tabular y proporcionar un botón para generar el informe en PDF.
<!-- Index.cshtml -->
@model List<SalesModel>
<!DOCTYPE html>
<html>
<head>
<title>Sales Report</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h2>Sales Report</h2>
<table>
<tr>
<th>Date</th>
<th>Product Name</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total Amount</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Date.ToShortDateString()</td>
<td>@item.ProductName</td>
<td>@item.Quantity</td>
<td>@item.UnitPrice.ToString("C")</td>
<td>@item.TotalAmount.ToString("C")</td>
</tr>
}
</table>
<br />
@using (Html.BeginForm("GeneratePdf", "Sales", FormMethod.Post))
{
<button type="submit">Generate PDF Report</button>
}
</body>
</html>
<!-- Index.cshtml -->
@model List<SalesModel>
<!DOCTYPE html>
<html>
<head>
<title>Sales Report</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h2>Sales Report</h2>
<table>
<tr>
<th>Date</th>
<th>Product Name</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total Amount</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Date.ToShortDateString()</td>
<td>@item.ProductName</td>
<td>@item.Quantity</td>
<td>@item.UnitPrice.ToString("C")</td>
<td>@item.TotalAmount.ToString("C")</td>
</tr>
}
</table>
<br />
@using (Html.BeginForm("GeneratePdf", "Sales", FormMethod.Post))
{
<button type="submit">Generate PDF Report</button>
}
</body>
</html>
Ahora, añada Ventas como un elemento de menú en el archivo _Layout.cshtml que se encuentra en la carpeta Vistas->Compartidas para crear una vista del asistente de informes:
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales">Sales</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales">Sales</a>
</li>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales"> Sales</a> </li>
Incluir el registro del servicio de renderizado de vistas en el archivo Program.cs es crucial para que la inyección de dependencias funcione correctamente. Añade el siguiente código al archivo Program.cs para registrar el servicio IRazorViewRenderer:
// Register the IRazorViewRenderer service
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
// Register the IRazorViewRenderer service
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
' Register the IRazorViewRenderer service
builder.Services.AddSingleton(Of IRazorViewRenderer, RazorViewRenderer)()
Implementar un controlador (SalesController.cs) con acciones para representar la vista de ventas y generar el informe PDF. Inyecte el servicio IRazorViewRenderer proporcionado por IronPDF en el constructor del controlador.
using ReportGenerator.Models;
namespace ReportGenerator.Controllers
{
public class SalesController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
private readonly List<SalesModel> salesData;
public SalesController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
// Example data with sales information
salesData = new List<SalesModel>
{
new SalesModel { Date = DateTime.Parse("2024-03-01"), ProductName = "Product A", Quantity = 10, UnitPrice = 50.00m },
new SalesModel { Date = DateTime.Parse("2024-03-02"), ProductName = "Product B", Quantity = 15, UnitPrice = 40.00m },
new SalesModel { Date = DateTime.Parse("2024-03-03"), ProductName = "Product C", Quantity = 20, UnitPrice = 30.00m }
// Add more data as needed
};
}
public IActionResult Sales()
{
// Renders the data in Sales view
return View(salesData);
}
}
}
using ReportGenerator.Models;
namespace ReportGenerator.Controllers
{
public class SalesController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
private readonly List<SalesModel> salesData;
public SalesController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
// Example data with sales information
salesData = new List<SalesModel>
{
new SalesModel { Date = DateTime.Parse("2024-03-01"), ProductName = "Product A", Quantity = 10, UnitPrice = 50.00m },
new SalesModel { Date = DateTime.Parse("2024-03-02"), ProductName = "Product B", Quantity = 15, UnitPrice = 40.00m },
new SalesModel { Date = DateTime.Parse("2024-03-03"), ProductName = "Product C", Quantity = 20, UnitPrice = 30.00m }
// Add more data as needed
};
}
public IActionResult Sales()
{
// Renders the data in Sales view
return View(salesData);
}
}
}
Imports ReportGenerator.Models
Namespace ReportGenerator.Controllers
Public Class SalesController
Inherits Controller
Private ReadOnly _viewRenderService As IRazorViewRenderer
Private ReadOnly salesData As List(Of SalesModel)
Public Sub New(ByVal viewRenderService As IRazorViewRenderer)
_viewRenderService = viewRenderService
' Example data with sales information
salesData = New List(Of SalesModel) From {
New SalesModel With {
.Date = DateTime.Parse("2024-03-01"),
.ProductName = "Product A",
.Quantity = 10,
.UnitPrice = 50.00D
},
New SalesModel With {
.Date = DateTime.Parse("2024-03-02"),
.ProductName = "Product B",
.Quantity = 15,
.UnitPrice = 40.00D
},
New SalesModel With {
.Date = DateTime.Parse("2024-03-03"),
.ProductName = "Product C",
.Quantity = 20,
.UnitPrice = 30.00D
}
}
End Sub
Public Function Sales() As IActionResult
' Renders the data in Sales view
Return View(salesData)
End Function
End Class
End Namespace
En el código anterior, dentro del constructor, el servicio IRazorViewRenderer se asigna al campo privado _viewRenderService. Adicionalmente, el controlador inicializa una lista llamada salesData que contiene instancias de la clase SalesModel, representando información de ventas para propósitos de demostración.
Las Ventas()El método de acción devuelve una vista llamada "Ventas", pasando la lista salesData como modelo. Esta acción se encarga de renderizar los datos de ventas en la vista asociada, permitiendo a los usuarios visualizar la información de ventas en un formato tabular o en cualquier otra disposición deseada.
En la acción GenerarPdf del controlador, utilice ChromePdfRenderer de IronPDF para renderizar el archivo Vista del navegador a un PDF Documento del informe. Establece las cabeceras de respuesta adecuadas y devuelve el archivo PDF al cliente.
public FileContentResult GeneratePdf()
{
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render View to PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
Response.Headers.Append("Content-Disposition", "inline");
// Output PDF document
return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
}
public FileContentResult GeneratePdf()
{
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render View to PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
Response.Headers.Append("Content-Disposition", "inline");
// Output PDF document
return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
}
Public Function GeneratePdf() As FileContentResult
License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
Dim renderer As New ChromePdfRenderer()
' Render View to PDF document
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData)
Response.Headers.Append("Content-Disposition", "inline")
' Output PDF document
Return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf")
End Function
Vamos a entender el funcionamiento del código anterior en detalle:
Devolución del archivo PDF:
En general, este método orquesta eficazmente el proceso de generación de un informe PDF a partir de una vista Razor, por lo que es adecuado para la integración dentro de la aplicación ASP.NET para mejorar las capacidades de generación de informes.
Para obtener información detallada sobre cómo IronPDF facilita el proceso de generación de informes PDF y otras tareas relacionadas con PDF, visite la página documentación página.
En este artículo, hemos explorado cómo IronPDF simplifica el proceso de generación de informes PDF en aplicaciones ASP.NET. Siguiendo la guía paso a paso proporcionada anteriormente, puede integrar rápidamente IronPDF en sus proyectos ASP.NET y generar informes PDF dinámicos con facilidad.
Con su amplio conjunto de funciones y su perfecta integración, IronPDF permite a los desarrolladores crear informes de calidad profesional que satisfacen las necesidades de sus usuarios y empresas.
IronPDF ofrece un **Prueba gratuita. Descargue la biblioteca de aquí y pruébalo.
9 productos API .NET para sus documentos de oficina