A multi-page invoice table

An invoice table, laid out across as many pages as its lines need.

An invoice table laid out across as many pages as its lines need. The table is longer than a page, so it is fitted, drawn, and continued: the row it stopped at is where the next page picks up, and the headings are drawn again at the top of each one.

This is the example that does the most work. Column widths, alignment column by column, separating lines, the space inside a cell, a heading row on a grey ground and a total row are all here, in the arrangement a billing document actually uses. If you are judging the library for invoicing, read this one and the self-paginating table beside it.

What this example shows

  • A table continued across pages from the row it stopped at.
  • Heading rows repeated at the top of every page.
  • Width and alignment column by column, separating lines, and the space inside a cell.

The code, in full

The same document is written twice, once in each language. Both files are shown in full, with the code coloured on the server, and can be copied in one click.

The document itself

The same document is written in each of these languages. Open the one you want to look at.

Open the document in English Open the document in French

Read the Rust source Read the Python source

First page of A multi-page invoice table

What this document weighs

Before 114,981 bytes
Now 44,608 bytes
Saved 61.2 %

Not one mark on the page changed. See every document measured.

Examples near this one

A self-paginating table

A long table handed over whole, deciding for itself where the pages break: its heading on top of every page, its footnote under every page, its grey grounds stated once for the whole table, and a note you draw under each page at the exact place the table reports.

Cells merged down the rows

A specification sheet whose cells are merged down the rows: each group named once beside all of its rows, with one note beside them; the thin lines stop at those cells' edges, and a note too long for the rows it covers makes them grow.

Columns measured from their cells

One parts list twice: four columns sharing the width equally, then the reference, the quantity and the price each as wide as their own widest cell and the description given everything they leave.

Pictures inside table cells

A catalogue whose first column is a picture rather than text: four pictures of very different sizes and proportions, each fitted whole and undistorted into the cell the table gives it and standing against a different corner of it, claiming no width from its column and no height from its row.

Every example, by subject