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 Endpoint

GET /pdf

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

url string (required)

The website URL to render (must be http or https)

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

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

  • Workers - Edge compute runtime
  • Browser Rendering - Headless Chromium via @cloudflare/puppeteer
  • Puppeteer page.pdf() - PDF generation from rendered pages

On this page