Fluxo completo de relatório
1. Crie a estrutura do relatório
Crie um modelo de relatório com título, período, gráfico e tabela de detalhes. Use fluxo para conteúdo que pode ocupar várias páginas. Adicione cabeçalho, rodapé e número de página conforme necessário.
2. Defina os dados uma vez
Por exemplo, use propriedades month e revenue em um array chamado monthlyRevenue. Vincule o gráfico ao array, escolha month como categoria e revenue como série. Vincule a tabela de detalhes ao mesmo array para ambas usarem os mesmos dados.
3. Teste os casos extremos
Teste um array vazio, uma categoria, nomes longos, campos ausentes e muitas linhas. Compare os totais do gráfico com a tabela. Não use negativos em pizza ou rosca. Se as etiquetas ficarem sobrepostas, aumente o gráfico, reduza categorias ou mostre os detalhes na tabela.
O processo completo do relatório
Um relatório geralmente é produzido em lote e leva mais tempo que uma única fatura, por isso passa pela fila. Verifique primeiro o gráfico isoladamente, depois coloque o documento na fila e acompanhe-o por webhook ou consultas periódicas.
# 1 - Verificar o gráfico isoladamente antes de colocá-lo em um documento
curl -X POST https://api.pdfgine.com/api/v1/templates/chart-preview \
-H "X-PDFgine-Key: $PDFGINE_KEY" \
-H "Content-Type: application/json" \
-d '{
"width": 640,
"locale": "pt",
"element": {
"id": "quarterly-volume",
"type": "chart",
"placementMode": "flow",
"layout": { "width": 100, "widthUnit": "percent", "height": 240 },
"content": {
"title": "Documentos produzidos",
"data": [
{ "quarter": "Q1", "documents": 120 },
{ "quarter": "Q2", "documents": 180 },
{ "quarter": "Q3", "documents": 240 },
{ "quarter": "Q4", "documents": 310 }
]
},
"chart": {
"type": "bar",
"labelField": "quarter",
"series": [{ "field": "documents", "label": "Documentos", "color": "#e3232a" }],
"showLegend": true,
"showValues": true
}
}
}'
# 2 - Colocar o relatório na fila - a resposta é 202 com uma statusUrl
curl -X POST https://api.pdfgine.com/api/v1/documents/render \
-H "X-PDFgine-Key: $PDFGINE_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateCode": "maintenance-report",
"format": "pdf",
"locale": "pt",
"webhookUrl": "https://example.com/hooks/pdfgine",
"data": { "document": { "title": "Manutenção trimestral" } }
}'
# 3 - Acompanhar - consultar este endpoint se nenhum webhook foi definido
curl -s https://api.pdfgine.com/api/v1/async-jobs/queue_fe86ad38402a4909b3b5a7965847924a \
-H "X-PDFgine-Key: $PDFGINE_KEY"
A fila responde com 202 e uma statusUrl, não com o documento pronto. Informe webhookUrl se preferir ser avisado em vez de consultar; a fila fará uma chamada quando o documento estiver pronto e repetirá chamadas que falharem.
4. Verifique e compartilhe a saída
Após conferir salvamento e publicação, gere PDF e Word. No Visualizador, verifique as páginas e o espaço dos gráficos. Um gráfico Word é imagem, não gráfico nativo editável. Confira expiração e permissões de download ao compartilhar externamente; nunca coloque uma chave de API no link compartilhado.
Gráficos e relatórios →Os problemas mais comuns
- A fila responde 202 com statusUrl, não com o relatório. Ler documentId diretamente dessa resposta sempre retorna null.
- Um mês sem linhas é um caso real. Teste o array vazio antes que o cliente receba um relatório com gráfico em branco e tabela sem cabeçalho.
- Compare o gráfico com sua tabela. Um gráfico ligado a um array e uma linha de total calculada de outro geram um dos erros numéricos mais silenciosos de um relatório.
- Valores negativos em um gráfico de pizza ou rosca não podem ser representados de forma honesta. Corrija-os nos dados de origem, não no gráfico.
- Uma execução em lote encontra dois limites: as páginas da cota e os documentos por minuto do plano. Distribua a execução em vez de acumular erros 429.