Skip to content

Shapes e layout

Elementos geométricos e de layout para compor o visual do relatório.

Line

Linha entre dois pontos. Suporta linha sólida ou tracejada/pontilhada.

json
{
  "type": "line",
  "id": "separator",
  "x": 40,
  "y": 50,
  "x2": 555,
  "y2": 50,
  "strokeWidth": 1,
  "color": "cccccc",
  "strokeDashed": false,
  "strokeDashGap": 4.0
}
PropriedadeTipoPadrãoDescrição
x2doublePosição X final
y2doublePosição Y final
zIndexint0Ordem de empilhamento
strokeWidthdouble1.0Espessura
colorstring"000000"Cor (hex)
strokeDashedboolfalseLinha tracejada/pontilhada
strokeDashGapdouble4.0Tamanho do espaço entre traços

Substituindo o Divider

O tipo divider foi removido. Use line horizontal para o mesmo efeito:

json
{ "type": "line", "id": "div1", "x": 40, "y": 30, "x2": 540, "y2": 30, "strokeWidth": 1 }

Rect

Retângulo com preenchimento e borda. Suporta cantos retos ou arredondados via propriedade borderRadius. Pode conter elementos filhos.

json
{
  "type": "rect",
  "id": "bg_box",
  "x": 30,
  "y": 5,
  "width": 500,
  "height": 50,
  "fill": "f0f4ff",
  "hasBorder": true,
  "borderColor": "1976d2",
  "borderWidth": 1,
  "children": [
    { "type": "text", "id": "inner_text", "x": 10, "y": 15, "content": "Dentro do retângulo" }
  ]
}

Exemplo com cantos arredondados (card):

json
{
  "type": "rect",
  "id": "card",
  "x": 30,
  "y": 10,
  "width": 250,
  "height": 80,
  "borderRadius": 12,
  "fill": "ffffff",
  "hasBorder": true,
  "borderColor": "e0e0e0"
}
PropriedadeTipoPadrãoDescrição
widthdoubleLargura
heightdoubleAltura
borderRadiusdouble0.0Raio dos cantos. 0 = cantos retos
zIndexint0Ordem de empilhamento (use -1 para backgrounds)
fillstring"ffffff"Cor de preenchimento
hasBorderbooltrueExibir borda
borderColorstring"000000"Cor da borda
borderWidthdouble1.0Espessura da borda
borderDashedboolfalseBorda tracejada
borderDashGapdouble4.0Espaçamento do tracejado
childrenarraynullElementos posicionados dentro do retângulo

Circle

Círculo ou elipse.

json
{
  "type": "circle",
  "id": "dot",
  "x": 100,
  "y": 20,
  "radius": 15,
  "fill": "4caf50",
  "hasBorder": false
}
PropriedadeTipoPadrãoDescrição
radiusdoubleRaio do círculo
widthdoublenullPara elipse: largura
heightdoublenullPara elipse: altura
zIndexint0Ordem de empilhamento
fillstring"ffffff"Cor de preenchimento
hasBorderbooltrueExibir borda
borderColorstring"000000"Cor da borda
borderWidthdouble1.0Espessura da borda
borderDashedboolfalseBorda tracejada
borderDashGapdouble4.0Espaçamento do tracejado

Se width e height forem fornecidos, renderiza uma elipse.


Spacer

Espaço vazio. Não renderiza nada visualmente, mas ocupa espaço no layout.

json
{
  "type": "spacer",
  "id": "sp1",
  "x": 0,
  "y": 0,
  "width": 100,
  "height": 20
}
PropriedadeTipo
widthdouble
heightdouble
zIndexint

Sulfite do 🇧🇷 para o mundo © 2026 Rafael S. Pinheiro