Convert HTML to professional PDF with Puppeteer and wkhtmltopdf
There are two main tools for converting HTML to professional-quality PDF on Windows: Puppeteer (uses Chromium headless, ideal for complex CSS and web fonts) and wkhtmltopdf (standalone binary, no Node.js required).
Full Puppeteer conversion script
const puppeteer = require('puppeteer');
async function convertToPdf({ html, output, format = 'A4', margin = {top:'15mm',bottom:'15mm',left:'15mm',right:'15mm'} }) {
const browser = await puppeteer.launch({ headless: 'new' });
const page = await browser.newPage();
await page.setContent(html, { waitUntil: 'networkidle0' });
await page.pdf({ path: output, format, margin, printBackground: true,
displayHeaderFooter: true,
footerTemplate: '<div style="font-size:9px;width:100%;text-align:center;color:#888">Page <span class="pageNumber"></span> of <span class="totalPages"></span></div>' });
await browser.close();
}
wkhtmltopdf (no Node.js)
choco install wkhtmltopdf -y
wkhtmltopdf --page-size A4 --margin-top 15mm --footer-center "Page [page] of [toPage]" document.html document.pdf
| Puppeteer | wkhtmltopdf | |
|---|---|---|
| Modern CSS | ✅ Perfect | ⚠️ Limited |
| Requires Node.js | Yes | No |
| Speed | Medium | Fast |