This site is not affiliated with or endorsed by Cloudflare, Inc. It simply showcases experiments built using Cloudflare services.
Cloudflare Experiments

PDF API

Generate PDF documents from any webpage using Cloudflare Browser Rendering

Generate a PDF from any URL using Browser Rendering and Puppeteer's page.pdf() API.

API Reference

GET /pdf

Renders the specified URL in a headless browser and returns a PDF document.

Prop

Type

Example Request

curl "https://your-worker.workers.dev/pdf?url=https://www.cloudflare.com" \
  --output page.pdf

Success Response

Returns a PDF file with the following headers:

Content-Type: application/pdf
Cache-Control: public, max-age=60

Error Response

{
  "error": "Missing or invalid query parameter: url",
  "code": "INVALID_URL"
}

Error Codes

  • 400 - Missing or invalid url parameter (not http/https)
  • 502 - PDF generation failed (PDF_ERROR)

Use Cases

  • Convert web pages to printable PDF documents
  • Archive rendered page content with styles
  • Generate invoices or reports from HTML pages
  • Learn Browser Rendering PDF generation with Workers bindings

Limitations

  • Requires Browser Rendering enabled on your Cloudflare account
  • Local development needs npx wrangler dev --remote
  • Navigation timeout; complex or infinite-scroll pages may fail
  • Fixed viewport; no PDF margin, format, or page-size options

Deployment

Enable Browser Rendering

This experiment requires Browser Rendering on your Cloudflare account. See the Browser Rendering docs.

Test your deployment

curl "https://your-worker.workers.dev/pdf?url=https://www.cloudflare.com" \
  --output page.pdf

Local Development

cd apps/experiments/pdf-api
npm install
npm run dev

npm run dev uses wrangler dev --remote so a real browser instance is available. Local dev without --remote will not work.

Test locally:

curl "http://localhost:8787/pdf?url=https://www.cloudflare.com" --output test.pdf

Cloudflare Features Used

On this page