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.pdfSuccess Response
Returns a PDF file with the following headers:
Content-Type: application/pdf
Cache-Control: public, max-age=60Error Response
{
"error": "Missing or invalid query parameter: url",
"code": "INVALID_URL"
}Error Codes
400- Missing or invalidurlparameter (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.pdfLocal Development
cd apps/experiments/pdf-api
npm install
npm run devnpm 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.pdfCloudflare Features Used
- Workers - Edge compute runtime
- Browser Rendering - Headless Chromium via
@cloudflare/puppeteer - Puppeteer
page.pdf()- PDF generation from rendered pages