Documentação como desenvolver um relatório PDF
Para desenvolver um relatório PDF, é necessário criar um template. Para isso, acesse a pasta `src` e execute o seguinte comando:
python3 gen_report_template `name_report`
Substituia `name_report` pelo nome do seu relatório.
Esse comando vai gerar 2 arquivos. Um arquivo dentro de `src/templates/views` com o nome name_report.hbs e outro arquivo dentro de `src/templates/mocks` com arquivo name_report.json
Essa estrutura é uma estrutura inicial e deve ser modificada de acordo com a necessidade do relatório
O mock será utilizado para teste, durante a fase inicial, onde o desenvolvedor precisa ajustar layout do relatório e também testar a exibição dos dados no PDF. O mesmo também deve ser editado de acordo com a necessidade do relatório. Para testar o relatório deve acessar a rotina de teste de PDF, pelo menu lateral ou clicando aqui: TestePDF
Para a criação do template .hbs deve ser utilizado a estrutura do jinja2 que pode ser acessado em: https://jinja.palletsprojects.com/en/3.1.x/templates/#variables
Para estilização, existem duas formas de estilizar, usando Tailwind ou css puro.
Caso seja necessário criar estilizações customizadas, criar um arquivo dentro de `src/static/custom` com o mesmo nome do relatório
Para que o tailwind faça o build do CSS, estando na pasta `root`do projeto deve ser necessário rodar o mesmo em modo de desenvolvimento utilizando o comando:
yarn dev
ou
npm run dev
Esse comando vai fazer com que o tailwind interprete todas as classes utilizadas nos relatórios e irá gerar o css final automaticamente
É possível criar "helpers" ou como chamamos aqui de `templatetags` ou `filters`, que são funções que podem ser utilizadas no template .hbs
A função deve ser criada dentro do arquivo `custom_filters` que fica dentro de `src/pdf/templatetags`
Um exemplo de função é a função que formata CNPJ
@register.filter(name='cnpjMask')
def cnpj_mask(cnpj):
if len(cnpj) == 14:
return f"{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:]}"
else:
return cnpj
Exemplo do seu uso no template:
{{ data.branch.cnpj|cnpjMask }}