Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Como Criar um EndPoint que gere um PDF com os dados do Banco de Dados.

Olá Pessoal, gostaria de ver se alguém consegue me ajudar.

tenho seguinte JSON, que vem com os dados, dentro do meu banco de dados:

[
    {
        "id_process": "87",
        "final_state": "FINISHED",
        "tag_rollgrinder": "LM_170A",
        "tag_roll": "LM170A123",
        "datetime_begin": "2022-09-30T18:15:00Z",
        "datetime_end": "2022-09-30T18:35:00Z",
        "profileRollStartDiameter": "[1, 2, 3]",
        "profileRollStartAdvanceDistance": "[1, 2, 3]"

    }
]

Eu preciso criar uma funcionalidade no backend, através de um endpoint (para testar no postman) que crie um arquivo PDF com esses dados, que vem do banco de dados. Contudo, no PDF, os atributos "profileRollStartDiameter": "[1, 2, 3]" e "profileRollStartAdvanceDistance": "[1, 2, 3]", precisavam vir na forma de gráfico, onde o profileRollStartDiameter são dados que estarão no eixo Y e os dados do profile RollStartAdvanceDistance, estarão no eixo X., conforme a imagem:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Alguém poderia me ajudar, por onde poderia começar? Ja tentei usar o IText com o PDFPTable, para gerar o PDF no endpoint, porém ele só coloca os dados do banco em tabelas, como células.

2 respostas
solução!

Pode tentar usar o JFreeChart: https://www.jfree.org/jfreechart/

Tem um artigo mostrando como gerar PDFs com iText e JFreeChart: https://www.viralpatel.net/generate-pie-chart-bar-graph-in-pdf-using-itext-jfreechart/

Esse artigo mostra como fazer gráficos de barra e de pizza, mas pelos exemplos do site do jfreechart dá para ver que seria possível fazer gráficos como o do seu exemplo.

Também tem esse exemplo mostrando como fazer com o pdfbox e o JFreeChart, se o seu software for comercial (lembrando que o iText é gratuito somente para projetos de código aberto): https://gist.github.com/erickzanardo/d33b60e8cfe5c60a80fc8d98f8770184

Obrigado Leonardo pela ajuda. Agradeço o envio dessas informações.

Bons estudos!