Add a running header to every page of a PDF
HTML for the running header. Supports Chromium print classes: date, title, url, pageNumber, totalPages. Needs a top margin to be visible.
| Field | options.headerHtml |
| Type | string, up to 50000 characters |
| Default | none |
What it is for
HTML drawn at the top of every page. Chromium supplies pageNumber, totalPages, date, title and url as elements you can place by class.
The trap
It is rendered in a separate document with NO access to your page’s CSS. Styles must be inline, and the default font size is tiny — set it explicitly. It also needs a top margin to live in.
Example
curl -X POST https://api.pdfcraft.dev/v1/render \
-H "Authorization: Bearer $PDFCRAFT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>hello</h1>",
"options": {
"margin": {
"top": "25mm",
"bottom": "20mm"
},
"headerHtml": "<div style=\"font-size:9px;width:100%;text-align:center;color:#666\">Invoice 1042</div>"
}
}' \
--output out.pdfEvery option
format— Paper size. Ignored if the page CSS declares its own @page size.landscape— Rotate the paper to landscape orientation.margin— Page margins. Any side may be omitted; omitted sides default to 0.scale— Rendering scale factor.printBackground— Print background colours and images. Off by default in browsers; on by default here.pageRanges— Subset of pages to keep, e.g. "1-5" or "1,4,7-9". Empty means all pages.headerHtml— HTML for the running header. Supports Chromium print classes: date, title, url, pageNumber, totalPages. Needs a top margin to be visible.footerHtml— HTML for the running footer. Same classes as headerHtml; needs a bottom margin.waitFor— Conditions to satisfy before the PDF is taken. All of them apply, in order.emulateMedia— Which CSS media type the page sees.timeoutMs— Hard ceiling on the whole render. Exceeding it returns 408 render_timeout.
Try any of these in the playground without writing a line of code, or read the full reference.