Como criar um relatório em ASP.NET
Os relatórios são essenciais para apresentar dados de forma estruturada e visualmente atraente. Sejam dados de vendas, análises ou resumos financeiros, a geração de relatórios é um requisito comum em aplicações web. A Microsoft fornece serviços de relatório RDLC, que podem ser integrados em aplicativos da Web usando o controle Web Forms Report Viewer. No entanto, o processo pode ser complexo e demorado.
É aí que o IronPDF entra em cena. IronPDF é uma biblioteca versátil que simplifica a geração de relatórios em PDF no ASP.NET e em outras estruturas web, oferecendo recursos poderosos e facilidade de uso. Neste artigo, vamos explorar como criar um relatório em ASP.NET usando o IronPDF.
Como criar um relatório em ASP.NET
- Crie um aplicativo Web ASP.NET usando o Visual Studio.
- Instale o IronPDF e o IronPdf.Extensions.MVC.Core
- Instanciar o objeto ChromePdfRenderer sender
- Chame o método RenderRazorViewToPdf para converter a visualização em PDF.
- Adicione "Content-Disposition" usando Response.Headers.Append
- Crie um relatório usando o método File com PDF.BinaryData.
Introdução ao IronPDF
IronPDF é uma biblioteca versátil que simplifica a geração de documentos PDF em ASP.NET e outras estruturas web. Seu conjunto robusto de recursos e APIs intuitivas a tornam a escolha ideal para desenvolvedores que buscam gerar relatórios dinâmicos, faturas, recibos e muito mais diretamente de seus aplicativos web. Com o IronPDF, os desenvolvedores podem converter facilmente HTML, CSS e até mesmo views Razor em documentos PDF de alta qualidade, permitindo a integração perfeita da funcionalidade de geração de relatórios em seus projetos ASP.NET .
Funcionalidades do IronPDF
- Conversão de HTML para PDF: Converta facilmente conteúdo HTML, incluindo estilos CSS, em documentos PDF de alta qualidade.
- Edição de PDF: Modifique documentos PDF existentes adicionando ou removendo texto, imagens e anotações.
- Preenchimento de formulários PDF: Preencha formulários PDF dinamicamente com dados da sua aplicação web.
- Geração de código de barras: Gere códigos de barras e códigos QR em documentos PDF para etiquetas de produtos ou rastreamento de estoque.
- Marca d'água: Adicione marcas d'água às páginas PDF para proteger informações confidenciais ou documentos da marca.
- Criptografia e segurança: Proteja documentos PDF com criptografia, senhas e configurações de permissões.
Pré-requisitos
Antes de começarmos, certifique-se de que possui os seguintes pré-requisitos:
- Conhecimento básico de desenvolvimento ASP.NET .
- O Visual Studio está instalado em sua máquina.
- IronPDF e IronPdf.Extensions.Mvc.Core
Passos para criar um projeto ASP.NET no Visual Studio
- Abra o Visual Studio e crie um novo projeto ASP.NET Core .
-
Escolha o modelo de projeto desejado (por exemplo, MVC ou Razor Pages).

-
Configure as definições do projeto, como nome, localização e versão do framework.

- Clique em "Criar" para gerar a estrutura do projeto.
Instalando o IronPDF e o IronPdf.Extensions.Mvc.Core
Em seguida, vamos instalar o IronPDF e seu pacote de extensão MVC usando o Gerenciador de Pacotes NuGet :
- Abra o Gerenciador de Pacotes NuGet para Soluções clicando com o botão direito do mouse no Explorador de Soluções.
-
Procure por " IronPDF " e " IronPDF ".

- Instale ambos os pacotes em sua solução.
Passos para criar um visualizador de relatórios em uma aplicação Web ASP.NET
Agora, vamos explorar os passos para criar um relatório em PDF usando o IronPDF em nosso projeto ASP.NET . Antes de converter uma visualização em um relatório, precisamos de um Modelo, uma Visualização e um Controlador para criar uma fonte de dados para gerar e baixar um novo relatório em formato PDF.
Passo 1: Defina uma classe de modelo
Primeiro, crie uma classe de modelo ( SalesModel.cs ) para representar os dados de vendas. Esta classe SalesModel de exemplo incluirá propriedades como Data, Nome do Produto, Quantidade, Preço Unitário e Valor Total. Isso é útil ao recuperar informações de uma fonte de dados como o Microsoft SQL Server ou 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
Etapa 2: Criar uma nova visualização de formulário web
Em seguida, crie uma visualização Razor ( Sales.cshtml ) para exibir os dados de vendas em formato tabular e forneça um botão para gerar o relatório em PDF.
@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>
@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>
Agora, adicione "Vendas" como um item de menu no arquivo _Layout.cshtml , localizado na pasta Views->Shared, para criar uma visualização do assistente de relatório:
<!— Layout.cshtml —>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales">Sales</a>
</li>
<!— Layout.cshtml —>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Sales" asp-action="Sales">Sales</a>
</li>

Etapa 3: Registrando o serviço de renderização de visualização
Incluir o registro do serviço de renderização da view no arquivo Program.cs é crucial para que a injeção de dependência funcione corretamente. Adicione o seguinte código ao arquivo Program.cs para registrar o serviço 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)()
Etapa 4: Implementar a classe do controlador da API Web
Implemente um controlador ( SalesController.cs ) com ações para renderizar a visualização de vendas e gerar o relatório em PDF. Injete o serviço IRazorViewRenderer fornecido pelo IronPDF no construtor do 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 sales view with the sales data
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 sales view with the sales data
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 sales view with the sales data
Return View(salesData)
End Function
End Class
End Namespace
No código acima, dentro do construtor, o serviço IRazorViewRenderer é atribuído ao campo privado _viewRenderService . Além disso, o controlador inicializa uma lista chamada salesData contendo instâncias da classe SalesModel , representando informações de vendas para fins de demonstração.
O método de ação Sales() retorna uma visualização chamada "Sales", passando a lista salesData como modelo. Esta ação é responsável por renderizar os dados de vendas na visualização associada, permitindo que os usuários visualizem as informações de vendas em formato tabular ou em qualquer outro layout desejado.

Etapa 5: Gerar relatório em PDF
Na ação GeneratePdf do controlador, use o ChromePdfRenderer do IronPDF para renderizar a visualização Razor em um documento de relatório PDF . Configure os cabeçalhos de resposta apropriados e retorne o arquivo PDF ao cliente.
public FileContentResult GeneratePdf()
{
// Set license key for IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Initialize the ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the Sales Razor view to a PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
// Set HTTP response header to display the PDF inline
Response.Headers.Append("Content-Disposition", "inline");
// Return the PDF document as a FileContentResult
return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
}
public FileContentResult GeneratePdf()
{
// Set license key for IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Initialize the ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the Sales Razor view to a PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
// Set HTTP response header to display the PDF inline
Response.Headers.Append("Content-Disposition", "inline");
// Return the PDF document as a FileContentResult
return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
}
Public Function GeneratePdf() As FileContentResult
' Set license key for IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
' Initialize the ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
' Render the Sales Razor view to a PDF document
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData)
' Set HTTP response header to display the PDF inline
Response.Headers.Append("Content-Disposition", "inline")
' Return the PDF document as a FileContentResult
Return File(pdf.BinaryData, "application/pdf", "SalesReport.pdf")
End Function
Vamos entender em detalhes o funcionamento do código acima:
- Configuração da chave de licença:
- License.LicenseKey = "SUA-CHAVE-DE-LICENÇA-AQUI";
- Esta linha define a chave de licença necessária para o IronPDF. É essencial para usar as funcionalidades do IronPDF dentro do aplicativo.
- Inicialização do renderizador:
- ChromePdfRenderer renderer = new ChromePdfRenderer();
- Uma instância de ChromePdfRenderer foi criada. Este renderizador é responsável por converter visualizações Razor para o formato PDF usando o mecanismo do navegador Chromium.
- Renderizando a visualização para PDF:
- PdfDocument PDF = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Sales/Sales.cshtml", salesData);
- O método RenderRazorViewToPdf() do ChromePdfRenderer é invocado para renderizar a visualização Razor especificada ( Views/Sales/Sales.cshtml ) em um documento PDF. A variável salesData serve como modelo para a visualização.
- Cabeçalho Content-Disposition:
- Response.Headers.Append("Content-Disposition", "inline");
- O cabeçalho de resposta HTTP Content-Disposition está definido como "inline" . Isso instrui o navegador a exibir o conteúdo do PDF diretamente para visualizar os relatórios na janela ou guia do navegador quando esta for aberta.
- Retornando o arquivo PDF:
- retornar Arquivo(pdf.BinaryData, "application/pdf", "SalesReport.pdf");
- O conteúdo do documento PDF é retornado como um FileContentResult . Inclui os dados binários do PDF ( pdf.BinaryData ), especifica o tipo MIME como "application/pdf" e sugere o nome do arquivo como "SalesReport.pdf" .
Em geral, esse método orquestra de forma eficiente o processo de geração de um relatório em PDF a partir de uma view Razor , tornando-o adequado para integração em aplicações ASP.NET, a fim de aprimorar os recursos de geração de relatórios.

Para obter informações detalhadas sobre como o IronPDF facilita o processo de geração de relatórios em PDF e outras tarefas relacionadas a PDFs, visite a página de documentação .
Conclusão
Neste artigo, exploramos como o IronPDF simplifica o processo de geração de relatórios em PDF em aplicações ASP.NET . Seguindo o guia passo a passo fornecido acima, você pode integrar rapidamente o IronPDF aos seus projetos ASP.NET e gerar relatórios PDF dinâmicos com facilidade.
Com seu conjunto robusto de recursos e integração perfeita, o IronPDF permite que os desenvolvedores criem relatórios de qualidade profissional que atendam às necessidades de seus usuários e empresas.
O IronPDF oferece um período de teste gratuito . Baixe a biblioteca aqui e experimente.
Perguntas frequentes
Como posso gerar um relatório em PDF em ASP.NET?
Você pode gerar um relatório em PDF no ASP.NET usando o IronPDF. Comece configurando um aplicativo web ASP.NET no Visual Studio e, em seguida, instale o IronPDF e sua extensão MVC. Use a classe ChromePdfRenderer para converter as views Razor em PDFs e utilize o método File para criar o relatório.
Quais são os benefícios de usar uma biblioteca PDF para ASP.NET?
Utilizar uma biblioteca PDF como o IronPDF para ASP.NET simplifica o processo de geração e gerenciamento de relatórios em PDF. Ela oferece suporte à conversão de HTML para PDF, edição de PDF, preenchimento de formulários, geração de códigos de barras e segurança de documentos, tornando-a versátil para diversas necessidades de aplicações web.
Como faço para converter views Razor em PDF no ASP.NET?
Para converter views Razor em PDF no ASP.NET, você pode usar o método ` ChromePdfRenderer.RenderRazorViewToPdf do IronPDF. Isso permite integrar a geração de PDFs em suas aplicações ASP.NET de forma transparente.
Quais recursos o IronPDF oferece para geração de relatórios em PDF?
O IronPDF oferece recursos como conversão de HTML para PDF, edição de PDF, preenchimento de formulários, geração de código de barras, marca d'água e criptografia e segurança de documentos. Esses recursos facilitam a criação de relatórios em PDF dinâmicos e seguros.
Como posso proteger documentos PDF em ASP.NET?
O IronPDF oferece recursos de criptografia e segurança que permitem aos desenvolvedores proteger documentos PDF com criptografia, senhas e configurações de permissões. Isso garante que as informações confidenciais permaneçam protegidas em seus aplicativos ASP.NET.
Existe algum período de teste gratuito disponível para o IronPDF?
Sim, o IronPDF oferece um período de avaliação gratuito. Você pode baixar a biblioteca do site do IronPDF e explorar seus recursos para gerar relatórios em PDF com qualidade profissional em seus aplicativos.
Como adiciono uma marca d'água a um PDF em uma aplicação ASP.NET?
Você pode adicionar uma marca d'água a um PDF em uma aplicação ASP.NET usando o IronPDF. A biblioteca fornece APIs para sobrepor marcas d'água em documentos PDF, permitindo que você proteja informações confidenciais ou personalize seus documentos de forma eficaz.
Quais são os pré-requisitos para usar o IronPDF no meu projeto ASP.NET?
Antes de usar o IronPDF, certifique-se de ter um conhecimento básico de desenvolvimento ASP.NET e o Visual Studio instalado. Além disso, você precisa instalar o IronPDF e sua extensão MVC em seu projeto para utilizar seus recursos.
Onde posso encontrar mais informações sobre o IronPDF?
Para obter informações mais detalhadas sobre o IronPDF e suas funcionalidades, você pode visitar a página de documentação no site do IronPDF. A documentação oferece informações sobre configuração, recursos e exemplos de código.
O IronPDF é compatível com o .NET 10 e quais as vantagens que isso traz?
Sim, o IronPDF oferece suporte completo ao .NET 10 em projetos Web, Desktop e Console. Ele aproveita as melhorias de desempenho do runtime do .NET 10 (como alocações de memória reduzidas e JIT mais rápido), os aprimoramentos da linguagem C# e as APIs modernas. Os desenvolvedores podem usar métodos como RenderHtmlAsPdf e RenderHtmlAsPdfAsync perfeitamente em aplicativos .NET 10, beneficiando-se da velocidade de saída, da implantação multiplataforma e de um código mais limpo.


