Skip to main content

Table

The table building block lets you display structured tabular data. Tables are especially useful for invoices, reports, and any document that lists items in rows and columns.

tip

Tables are not just for displaying data — they are also a powerful layout tool. You can use tables to arrange content side by side or create multi-column layouts. Remove the borders for an invisible grid, or keep them for structured data.

Adding a table

Drag the Table icon from the toolbar and drop it onto the canvas.

Table structure

A table is composed of rows and columns. Each row can contain elements like text, images, or other building blocks. You can configure the table, its rows, columns, and cells independently — each level has its own properties panel.

Column widths can be adjusted by dragging the resize handles between columns directly on the canvas.

Table properties

When you select the table itself, the properties panel opens with the following options:

  • Margins — Set the left (L), top (T), right (R), and bottom (B) margins around the table.
  • Alignment — Align the table to the left, center, or right.
  • Background — The default background color for the table cells.
  • Vertical align — The default vertical alignment of content within cells: top, middle, or bottom.
  • Predefined styles — Apply a predefined table style, or choose "Custom" to configure everything manually.
  • Cell paddings — Set the default left (L), top (T), right (R), and bottom (B) inner paddings for all cells.
  • Keep table together — When enabled, prevents the table from being split across pages.
  • Header rows — The number of rows at the top of the table that repeat on every page when the table spans multiple pages.
  • Keep header with rows — The minimum number of data rows that must appear on the same page as the header. This prevents a header from appearing alone at the bottom of a page.
  • Prevent row break — When enabled, prevents individual rows from being split across pages.
  • Visible when — An expression that controls whether this table appears in the generated PDF. See Conditional visibility.
  • Delete — Removes the table from the template.

Row properties

When you select a row, the properties panel shows:

  • Repeat row — Toggle to enable repeatable rows for dynamic data (see Repeatable rows below).
  • Background — The background color for this row.
  • Vertical align — The vertical alignment of content within this row's cells: top, middle, or bottom.
  • Auto height — When enabled, the row height adjusts automatically to fit its content.
  • Top border — Style (e.g., Normal), width, and color of the top border.
  • Bottom border — Style, width, and color of the bottom border.
  • Visible when — An expression that controls whether this row appears in the generated PDF. See Conditional visibility.
  • Add row — Add a new row above or below the current one.
  • Delete — Removes the row.

Column properties

When you select a column, the properties panel shows:

  • Styles
    • Background — The background color for this column.
    • Width — The column width in pixels. You can also resize columns by dragging the handles on the canvas.
  • Border left — Style (e.g., Normal), width, and color of the left border.
  • Border right — Style, width, and color of the right border.
  • Visible when — An expression that controls whether this column appears in the generated PDF. See Conditional visibility.
  • Add column — Add a new column to the left or right of the current one.
  • Delete — Removes the column.

Cell properties

When you select one or more cells, the properties panel shows:

  • Combine — Merges the selected cells into one. Only available when multiple adjacent cells are selected.
  • Background — The background color for the selected cells.
  • Vertical align — The vertical alignment of content within the selected cells: top, middle, or bottom.
  • Borders — Toggle individual borders on or off: left, top, right, bottom.

Repeatable rows

Tables support repeatable rows, which automatically generate one row for each item in a list from your dynamic data. This is how you display a list of items — such as invoice line items or product lists — without knowing in advance how many items there will be.

To set up a repeatable row:

  1. Select a row in the table.
  2. In the properties panel, find the Repeat row section.
  3. Toggle Enable to on.
  4. In the Data list field, type the name of the array field in your dynamic data (e.g., items).

Once a row is marked as repeatable, you can drag elements into it and reference fields from the list.

Dynamic data

Inside a repeatable row

When elements are inside a repeatable row, they automatically iterate over the list. You can reference fields from the list items without specifying an index:

{{data.items[].productName}}

Since the row already knows which list it belongs to, you can also use the short syntax:

{{data.productName}}

Both forms are equivalent inside a repeatable row.

Accessing parent data

Inside a repeatable row, {{data.fieldName}} refers to a field of the current list item. To access data outside of the current list, use $parent to go up one level:

{{data.$parent.companyName}}

If you have nested tables (a repeatable row inside another repeatable row), you can chain $parent to go up multiple levels:

{{data.$parent.$parent.someField}}

To access the root level directly regardless of nesting depth, use $root:

{{data.$root.companyName}}

Accessing a specific list item by index

You can reference a specific item in a list by its index:

{{data.items[0].productName}}

Inside a repeatable row, this would look for items as a field of the current list item. To access a root-level list by index from inside a repeatable row, use $parent or $root:

{{data.$root.items[0].productName}}

To learn more about dynamic data, see the Dynamic data page.