Ir para o conteúdo do rodapé
USANDO O IRONPDF

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

  1. Crie um aplicativo Web ASP.NET usando o Visual Studio.
  2. Instale o IronPDF e o IronPdf.Extensions.MVC.Core
  3. Instanciar o objeto ChromePdfRenderer sender
  4. Chame o método RenderRazorViewToPdf para converter a visualização em PDF.
  5. Adicione "Content-Disposition" usando Response.Headers.Append
  6. 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

  1. Abra o Visual Studio e crie um novo projeto ASP.NET Core .
  2. Escolha o modelo de projeto desejado (por exemplo, MVC ou Razor Pages).

    Como criar um relatório em .NET: Figura 1

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

    Como criar um relatório em .NET: Figura 2

  4. 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 :

  1. Abra o Gerenciador de Pacotes NuGet para Soluções clicando com o botão direito do mouse no Explorador de Soluções.
  2. Procure por " IronPDF " e " IronPDF ".

    Como criar um relatório em .NET: Figura 3

  3. 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
$vbLabelText   $csharpLabel

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>
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>
HTML

Como criar um relatório em .NET: Figura 4

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)()
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.

Como criar um relatório em .NET: Figura 5

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
$vbLabelText   $csharpLabel

Vamos entender em detalhes o funcionamento do código acima:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Como criar um relatório em .NET: Figura 6

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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim