Skip to content

Okyumi/pdf-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDF Tool

PDF Tool

A fast, private, client-side PDF utility for splitting, merging, and compressing PDFs.
No uploads. No servers. Everything runs in your browser.


Features

✂️ Split

Upload a PDF and extract specific pages by entering ranges like 1-3, 5, 7-10, or split every page into its own file.

  • Displays page count and file size after upload
  • Validates page ranges in real time
  • Single extraction downloads as .pdf; individual-page split downloads as .zip

📎 Merge

Combine multiple PDFs into one. Upload via file picker or drag-and-drop, then reorder by dragging.

  • Drag-to-reorder with desktop drag-and-drop and mobile touch support
  • Shows per-file page count and running total
  • Add more files or remove individual entries at any time

🗜️ Compress

Reduce file size by re-encoding embedded images at a selectable quality level. Text and vector graphics remain lossless.

Quality JPEG Level Best for
High 90% Archival — minimal visible change
Medium 75% Sharing — balanced quality and size
Low 50% Email — smallest file
  • Optionally strip metadata (author, dates, keywords)
  • Saves with PDF object-stream optimization for extra reduction
  • Result card shows original size → compressed size → savings

Tech Stack

Component Details
PDF manipulation pdf-lib v1.17.1 — create, modify, and serialize PDFs entirely in JavaScript
ZIP packaging JSZip v3.10.1 — bundle individual pages into a ZIP archive
File saving FileSaver.js v2.0.5 — trigger downloads from in-memory blobs
Fonts Inter (UI) + JetBrains Mono (page numbers, code)
Design system Custom CSS with design tokens — fluid type scale, 4px spacing, OKLCH color palette, light/dark mode

All libraries are loaded from CDN. No build step, no bundler, no dependencies to install.


Getting Started

# Clone the repo
git clone https://github.com/Okyumi/pdf-tool.git
cd pdf-tool

# Open in your browser — that's it
open index.html
# or
python3 -m http.server 8000   # then visit http://localhost:8000

No npm install. No build process. Just static files.


Project Structure

pdf-tool/
├── index.html      # Single-page app — all three tabs
├── base.css        # Design tokens, reset, light/dark mode variables
├── style.css       # Component styles, layout, responsive rules
├── app.js          # All application logic (split, merge, compress)
└── README.md

Privacy

Your files never leave your machine. All PDF parsing, image re-encoding, merging, and compression happen in the browser using JavaScript. There is no backend, no analytics, no tracking.


Browser Support

Works in all modern browsers that support:

  • FileReader API
  • <canvas> with toBlob()
  • ES2017 async / await
  • CSS custom properties

Tested in Chrome, Firefox, Safari, and Edge.


License

MIT

About

A fast, private, client-side PDF utility for splitting, merging, and compressing PDFs. No uploads, no servers — everything runs in your browser.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors