← Back to Open-Source PDF Software

Open-Source JavaScript PDF Software

47 open-source PDF tools written in JavaScript.

JavaScript

backslide

Cli

CLI tool that builds HTML slide presentations from Markdown (via Remark.js), with a live-reload dev server, Sass-based custom templates, static-site/self-contained-HTML export, presenter-notes stripping, and PDF export through DeckTape integration.

Stale
JavaScript

DeckTape

Cli

Puppeteer-based (headless Chrome) command-line tool that exports HTML slide presentations to high-quality PDF, with native support for 13 frameworks (reveal.js, impress.js, remark, Bespoke.js, deck.js, etc.) plus a generic mode for others; can also capture slides as PNG/JPG images, export slide ranges, and set PDF metadata.

JavaScript

Electron-PDF

Cli

CLI tool and Node.js API (built on Electron/Chromium) that converts URLs, HTML files, or Markdown files to PDF or PNG, with custom CSS injection, page size/orientation/margin control, print-background support, custom request headers, and batch/concurrent job handling.

JavaScript

html-pdf-chrome

Library

Node.js library that renders HTML (local strings or remote URLs) to PDF using headless Chrome/Chromium, or exports as PNG/JPEG/WebP screenshots; supports templated headers/footers, custom HTTP headers, configurable viewport/device-scale, and multiple render-completion triggers (callbacks, DOM events, timers).

JavaScript

html2pdf.it

Server

Node.js web service that converts HTML (passed as a data URI) into PDF, supporting manual page breaks via CSS `page-break-before: always`.

Stale
JavaScript

html2pdf.js

Library

Client-side (browser-only) library built on html2canvas and jsPDF that converts a webpage, DOM element, or canvas into a PDF entirely in the browser, with configurable margins, page breaks, image quality/type, and a promise-based worker API. Renders content as images, so output text is not selectable/searchable and files can be large.

JavaScript

HummusJS

BindingsLibrary

Fast Node.js module (native binding around the C++ PDFWriter/PDFHummus engine) for creating, parsing, and manipulating PDF files and streams.

JavaScript

jsPDF

Library

Client-side JavaScript library for generating PDFs in the browser or Node: configurable paper size/orientation/units, text with 14 standard fonts or custom embedded TTF/Unicode fonts, images, transformation matrices, patterns, and FormObjects; plugin ecosystem adds HTML-to-PDF (via html2canvas) and table generation. Ships as ES module, UMD, or with TypeScript typings. (Originally MrRio/jsPDF, now hosted under github.com/parallax/jsPDF, which the old URL redirects to.)

JavaScript

jsreport

LibraryWeb Api

Open-source report-rendering platform: design reports with templating engines (e.g. Handlebars) or a visual designer, and render them to PDF, HTML, Excel, DOCX, and other formats; includes user management, a REST API, scheduling, and email delivery. Usable standalone or embedded as a Node.js library.

JavaScript

markdown-resume.js

CliDriver

CLI tool (`md2resume`) that converts a Markdown resume into a responsive HTML page and a PDF version (via wkhtmltopdf), with a watch mode for live-reload editing and Docker support.

Stale
JavaScript

node-html-pdf

Library

PhantomJS-based library that converts HTML to PDF, PNG, or JPEG via a file/stream/buffer API, with paper size, orientation, margin, zoom, and header/footer options.

DepreciatedStale
JavaScript

pagedjs-cli

Cli

Command line interface for Paged.js, a free and open source library that paginates content in the browser to produce print-ready PDFs from HTML/CSS.

JavaScript

pdf-extract

Library

Set of tools (per its npm registry listing) that convert PDF files to usable formats for data processing: extracting text from searchable PDFs and performing OCR on scanned/image-only PDFs. Note: its GitHub source repository (nisaacson/pdf-extract) now returns 404 — likely deleted or made private; this description is sourced from the published npm package metadata instead.

DepreciatedStale
JavaScript

pdf-lib

Library

Dependency-free JavaScript library (works in browsers, Node, Deno, React Native) to create PDFs from scratch or modify existing ones: add/insert/remove/copy pages, draw text (with embedded custom fonts), images (PNG/JPEG), vector graphics and SVG paths; create and fill AcroForm fields (text, checkbox, radio, dropdown) and read/flatten them; embed pages from other PDFs, split and merge documents, add file attachments, and read/set document metadata.

Stale
JavaScript

pdf-parse

Library

Pure JavaScript, cross-platform module to extract text from PDFs.

JavaScript

PDF.js

Library

A general-purpose, web standards-based platform for parsing and rendering PDFs.

JavaScript

pdf2json

CliLibrary

Node.js library/CLI (built on Mozilla's pdf.js engine) that converts PDFs to JSON: extracts text (with position, rotation, styling, color, and font metadata), page layout, and interactive AcroForm field data (text inputs, checkboxes, radio buttons, dropdowns, signature fields); also outputs plain-text files, and runs as a REST service or stream-based parser.

JavaScript

PDFKit

Library

PDF generation library (Node and browser) with an HTML5-canvas-like vector graphics API (paths, SVG path parsing, gradients, transformations), text with line-wrapping and bulleted lists, embedded/subsetted TrueType/OpenType/WOFF/WOFF2 fonts, JPEG/PNG image embedding, tables, annotations (links, notes, highlights), AcroForms, document outlines, encryption with granular permission controls, and Tagged-PDF/PDF-UA accessibility support.

JavaScript

pdfmake

Library

Declarative, pure-JavaScript (client/server) PDF generation library: text with line-wrapping/alignment, numbered/bulleted lists, page breaks and sections, tables (auto/fixed/star column widths, spanning, repeating headers, multi-column snaking layouts), images and vector graphics, static/dynamic headers and footers, background layers, custom page size/orientation/margins, embedded fonts, table of contents, and PDF metadata.

JavaScript

PDFObject

Library

Lightweight JavaScript utility for dynamically embedding PDFs in web pages via an iframe, with automatic detection of inline-PDF browser support, graceful fallback content for unsupported browsers/mobile, base64 PDF handling, and support for Adobe PDF Open Parameters (e.g. linking to a specific page).

JavaScript

QuickBill

Web App

Free, registration-free invoice generator (React/Redux Progressive Web App) that creates and previews invoices and exports them as PDFs; works offline and can be installed to a device home screen.

Stale
JavaScript

React-PDF

Library

Displays existing PDFs in React apps (built on PDF.js): renders pages via `<Document>`/`<Page>` with canvas, custom, or no rendering; shows outline/table of contents and thumbnails; selectable text and annotation/link layers; form rendering; page rotation and zoom; password-protected PDF handling; JPEG2000 and non-Latin (cMap) support. (Complementary to @react-pdf/renderer, which creates PDFs rather than displaying them.)

JavaScript

react-pdf

Library

Creates PDF files using React components (`Document`, `Page`, `Text`, `View`) with a StyleSheet/flexbox styling API; renders in-browser via `<PDFViewer>` or saves to file/buffer in Node. (Complementary to wojtekmaj/react-pdf, which displays existing PDFs rather than creating them.)

JavaScript

Resumake

Web App

Free, open-source tool (resumake.io) that generated LaTeX resumes and rendered them to PDF without ads, accounts, or data collection. Source preserved on the v2 branch.

Depreciated
JavaScript

scissors

Driver

Node.js wrapper around PDFtk, Ghostscript, and ImageMagick for PDF manipulation: split/select/reorder/reverse pages, filter even/odd pages, join multiple PDFs, rotate (90/180/270/360°), crop (noted as unreliable), extract text and embedded images, extract metadata/properties, and render pages to PNG at a given DPI.

JavaScript

Serverless LibreOffice

Driver

Runs a precompiled LibreOffice binary inside AWS Lambda to convert documents to PDF (and between other office formats) at low cost, with Terraform examples, a Node.js Lambda handler (with S3 integration), and a Docker setup for compiling LibreOffice yourself.

Stale
JavaScript

textract

CliDriverLibrary

Node.js module (CLI + API) that extracts text from HTML, PDF, DOC/DOCX, ODT, RTF, XLS/XLSX/XLSB/XLSM, CSV, ODS, PPTX/ODP, XML, Markdown, EPUB, and image formats (PNG/JPG/GIF via Tesseract OCR); wraps external tools (pdftotext, antiword, tesseract, unrtf) and supports password-protected PDFs and configurable OCR language.

JavaScript

Universal Viewer

Library

Open-source, IIIF-based media viewer for sharing books, manuscripts, newspapers, film, audio, and 3D objects on the web; renders images, PDFs, audio, video, and 3D files as an embeddable npm package.

JavaScript

url-to-pdf-api

Server

Microservice (Puppeteer/headless Chrome) that converts URLs or posted HTML into PDFs or PNG/JPEG screenshots, with configurable viewport, PDF page size/orientation/margins/scale, header/footer templates, page-range selection, cookies/headers, SPA network-idle waiting, and optional API-key auth; deployable via Heroku or Docker.

Stale
JavaScript

vue-pdf

Library

Vue 2 component for displaying PDFs from URLs, file paths, or binary data: page navigation, 90°-increment rotation, password-protected PDF handling, per-page or range printing, load-progress tracking, text extraction/selection, clickable internal links, and rendering multiple page instances at once.

Stale
JavaScript

zerox

Library

OCR/document-ingestion library (Node/TypeScript and Python implementations) that converts PDFs, Word/Excel/PowerPoint files, and images to page images, then sends each to a vision-language model (OpenAI, Azure OpenAI, AWS Bedrock, Google Gemini, or Vertex AI) to produce Markdown, preserving tables/charts; supports structured JSON-schema extraction, page selection, concurrent processing, and orientation/edge correction.

JavaScript

pdfh5

Plugin

Framework-agnostic (with Vue/React support) web PDF preview plugin built on PDF.js: touch gestures (pinch-zoom, double-tap, scrolling), selectable/searchable text layer, annotations (highlights, freetext, ink, stamps, signatures), password-protected PDF support, page caching for large files, print support, and a sandbox mode blocking JS injection/XSS.

JavaScript

muhammara

Library

Node.js module for creating, reading, and modifying PDF files and streams — a drop-in replacement for HummusJS built on the same underlying PDF-Writer/PDFHummus C++ engine.

JavaScript

pdf-merger-js

Library

Node.js/browser library that merges multiple PDF documents (or selected parts/pages of them) into a single new PDF.

JavaScript

pdf-img-convert

Library

Node.js module that converts PDF files into image buffers (PNG) without touching the filesystem.

JavaScript

pdf2pic

Library

Node.js utility for converting PDF pages to image formats, with output directly to file, base64, or buffer.

JavaScript

pdf.js-extract

Library

Simple async Node.js PDF text reader (built on PDF.js) that extracts text along with each item's x/y position on the page.

JavaScript

svg-to-pdfkit

LibraryPlugin

Plugin for PDFKit that inserts SVG graphics into PDF documents generated with PDFKit.

Stale
JavaScript

svg2pdf.js

Library

JavaScript-only SVG-to-PDF conversion utility that runs in the browser, built on top of jsPDF.

JavaScript

react-to-pdf

Library

Library for creating PDF documents directly from React components in the browser.

JavaScript

pdfreader

Library

Node.js library that reads text from PDFs and parses tabular data with automatic column detection and rule-based parsing.

JavaScript

pdfjs

Library

PDF generation library targeting both server- and client-side JavaScript. (Not to be confused with Mozilla's PDF.js, a PDF rendering/viewing engine — this is an unrelated, same-named PDF-creation library.)

JavaScript

jsPDF-AutoTable

LibraryPlugin

jsPDF plugin for generating PDF tables: parses existing HTML tables via CSS selectors or builds tables from JavaScript data (head/body/foot), with striped/grid/plain themes, custom colors/fonts/alignment, colspan/rowspan, automatic or manual page breaks (including horizontal breaks for wide tables), and lifecycle hooks for custom styling.

JavaScript

zotero-pdf-translate

Plugin

Zotero plugin that translates PDFs, EPubs, webpages, metadata, annotations, and notes via 20+ pluggable translation services: popup translation on text selection, adding translations to annotation comments, translating item titles/abstracts, single-word dictionary lookups, sentence-by-sentence mode, and a standalone multi-service comparison window.

JavaScript

react-native-pdf

GuiPlugin

React Native PDF viewer component: loads PDFs from URLs, local files, assets, blob data, or base64 (with optional caching); page jumping, page-by-page or continuous scrolling, pinch/double-tap zoom, and password-protected PDF handling. Uses PDFKit on iOS, PDFium on Android, and a native implementation on Windows; also supports Expo via a config plugin.

JavaScript

pdfme

Cli

TypeScript PDF generation toolkit for Node.js and browsers: generates PDFs from simple JSON templates, includes a WYSIWYG template designer and a PDF viewer component, plus CLI tools for template validation, diagnostics, and image-based layout inspection.

JavaScript

pdf2xml-viewer

Library

Displays and inspects individual text boxes within PDF documents by converting them to pdf2xml format (via poppler-utils) and rendering the boxes with D3.js in a browser — useful for examining OCR-processed 'sandwich' PDFs before extraction. Companion tool to pdftabextract, letting you view the row/column grids it detects.

DepreciatedStale