Add password protection and permission restrictions to a PDF without uploading it to a server
Merge, split, or extract pages from PDF documents inside a web app
Build a privacy-friendly PDF editing tool for contracts, statements, or ID documents
Repair a PDF with a damaged internal structure or compress it for faster web viewing
| fayazara/pdfstudio | cyrusnuevodia/capn-hook | stephenleo/openmicro | |
|---|---|---|---|
| Stars | 89 | 88 | 90 |
| Language | TypeScript | TypeScript | TypeScript |
| Setup difficulty | easy | — | moderate |
| Complexity | 2/5 | — | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Installs via npm, modern bundlers load the WebAssembly file automatically, but a custom wasmUrl may be needed for some setups.
pdfstudio is a TypeScript library for working with PDF files entirely inside the browser, so the documents never get uploaded to a server. Most online tools that let you lock, unlock, merge, or split PDFs work by uploading your file to someone else's computer first, which is an odd default for something as sensitive as a contract, bank statement, or ID document. This project does the same job locally, on the device where the file already lives. Under the hood, pdfstudio takes qpdf, a well established PDF processing engine written in C++ that Linux systems have relied on for over a decade, and compiles it into WebAssembly, a format that lets C++ code run efficiently inside a web browser. A small, fully typed TypeScript layer sits on top so developers get a friendly API instead of dealing with the underlying engine directly. The feature list is extensive. It can encrypt a PDF with a password and set fine grained permissions around printing, editing, or copying content, and it can decrypt or change that password later. It can merge multiple documents or specific page ranges together, split a document into individual pages or fixed size chunks, extract a page selection, rotate pages, delete pages, and reverse page order. It can also interleave pages from two scanned documents, add a watermark or letterhead image over or under existing pages, compress a file to make it smaller, repair a PDF with a damaged internal structure, manage file attachments embedded inside a PDF, and flatten form fields and annotations into the page content itself. There is also a way to build a new PDF directly from a set of JPEG images. The library works the same way in a browser tab, inside a Web Worker, in Node.js version 18 or later, and on Cloudflare Workers. It is installed through npm, and modern bundlers like Vite or webpack automatically load the WebAssembly file it depends on. For anything not covered by the built in methods, there is an escape hatch that lets a developer run a raw qpdf command directly.
A TypeScript library that locks, unlocks, merges, splits, and edits PDF files entirely in the browser, so files never leave the user's device.
Mainly TypeScript. The stack also includes TypeScript, WebAssembly, qpdf.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
double-check against the repo, no cap.