Generating PDFs in a modern web app is usually a massive headache. If you've ever tried to spin up a headless browser like Puppeteer on a serverless function, or wrestled with the strict layouts of pdfmake or jsPDF , you know the pain. I recently hit this exact wall while building PropSign , a POPIA-compliant electronic document signing platform for South African real estate agents. We needed to generate legally binding, ECTA-compliant PDF mandates and lease agreements on the fly. The PDF needed to look identical to the web view, support custom agency branding, and include complex audit trails. Instead of adding heavy server-side dependencies, I decided to use the most underrated PDF engine available: the user's own browser. Here is how I built a zero-dependency PDF generator using Next.js 15, Tailwind CSS, and window.print() . The Architecture PropSign is a Next.js App Router application backed by Convex for the database and Clerk for authentication.…