Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
lmn1919/dompdf.js: HTML to PDF in the browser — one line of code for selectable, searchable vector PDFs (10,000+ pages). Pure frontend: zero backend, zero runtime deps. TypeScript over a Rust + WebAssembly engine; an html2canvas/jsPDF alternative.

lmn1919/dompdf.js: HTML to PDF in the browser — one line of code for selectable, searchable vector PDFs (10,000+ pages). Pure frontend: zero backend, zero runtime deps. TypeScript over a Rust + WebAssembly engine; an html2canvas/jsPDF alternative.

4 hours ago

dompdf.js

Pure-frontend DOM-to-PDF engine powered by TypeScript, Web Workers, Rust, and WebAssembly.

Documentation | Live Demo | PDF Editor | 中文文档


Features

  • Pure Frontend Zero Dependencies: No document uploads or backend servers required. All DOM geometry extraction and PDF compilation are completed locally in the browser.
  • High-Definition Vector Typesetting: Produces searchable, selectable, and copyable high-fidelity vector text and paths, avoiding low-quality full-page screenshots.
  • High-Performance Architecture: Compiled on background worker threads via WebAssembly and Web Workers—a 500-page long document exports in ~2 seconds.
  • Full-Featured: Supports smart multi-page pagination, Chinese and custom TTF fonts (with built-in subset compression), text/image watermarks, dynamic headers and footers, SVG/Canvas/CSS styling, hyperlinks, interactive forms (AcroForm), and PDF security encryption.

Installation

npm

npm install dompdf.js

CDN

<script src="https://cdn.jsdelivr.net/npm/dompdf.js@latest/dist/dompdf.min.js"></script>

Quick Start

Generate and Preview PDF Blob

import dompdf from "dompdf.js";

const element = document.querySelector("#content"); const blob = await dompdf(element, { format: "a4", pagination: true, backgroundColor: "#ffffff", });

const url = URL.createObjectURL(blob); window.open(url, "_blank"); setTimeout(() => URL.revokeObjectURL(url), 30_000);

Documentation

Comprehensive bilingual interactive documentation and detailed API references have been migrated to the standalone docs page:

Covered topics:
  • Full export configuration options and API reference
  • Page sizes, margins, custom dimensions, and advanced pagination controls
  • Header and footer templates with dynamic page-number placeholders
  • Text and image watermarks (opacity, layering, rotation, and per-page control)
  • Unicode multilingual support, custom TTF font loading, and font subsetting
  • Interactive forms (AcroForm) and static form exports
  • PDF encryption (user/owner passwords, permissions)
  • SVG, Canvas, advanced CSS effects, and cross-origin images
  • Export progress callbacks and low-level Snapshot APIs

Examples & Demos

Community

dompdf.js WeChat Community QR Code

Contributing

Please read CONTRIBUTING.md before submitting a PR, and run at least:

npm test
npm run build

Security

Please report security issues according to SECURITY.md. Do not disclose unpatched vulnerabilities in public issues.

Changelog

See CHANGELOG.md for recent version changes.

License

This project is open-sourced under the MIT License.

Chat with me