/pdf - Render PDF
The /pdf
endpoint instructs the browser to render the webpage as a PDF document.
Navigate to https://example.com/
and inject custom CSS and an external stylesheet. Then return the rendered page as a PDF.
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/pdf' \ -H 'Authorization: Bearer <apiToken>' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://example.com/", "addStyleTag": [ { "content": "body { font-family: Arial; }" }, { "url": "https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" } ] }' \ --output "output.pdf"
import Cloudflare from "cloudflare";
const client = new Cloudflare({ apiEmail: process.env["CLOUDFLARE_EMAIL"], // This is the default and can be omitted apiKey: process.env["CLOUDFLARE_API_KEY"], // This is the default and can be omitted});
const pdf = await client.browserRendering.pdf.create({ account_id: "account_id",});
console.log(pdf);
const content = await pdf.blob();console.log(content);
Navigate to https://example.com
, first setting an additional HTTP request header and configuring the page size (viewport
). Then, wait until there are no more than 2 network connections for at least 500 ms, or until the maximum timeout of 4500 ms is reached, before considering the page loaded and returning the rendered PDF document.
The goToOptions
parameter exposes most of Puppeteer'd API ↗.
curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/pdf' \ -H 'Authorization: Bearer <apiToken>' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://example.com/", "setExtraHTTPHeaders": { "X-Custom-Header": "value" }, "viewport": { "width": 1200, "height": 800 }, "gotoOptions": { "waitUntil": "networkidle2", "timeout": 45000 } }' \ --output "advanced-output.pdf"
The options rejectResourceTypes
and rejectRequestPattern
can be used to block requests. The opposite can also be done, only allow certain requests using allowResourceTypes
and allowRequestPattern
.
curl -X POST https://api.cloudflare.com/client/v4/accounts/<acccountID>/browser-rendering/pdf \ -H 'Authorization: Bearer <apiToken>' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://cloudflare.com/", "rejectResourceTypes": ["image"], "rejectRequestPattern": ["/^.*\\.(css)"]}' \ --output "cloudflare.pdf"
If you have HTML you'd like to generate a PDF from, the html
option can be used. The option addStyleTag
can be used to add custom styles.
curl -X POST https://api.cloudflare.com/client/v4/accounts/<acccountID>/browser-rendering/pdf \ -H 'Authorization: Bearer <apiToken>' \ -H 'Content-Type: application/json' \ -d '{ "html": "<html><body>Advanced Snapshot</body></html>", "addStyleTag": [ { "content": "body { font-family: Arial; }" }, { "url": "https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" } ]}' \ --output "invoice.pdf"