Skip to Content
PDFOverview

PDF (@sumx/ssr-pdf)

Server-side HTML → PDF using Puppeteer. Designed for Next.js Pages Router pages/api routes.

Install

pnpm add @sumx/ssr-pdf

Runtime: Chromium must be available in the deployment image (see Configuration and portal Dockerfile).

Interactive demo

Calls POST /api/html-to-pdf (same handler as the portal via @sumx/ssr-pdf). Requires Chromium/Puppeteer at runtime.

Page orientation

Preview is only available on localhost or dev.sumx.app. Download works on any host that runs the API route.

Quick wire-up

// src/pages/api/html-to-pdf/index.ts export { default } from '@sumx/ssr-pdf/next/html-to-pdf-handler'; export { htmlToPdfApiRouteConfig as config } from '@sumx/ssr-pdf';

Next.js requires config to be defined inline in the route file (do not re-export config from the package only).

Documentation map

TopicPage
createHtmlToPdfHandler, route configAPI route handler
Body validation, filename, marginsRequest utilities
Concurrency limiterRender concurrency
Env vars, Docker, debuggingConfiguration

Subpath exports

import { createHtmlToPdfHandler, htmlToPdfApiRouteConfig } from '@sumx/ssr-pdf'; import { sanitizePdfFilename } from '@sumx/ssr-pdf/html-to-pdf-request'; import { acquirePdfRenderSlot } from '@sumx/ssr-pdf/pdf-render-slot';

Security

  • POST only; validate body size (5mb default via route config).
  • disposition: inline restricted by host allowlist (dev hosts by default).
  • Sanitize filenames — no path segments or reserved characters.
  • Run on server only — never ship Puppeteer to the client bundle.

PDF API guide — portal usage patterns and examples.