Readonlypagepage footer band — repeats every page
Readonlypagepage header band — repeats every page; report.pageHeader.addBlock(...) (height auto-measured)
compile to a KapomReport (raw jsPDF doc + save/preview) — identical to createKapomReport(toConfig())
the content/detail — appended in order; flows and paginates. Repeatable.
Paper size / orientation / unit + page margins in one place — the single page-setup entry.
Splits internally: format/orientation/unit/… → jsPDF document options, margins → layout.
Margins only: pageSetup({ margins }); orientation only: pageSetup({ orientation }).
build then open the PDF in the OS viewer (Node) / a new tab (browser)
build then write the PDF — returns the KapomReport so you can keep the doc/preview
report footer / summary (once, last page) — pinned to the page bottom (wrapped in a bottomAnchor at build). Repeatable.
Add a table from the single-table config — the same Progressive-Disclosure shorthands the
object form takes: column { key, header }, group string / ['region','category'] array,
column groups (children may use shorthand too), master-detail (nested), plus style /
summaryLabel / noDataText. Appended to the content flow at the call site (interleaves with
.content(...)), so it renders below .title().
Repeatable — each call adds one table, in call order (drop a .content(pageBreak()) between
them to start a new page). All tables share the builder's single T; mixing different row
types still needs .content(TableNode) + a cast, since one generic can't cover several types.
ready-made colour scheme (preset name or a Theme object) — drives every table fill
report title (once, first page) — a plain string becomes a reportTitle text + spacer; a node is prepended as-is
the assembled config — the same shape the object form takes (title first, body, summary pinned to the bottom last)
Fluent report builder — the chain counterpart to the object-config
createKapomReport, shaped around the report anatomy. Band sections that reserve space are sub-builders you configure in detail (report.pageHeader.addBlock(...)); the flowing/once sections and settings are methods (report.content(...),report.pageNumber(...)).build()emits the exact same config the object form takes, so both produce an identical report.Method/section names follow the anatomy: no
pageprefix = printed once (titlefirst page,summarylast page); apageprefix = repeated every page.contentflows across pages.