Arrange content vertically with column, horizontally with row, and add space with spacer.
Three nodes do all the arranging: column stacks things vertically, row places them side by side, and spacer adds a gap. Everything else (text, table, image) is content you drop into them.
The cell takes a share of the remaining width, proportional to its weight. Two cells with weights 1 and 2 split the row one-third / two-thirds. Use relative sizing for content that should flex with the page.
{ "kind": "constant", "width": 180 }
The cell is exactly width points wide, regardless of page size. Use it for fixed columns — a date block, a logo lane, a totals strip. Relative cells then share whatever width is left.
Mixing the two is the common case: a constant cell for the thing that must be a fixed width, and a relative cell with weight: 1 next to it to soak up the rest.
A two-column body — bill-to on the left, pay-to on the right — is just a row of two relative cells, each holding a column:
A fixed vertical gap. Useful inside a column when you want more (or less) space than uniform spacing gives, or to push content down a page — certificates lean on it heavily.
{ "type": "spacer", "size": 24 }
Field
Type
Required
Notes
size
number (points)
yes
Height of the gap. Must be ≥ 0.
For horizontal space between row cells, don’t use a spacer — adjust the cell size/weight instead, or add padding if it’s a table cell.