Convertendo HTML para PDF com o JsReport no .NET

Neste post, vou apresentar como converter códigos em HTML para PDF utilizando o JsReport, uma biblioteca de geração de relatórios baseada em JavaScript que pode ser integrada facilmente em projetos .NET.

O JsReport permite criar relatórios personalizados a partir de templates HTML, CSS e JavaScript, utilizando dados dinâmicos e recursos como gráficos, tabelas e imagens.

Pré-requisitos

API

O primeiro passo é configurar a classe program.cs:

A extensão AddJsReport() é responsável por registrar a injeção de dependência do JsReport na solução:

Este código cria uma instância do conversor localmente, usando o binário do JsReport que é baixado automaticamente pelo pacote NuGet.

  • O método KillRunningJsReportProcesses() é responsável por finalizar/liberar memória dos processos de geração do PDF anteriores.
  • O método Configure() é responsável por realizar configurações adicionais do JsReport, neste caso, estamos configurando que as gerações de PDF sejam processadas no navegador Chrome.
  • O método AsUtility() indica que vamos usar o JsReport como uma ferramenta auxiliar, sem armazenar os templates ou os relatórios gerados.
  • O método Create() finaliza a configuração do JsReport.

Agora, podemos utilizar o JsReport para realizar as conversões. Para isso, é necessário criar um método na Controller que recebe um HTML como parâmetro e retorna um arquivo PDF como resultado:

O método RenderAsync() recebe um objeto do tipo RenderRequest, que contém as informações sobre o template e o formato do relatório. No nosso caso, o template é o HTML que recebemos como parâmetro. Por fim, retornamos esse conteúdo como um arquivo PDF usando o método File.

Testando

Para testar o nosso método, podemos criar um HTML simples com algum texto e uma imagem. Por exemplo:

<html>
<head>
    <style>
        h1 {
            color: blue;
        }
    </style>
</head>
<body>
    <h1>Convertendo HTML para PDF com o JsReport no .NET</h1>
    <p>Este é um exemplo legal de como converter HTML para PDF usando o JsReport no .NET.</p>
    <img src="https://raw.githubusercontent.com/dotnet/brand/main/logo/text-only/Black/dotnet-logo-text_Black%402x.png" alt=".NET logo" width="323" height="121">
</body>
</html>

Em seguida, passe o HTML como parâmetro ao chamar o endpoint api/converterhtml e clique em Execute:

O que resulta na geração do arquivo PDF:

Finalizando

Com o JsReport ficou muito mais simples converter códigos HTML para PDF mantendo a formatação e a imagem. Podemos usar templates mais complexos e adicionar mais recursos ao nosso relatório, como cabeçalhos, rodapés, numeração de páginas, etc. Para saber mais sobre o JsReport e suas funcionalidades, consulte a documentação oficial: https://jsreport.net/learn/dotnet-aspnetcore

Os detalhes completos deste exemplo você encontra no meu GitHub: https://github.com/hgmauri/sample-jsreport

Deixe uma resposta