UNPKG

ejs-html-to-pdf-lite

Version:

Convert HTML or EJS to PDF using Playwright-core with full CSS and design support.

106 lines (83 loc) โ€ข 2.9 kB
# ejs-html-to-pdf-lite A fast, lightweight, and production-ready alternative to `html-pdf` and `puppeteer` for converting HTML or EJS templates into high-quality PDFs using `playwright-core`, with full design and CSS support. --- ## โœ… Why Use ejs-html-to-pdf-lite? - ๐Ÿ”ฅ **Minimal dependencies** โ€“ only `playwright-core` + `ejs` - ๐ŸŽจ **Full CSS support** โ€“ Flexbox, Grid, custom fonts, inline styles - ๐Ÿ–ผ๏ธ **Base64 image support** โ€“ embed images directly in templates - ๐Ÿ“„ **Supports both `.ejs` and `.html`** โ€“ dynamic or static usage - ๐Ÿงพ **Great for invoices, reports, and other document PDFs** - ๐Ÿ“ฆ **Tiny install size** โ€“ no bundled browser - ๐Ÿ› ๏ธ **Supports standard & custom paper sizes** - โš™๏ธ **Headless and production-safe** --- ## โœ… Features - Converts full HTML and EJS templates into PDF - Supports modern CSS (Flexbox, Grid, Google Fonts, etc.) - Inline `<style>` and internal CSS fully supported - Base64-encoded images for self-contained PDFs - Fully styled PDF output - Support for standard and custom paper sizes --- ## ๐Ÿ“Œ Use Cases - Server-side PDF generation (e.g., invoices, receipts) - Email-ready PDFs (attachments, download links) - Exporting filled forms using EJS templates - Printable reports or dashboards in backend apps --- ## ๐Ÿ“ฆ Install ```bash npm install ejs-html-to-pdf-lite npx playwright install chromium ``` ## ๐Ÿ“„ Usage ```js const { generatePdf } = require('ejs-html-to-pdf-lite'); // Basic usage with default A4 size await generatePdf({ inputPath: './templates/example.ejs', outputPath: './output.pdf', data: { name: 'John Doe', items: [ { name: 'Product 1', quantity: 2, price: 10.99 }, { name: 'Product 2', quantity: 1, price: 24.99 } ] }, type: 'ejs' // or 'html' }); // With custom paper size await generatePdf({ inputPath: './templates/example.ejs', outputPath: './output-letter.pdf', data: { name: 'John Doe', items: [ { name: 'Product 1', quantity: 2, price: 10.99 }, { name: 'Product 2', quantity: 1, price: 24.99 } ] }, type: 'ejs', paperSize: 'Letter' // Use standard paper size }); // With custom dimensions await generatePdf({ inputPath: './templates/example.ejs', outputPath: './output-custom.pdf', data: { name: 'John Doe', items: [ { name: 'Product 1', quantity: 2, price: 10.99 }, { name: 'Product 2', quantity: 1, price: 24.99 } ] }, type: 'ejs', paperSize: { width: '8.5in', height: '11in' } // Custom dimensions }); ``` ## ๐Ÿ“ Supported Paper Sizes - Standard sizes: `A0`, `A1`, `A2`, `A3`, `A4` (default), `A5`, `A6`, `Letter`, `Legal`, `Tabloid`, `Ledger` - Custom dimensions: provide an object with `width` and `height` properties (e.g., `{ width: '8.5in', height: '11in' }`) ## ๐Ÿ›  Requirements - Node.js 14+ - Chromium (install with `npx playwright install chromium`)