Skip to main content

Configuring your PDF

H2P supports PDF configuration options using the same structure as Puppeteer.
You can pass these options in the options field of your POST request to customize how your PDF is generated.

This allows full control over layout, margins, format, headers, footers, and more.


Example: POST Request with PDF Options​

curl --location --request POST 'http://localhost:3000/print' \
--header 'Content-Type: application/json' \
--output ExampleFileWithPdfOptions.pdf \
--data-raw '{
"title": "ExampleRoute",
"html": "<html><body><h1>My first Heading</h1><p>My first paragraph.</p></body></html>",
"options": {
"margin": {
"top": "100px",
"right": "100px",
"left": "100px"
}
}
}'

Supported PDF Options​

The list below is based on Puppeteer’s official page.pdf() options.

format​

Sets the paper format. Possible values: A4, A3, A5, Legal, Letter, etc.

"format": "A4"

You can also set custom sizes using width and height.

width and height​

Use these to define custom page size (e.g. 8.5in, 21cm, 100mm, 800px).

"width": "8.5in",
"height": "11in"

margin​

Controls the page margins. Units like px, in, cm, and mm are supported.

"margin": {
"top": "35px",
"right": "35px",
"bottom": "35px",
"left": "35px"
}

scale​

Adjusts the scale of the webpage rendering. Accepts a float value between 0.1 and 2.

"scale": 0.8

printBackground​

Prints background graphics (images and colors). Defaults to false.

"printBackground": true

landscape​

Switches between portrait (false) and landscape (true) orientation.

"landscape": true

displayHeaderFooter, headerTemplate, footerTemplate​

Adds custom headers and footers using HTML templates. Requires displayHeaderFooter to be true.

"displayHeaderFooter": true,
"headerTemplate": "<span class='title'></span>",
"footerTemplate": "<span class='pageNumber'></span>/<span class='totalPages'></span>"

preferCSSPageSize​

If true, uses the @page size from CSS. Defaults to false.

"preferCSSPageSize": true

Notes​