Control the page margins of a PDF
Page margins. Any side may be omitted; omitted sides default to 0.
| Field | options.margin |
| Type | object: top, right, bottom, left |
| Default | none |
Fields
| Field | Type | What it does |
|---|---|---|
top | CSS length — "20mm", "1in", "72px" | e.g. "20mm", "1in", "72px". |
right | CSS length — "20mm", "1in", "72px" | e.g. "15mm". |
bottom | CSS length — "20mm", "1in", "72px" | e.g. "20mm". |
left | CSS length — "20mm", "1in", "72px" | e.g. "15mm". |
What it is for
Margins on all four sides, in any CSS length — mm, in, px, pt. Any side may be omitted and defaults to 0.
The trap
headerHtml and footerHtml are drawn INSIDE the margin. A header with no top margin has nowhere to go and silently does not appear — this is the single most common "my header does not work" cause. Give it at least 20mm.
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": "20mm",
"right": "15mm",
"bottom": "20mm",
"left": "15mm"
}
}
}' \
--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.