Accurate HTML-to-PDF conversion requires a real browser engine — a basic string converter can't apply CSS, execute JavaScript, or compute layout.
Method 1 — Browser Print (Manual)
Ctrl+P → Save as PDF. Captures exactly what you see. No automation. Limited margin control.
Method 2 — Playwright/Puppeteer (Best Quality)
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto('https://example.com')
page.pdf(path='out.pdf', format='A4', print_background=True)
Full CSS, JavaScript, web fonts. ~200MB per browser instance.
Method 3 — wkhtmltopdf (Lightweight)
wkhtmltopdf --page-size A4 input.html output.pdf
Good CSS2 support, no modern JS. Ideal for controlled HTML templates.
Method 4 — WeasyPrint (Python + Print CSS)
from weasyprint import HTML
HTML(filename='input.html').write_pdf('output.pdf')
Implements CSS Paged Media standard. Best for multi-page documents.
Method 5 — Online (Quickest)
ZeroPhantom's converter uses headless Chromium rendering. Upload HTML, download PDF instantly.
Print CSS Essentials
@media print { nav, footer { display:none; } }
@page { size: A4; margin: 20mm; }
Convert HTML to PDF free — no setup →