Skip to content
stemlenPublic

About

Professional document tools — merge, split, compress, convert, and edit PDFs entirely in your browser. 100% open source, fast, private, and completely free.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

📄 BloomPDF - All-in-One PDF Editor & Utility Suite

BloomPDF is a modern, fast, and feature-rich web application for editing, converting, organizing, optimizing, and securing PDF documents. Built with Next.js 15, React 19, and Tailwind CSS, it features client-side processing for ultimate privacy alongside powerful server-side API conversions.


✨ Features & Tools

📁 Organize PDF

  • Merge PDF: Combine multiple PDF files into a single seamless document with drag-and-drop reordering.
  • Split PDF: Divide PDFs by custom page ranges, extract every page separately, or split every $N$ pages.
  • Remove Pages: Easily delete unwanted pages from your document.
  • Extract Pages: Pull specific page ranges out into a new standalone PDF.
  • Organize PDF: Visual page management grid to reorder, rotate, and delete pages.
  • Scan to PDF: Convert scanned images (JPG, PNG, TIFF, BMP) into clean PDF documents.

⚡ Optimize & Intelligence

  • Compress PDF: Reduce file size while preserving document quality with custom compression levels.
  • Repair PDF: Structural analysis with live Health Score (0–100) measurements and client-side recovery.
  • OCR PDF: Client-side Optical Character Recognition using Tesseract.js (multilingual support, searchable PDF generation, and plain text extraction).

🔄 Convert to PDF

  • JPG / Image to PDF: Turn JPG, PNG, WEBP, and GIF images into formatted PDFs.
  • Word to PDF: Convert .docx and .doc files to PDF.
  • PowerPoint to PDF: Export .pptx and .ppt presentations into PDF slides.
  • Excel to PDF: Convert .xlsx and .xls spreadsheets into clean tabular PDFs.
  • HTML to PDF: Convert uploaded HTML files or web page URLs directly into PDF documents.
  • Markdown to PDF: Format .md text into styled PDF files with headings, tables, and code highlighting.
  • Text to PDF: Convert plain text documents (.txt) with custom font and layout controls.

🔄 Convert from PDF

  • PDF to JPG: Export PDF pages as high-quality JPG images or ZIP archives.
  • PDF to Word: Convert PDFs into editable .docx Word documents.
  • PDF to PowerPoint: Transform PDFs into editable .pptx presentation slides.
  • PDF to Excel: Extract PDF tables into editable .xlsx spreadsheets.
  • PDF to PDF/A: Standardize PDFs into PDF/A-1b, PDF/A-2b, or PDF/A-3b format for long-term archiving.

✏️ Edit & Annotate

  • Edit PDF: Full-featured interactive canvas editor to add text, images, shapes, and annotations.
  • Rotate PDF: Turn PDF pages 90°, 180°, or 270° (all pages, odd/even, or specific ranges).
  • Add Page Numbers: Custom header/footer page numbering with position and font styling.
  • Add Watermark: Apply text or image watermarks with customizable opacity, rotation, and positioning.
  • Crop PDF: Trim margins and crop custom sections from PDF pages.

🔒 Security & Forms

  • PDF Forms: Fill out fillable forms, insert electronic signatures, and manage interactive form fields.
  • Protect PDF: Secure PDFs with password encryption and access permissions.
  • Unlock PDF: Remove password protection from encrypted PDF files.

🛠️ Tech Stack

  • Framework: Next.js 15 (App Router), React 19, TypeScript
  • Styling & UI: Tailwind CSS, Radix UI Primitives, Lucide Icons, Framer Motion, Next Themes (Dark Mode support)
  • PDF Processing: pdf-lib, pdfjs-dist, @pdfsmaller/pdf-encrypt, cryptpdf
  • OCR & Document Engine: tesseract.js, libreoffice-convert, puppeteer, exceljs, marked
  • Drag & Drop: @dnd-kit/core, @dnd-kit/sortable

📁 Project Structure

.
├── public/                     # Favicons, logo, and static assets
├── src/
│   ├── app/                    # Next.js App Router pages and API routes
│   │   ├── api/                # Legacy route handlers, NOT deployed (static export) — see api/README.md
│   │   ├── tools/[slug]/       # Dynamic tool workspace pages
│   │   ├── globals.css         # Tailwind and global styles
│   │   ├── layout.tsx          # Main application layout & Theme Provider
│   │   └── page.tsx            # Dashboard / Homepage
│   ├── components/
│   │   ├── dashboard/          # Dashboard grid, tool cards, categories, recent/favorites
│   │   ├── layout/             # Sidebar, TopNav, MobileNav, Footer, ThemeToggle
│   │   ├── providers/          # React context providers
│   │   └── tools/              # Individual tool workspace & modal components
│   └── lib/
│       ├── hooks/              # Custom hooks (useFavorites, useRecent, useSearch)
│       ├── tools.ts            # Tool metadata configuration & registry
│       ├── categories.ts       # Category metadata definition
│       └── pdfRender.ts        # Core PDF utilities (rendering, page manipulation, etc.)
├── package.json
├── tailwind.config.ts
└── tsconfig.json

🚀 Getting Started

Prerequisites

  • Node.js: v18.x or v20.x+ recommended
  • npm / yarn / pnpm / bun
  • Word / PowerPoint / Excel / HTML to PDF need a conversion backend (planned: Gotenberg behind a Cloudflare Pages Function at POST /api/convert). Until it is deployed, leave NEXT_PUBLIC_CONVERT_ENABLED unset and those tools show a "temporarily unavailable" state. See .env.example and src/lib/convertApi.ts.

Installation

  1. Clone the repository:

    git clone https://github.com/stemlen/PDF-Editor.git
    cd PDF-Editor
  2. Install dependencies:

    npm install
  3. Run the development server:

    npm run dev
  4. Open in browser: Navigate to http://localhost:3000 to view the app.


📜 Available Scripts

In the project directory, you can run:

Command Description
npm run dev Starts the Next.js development server
npm run build Builds the static export into out/ (what Cloudflare Pages serves)
npx serve out Serves the static export locally for testing
npm run lint Runs ESLint to check for code quality and lint errors

🔒 Privacy & Security

BloomPDF prioritizes user privacy. Core tools (such as merging, splitting, rotating, annotating, page extraction, and client-side OCR) run directly inside your browser using WebAssembly and client-side JavaScript. Files processed locally never leave your device.


🤝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.


📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Professional document tools — merge, split, compress, convert, and edit PDFs entirely in your browser. 100% open source, fast, private, and completely free.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages