Client-only PDF editor built with Vite, React, TypeScript, Tailwind CSS, shadcn/ui, PDF.js, and pdf-lib.
- Add Text, Images, Signatures, and a few other things to PDFs;
- Move, rotate, and delete pages;
- Merge multiple PDFs;
- Full-document search with context;
- View and edit all PDF metadata;
- Compress PDFs (both lossless and lossy);
- Keep multiple projects open at once - everything is stored locally;
- ...other normal PDF editror featutes.
Install dependencies:
bun installStart the development server:
bun run dev
bun run dev:agpl # to include parts under AGPL 3.0Run checks:
bun run lint
bun run test
bun run build
bun run build:agpl # to include parts under AGPL 3.0The project uses two PDF compression engines: QPDF and PyMuPDF (only under AGPL 3.0).
To override the URLs from which they're loaded, use VITE_QPDF_ENGINE_BASE_URL and VITE_PYMUPDF_ENGINE_BASE_URL environment variables, respectively.
This project was started after I got tired of all PDF editors (that I knew at a time). Each of them was either missing some features, was paid, or had a very unattractive UI.
Initially, this project was supposed to only cover my use cases. But eventually I decided to stuff it with as much features as possible, while keeping it polished, cohesive, and (hopefully) intuitive to use.
Contributions, feature requests, and bug reports are welcome.
This project is MIT by default.
The optional PyMuPDF compression engine under
src/features/pdf-compression/engines/pymupdf-agpl/ is AGPL-3.0-only. Builds
made with bun run build:agpl include that engine integration and should be
treated as AGPL-enabled.