Gráficos e relatórios
Combine gráficos, tabelas e texto em um modelo para criar relatórios de vendas, marketing ou projetos. Criar seu próprio gráfico não exige comprar um design pronto de relatório.
Criar um gráfico no Gerador
- Adicione um Gráfico em Recursos e escolha seu tipo e título no Inspetor.
- Abra Editar dados do gráfico para alterar nomes de séries, cores, categorias e valores numéricos. Adicione séries ou linhas conforme necessário.
- Aplicar transfere as alterações ao gráfico. Cancelar descarta as mudanças feitas no diálogo. Salve o modelo e verifique a prévia e as saídas.
Tipos e limites
São aceitos gráficos de colunas, barras horizontais, linhas, áreas, pizza e rosca. Seus códigos de tipo JSON são:
barhorizontal-barlineareapiedonut
Os exemplos são desenhados pelo próprio mecanismo de gráficos do produto com as mesmas quatro linhas; apenas o código do tipo muda.
Cada gráfico aceita até 100 categorias e 6 séries. Gráficos de pizza e rosca permitem apenas uma série e rejeitam valores negativos.
Exemplo de elemento de modelo
Este objeto é um elemento gráfico no array elements de um modelo schemaVersion: 2, não uma solicitação completa de renderização. O exemplo armazena dados diretamente em content.data.
{
"id": "monthly-revenue",
"type": "chart",
"placementMode": "flow",
"layout": { "width": 100, "widthUnit": "percent", "height": 240 },
"content": {
"title": "Revenue",
"data": [{ "month": "Jan", "revenue": 42 }, { "month": "Feb", "revenue": 52 }]
},
"chart": {
"type": "bar",
"labelField": "month",
"series": [{ "field": "revenue", "label": "Revenue", "color": "#e3232a" }],
"showLegend": true,
"showValues": true
}
}Vincular dados dinâmicos
Para usar dados diferentes em cada documento, adicione binding: monthlyRevenue ao elemento gráfico e envie um array de objetos chamado monthlyRevenue nos dados da solicitação. Nesse caso, remova content.data. labelField seleciona o campo de categoria e cada campo de série seleciona seu valor numérico. Caminhos aninhados como sales.net são aceitos.
Números ausentes ou não finitos não viram zero; permanecem como lacunas em gráficos de linha e área. Corrija valores negativos de pizza ou rosca nos dados de origem. Algumas etiquetas podem ser omitidas em gráficos densos para evitar sobreposição.
Um relatório com dados reais
Um gráfico vinculado a monthlyRevenue lê o array de mesmo nome na solicitação. O modelo permanece igual; apenas os números chegam a cada chamada.
curl -X POST https://api.pdfgine.com/api/v1/render \
-H "X-PDFgine-Key: $PDFGINE_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateCode": "sales-report",
"format": "pdf",
"locale": "pt",
"data": {
"monthlyRevenue": [
{ "month": "2026-01", "revenue": 42000, "target": 40000 },
{ "month": "2026-02", "revenue": 51500, "target": 45000 },
{ "month": "2026-03", "revenue": 47250, "target": 50000 }
]
}
}'
Cada objeto no array representa uma categoria. labelField seleciona o nome da categoria e cada campo de série seleciona um número do mesmo objeto.
Os problemas mais comuns
- binding e content.data são alternativas, não um par. Um gráfico com ambos continua desenhando os dados fixos, e sua solicitação parece ignorada.
- Os valores das séries devem ser números. "42.000,00" é uma string; formate para o leitor em um elemento de texto, não na série.
- Um gráfico aceita no máximo 100 pontos e 6 séries. Agregue os dados antes de enviar em vez de esperar que as linhas extras sejam desenhadas.
- No Word, o gráfico é uma imagem, não um gráfico Word editável. Quem espera clicar para editá-lo ficará desapontado; o PDF e o visualizador mostram o mesmo desenho.
- 100% é a largura da área que contém o elemento, não da folha. Dentro de uma coluna ou contêiner com preenchimento, é mais estreito que a página.
Comportamento da prévia e da saída
Os gráficos usam um renderizador SVG compartilhado. PDF e Visualizador preservam a aparência; exportações Word contêm imagens dos gráficos, não objetos de gráfico Word editáveis.
Uma largura de 100% é a largura disponível da área contenedora, não da folha inteira. Margens, colunas e preenchimento podem reduzir essa área.
Renderizar um documento →