Criando PDFs em Asp.NET MVC com Rotativa
Rotativa é uma biblioteca de conversão de arquivos HTML em PDF em ASP.NET MVC baseado na ferramenta wkhtmltopdf.
Com ele os códigos em HTML e CSS podem ser aproveitados para criar um arquivo PDF.
O Rotativa necessita do executável wkhtmltopdf.exe para criar os arquivos.
Ele deve ser instalado como um pacote nuget comum [1]
Apenas com o controller adicionado como mostrado mais abaixo, o rotativa gera o PDF correspondente à página HTML.
Para ajustes mais específicos, o mesmo ainda apresenta a opção de receber uma série de comandos por meio do parâmetro ”CustomSwitches” no controller. Com isso é possível mudar o tamanho da fonte assim como seu tipo, e também fazer uso de um cabeçalho (header) e rodapé (footer).
Os recursos de cabeçalho e rodapé são limitados mas podem ser usados de duas maneiras: carregando arquivos header e footer no comando “CustomSwitches” com as instruções ou passando apenas as instruções específicas.
Por exemplo, usando apenas os comandos em CustomSwitches se pode incluir um título no header e uma numeração no rodapé. Uma limitação é não se ter a opção de usar um header carregado de um arquivo e um footer passado via comandos. Ou os dois vem de arquivos carregados ou os dois vem de comandos pelas instruções.
Outro tipo de limitação encontrada está no carregamento de imagens para compor o header/footer do pdf. Este só é possível até o momento por meio de um header/footer vindo de um arquivo.
Como usar:
- Inicialmente vá ao gerenciador de pacotes Nuget e instale o pacote:
- Após a instalação temos o arquivo .exe na pasta Rotativa como mostrado abaixo:
Para gerar o PDF, basta criar o conteúdo HTML da mesma forma que uma página web estática. O Rotativa irá ler esse conteúdo e gerar o PDF.
Para customizar cabeçalho e rodapé, seguem os códigos.
- No Controller devemos implementar o seguinte código para execução
Os comandos passados em CustomSwitches são feitos por meio de uma string. Logo é possível se concatenar algum valor no meio desta para que seja exibida como texto no cabeçalho ou rodapé.
Os principais comandos estão exemplificados acima e são estes:
- –header-center \”texto\” : responsável por escrever um texto no cabeçalho, no caso na região central do mesmo. Center pode ser substituído por right ou left;
- –header-spacing \”valor\”: este tem como objetivo determinar o espaçamento do cabeçalho no início das páginas. O valor pode ser positivo ou negativo, passando assim a se sobrepor ao texto que não compõe o cabeçalho. Também é válido para –footer-spacing \”valor\”;
- –header-font-name \”font\” : comando para mudança do tipo de fonte do cabeçalho. Também se aplica para –footer-font-name \”font\”;
- –header-font-size \”size\” : comando para mudança do tamanho da fonte a ser exibida no cabeçalho. Também se aplica para –footer-font-size \”size\”;
- –footer-right \”Pag: [page] de [toPage]\” : comando para exibir a numeração das páginas do arquivo pdf. Também pode ser usado no cabeçalho assim como ter sua posição e modos de escrita alterados.
No exemplo acima ainda foi passado outro parâmetro para customização do pdf, o “pageMargins”. Este tem como função alterar as margens do arquivo gerado, porém esta ação é feita de modo geral, atingindo o texto incluindo o header/footer.
Para o caso do cabeçalho e rodapé serem gerados por arquivos separados temos as seguintes alterações:
Neste caso temos os dados do header e do footer definidos em duas Views no formato HTML! Atente para o fato de que este comando não funciona com arquivos em CSHTML!
Os comandos de mudança de fonte e espaçamento ainda funcionam, porém ao tentar se incluir um texto este não surte mais efeito, mesmo que apenas um (footer ou header ) esteja sendo usado.
Os arquivos de header e footer abaixo fazem a mesma função de quando os parâmetros são passados na string, ou seja, mostram a numeração da página no footer e um título no header.
Os arquivos são:
Header:
Footer:
No arquivo de footer temos uma série de parâmetros internos do rotativa que devem ser acessados como é mostrado acima.
Outros tipos comandos e mais informações podem ser obtidas nas fontes abaixo:
Displaying headers and footers in a PDF generated by Rotativa(MVC):
https://bhavdiptala.blogspot.com.br/2016/05/displaying-headers-and-footers-in-pdf.html
Rotativa PDF em ASP .NET MVC
http://www.tiselvagem.com.br/desenvolvimento/asp-net/mvc-rotativa-pdf/
Rotativa
http://rotativaforpdf.blogspot.com.br/2015/03/rotativa.html
Os códigos aqui apresentados podem ser encontrados em:
https://github.com/GilbertoCastro/Rotativo
Referências
[1] https://www.nuget.org/packages/Rotativa
Desenvolvimento de Software
Confira outros artigos
Mecanismos de Acompanhamento no Desenvolvimento de Software
O uso de mecanismos de acompanhamento é imprescindível no mundo do desenvolvimento de software e pode potencializar a eficiência digital. O acompanhamento efetivo das operações é fundamental para garantir a entrega de soluções digitais de sucesso. Na nossa empresa, utilizamos uma metodologia única, o dti evolve, que incorpora inteligência artificial (IA) para acelerar nosso processo de […]
Desenvolvimento de Software
Eficiência digital com copilot: um caso de uso do GitHub
Em um mundo em constante evolução tecnológica, otimizar o tempo e potencializar a eficiência digital se torna cada vez mais crucial. Portanto, vamos apresentar alguns experimentos que estão sendo implementados com o Git Hub Copilot em busca de maior eficiência digital. Certamente quem nos acompanha sabe que estamos experimentando e introduzindo as melhores ferramentas de […]
Desenvolvimento de Software
Engenharia de Prompt: A Arte de Conversar com a IA
Sumário1 Falando a Linguagem das Máquinas2 O que é Engenharia de Prompt?3 A Importância da Engenharia de Prompt em Ação: Aplicações do Mundo Real 4 Princípios-chave da Engenharia de Prompt Eficaz4.1 Desconstruindo o Prompt:4.2 Técnicas de Engenharia de Prompt:4.3 Combinando Técnicas e Criando sua Obra-Prima:5 As Armadilhas da Engenharia de Prompt: Navegando pelos Limites dos Modelos […]
Desenvolvimento de Software