Skip to content

RJGhugo/bentopdf

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

BentoPDF


BentoPDF is a powerful, privacy-first, client-side PDF toolkit that is self hostable and allows you to manipulate, edit, merge, and process PDF files directly in your browser. No server-side processing is required, ensuring your files remain secure and private.

Docker Pulls Ko-fi GitHub Stars Sponsor me on GitHub

BentoPDF Tools


⭐ Stargazers over time

Star History Chart


✨ Why BentoPDF?

  • Privacy First: All processing happens in your browser. Your files are never uploaded to a server, guaranteeing 100% privacy.
  • No Limits: Manipulate as many files as you want, as often you want. There are no restrictions or upload limits.
  • High Performance: Built with modern web technologies, BentoPDF is fast and efficient, handling even large PDF files with ease.
  • Completely Free: BentoPDF is a free and open-source tool for everyone.

πŸ› οΈ Features / Tools Supported

BentoPDF offers a comprehensive suite of tools to handle all your PDF needs.

Organize & Manage PDFs

Tool Name Description
Merge PDFs Combine multiple PDF files into one.
Split PDFs Extract specific pages or divide a document into smaller files.
Organize Pages Reorder, duplicate, or delete pages with a simple drag-and-drop interface.
Extract Pages Save a specific range of pages as a new PDF.
Delete Pages Remove unwanted pages from your document.
Rotate PDF Rotate individual or all pages in a document.
N-Up PDF Combine multiple pages onto a single page.
View PDF A powerful, integrated PDF viewer.
Alternate & Mix pages Merge pages by alternating pages from each PDF.
Posterize PDF Split a PDF into multiple smaller pages for print.
PDF Multi Tool Merge, Split, Organize, Delete, Rotate, Add Blank Pages, Extract and Duplicate in an unified interface.
Add Attachments Embed one or more files into your PDF.
Extract Attachments Extract all embedded files from PDF(s) as a ZIP.
Edit Attachments View or remove attachments in your PDF.
Divide Pages Divide pages horizontally or vertically.
Combine to Single Page Stitch all pages into one continuous scroll.
Add Blank Page Insert an empty page anywhere in your PDF.
Reverse Pages Flip the order of all pages in your document.
View Metadata Inspect the hidden properties of your PDF.
PDFs to ZIP Package multiple PDF files into a ZIP archive.
Compare PDFs Compare two PDFs side by side.

Edit & Modify PDFs

Tool Name Description
PDF Editor A comprehensive editor to modify your PDFs.
Add Page Numbers Easily add page numbers with customizable formatting.
Add Watermark Add text or image watermarks to protect your documents.
Header & Footer Add customizable headers and footers.
Crop PDF Crop specific pages or the entire document.
Invert Colors Invert the colors of your PDF pages for better readability.
Change Background Modify the background color of your PDF.
Change Text Color Change the color of text content within the PDF.
Fill Forms Fill out PDF forms directly in your browser.
Flatten PDF Flatten form fields and annotations into static content.
Remove Annotations Remove comments, highlights, and other annotations.
Remove Blank Pages Auto detect and remove blank pages in a PDF.
Edit Bookmarks Add, Edit, Create, Import and Export PDF Bookmarks.
Add Stamps Add image stamps to your PDF using the annotation toolbar.
Table of Contents Generate a table of contents page from PDF bookmarks.
Redact Content Permanently remove sensitive content from your PDFs.

Convert to PDF

Tool Name Description
Image to PDF Convert JPG, PNG, WebP, SVG, BMP, HEIC, and TIFF images to PDF.
JPG to PDF Convert JPG images to PDF.
PNG to PDF Convert PNG images to PDF.
WebP to PDF Convert WebP images to PDF.
SVG to PDF Convert SVG images to PDF.
BMP to PDF Convert BMP images to PDF.
HEIC to PDF Convert HEIC images to PDF.
TIFF to PDF Convert TIFF images to PDF.
Markdown to PDF Convert .md files into professional PDF documents.
Text to PDF Convert plain text files into a PDF.
JSON to PDF Convert JSON to PDF.

Convert from PDF

Tool Name Description
PDF to Image Convert PDF pages to JPG, PNG, WebP, BMP, or TIFF formats.
PDF to JPG Convert each PDF page into a JPG image.
PDF to PNG Convert each PDF page into a PNG image.
PDF to WebP Convert each PDF page into a WebP image.
PDF to BMP Convert each PDF page into a BMP image.
PDF to TIFF Convert each PDF page into a TIFF image.
PDF to Greyscale Convert a color PDF into a black-and-white version.
OCR PDF Make scanned PDFs searchable and copyable using Optical Character Recognition.
PDF to JSON Convert PDF files to JSON format.

Secure & Optimize PDFs

Tool Name Description
Compress PDF Reduce file size while maintaining quality.
Repair PDF Attempt to repair and recover data from a corrupted PDF.
Encrypt PDF Add a password to protect your PDF from unauthorized access.
Decrypt PDF Remove password protection from a PDF (password required).
Change Permissions Set or modify user permissions for printing, copying, and editing.
Sign PDF Add your digital signature to a document.
Redact Content Permanently remove sensitive content from your PDFs.
Edit Metadata View and modify PDF metadata (author, title, keywords, etc.).
Remove Metadata Strip all metadata from your PDF for privacy.
Linearize PDF Optimize PDF for fast web view.
Sanitize PDF Remove potentially unwanted or malicous files from PDF.
Fix Page Size Standardize all pages to a uniform size.
Page Dimensions Analyze page size, orientation, and units.
Remove Restrictions Remove password protection and security restrictions associated with digitally signed PDF files.

πŸš€ Getting Started

You can run BentoPDF locally for development or personal use.

Prerequisites

πŸš€ Quick Start with Docker

Deploy on Zeabur

You can run BentoPDF directly from Docker Hub or GitHub Container Registry without cloning the repository:

You can also watch the video on how to set it up πŸ‘‰ BentoPDF Docker Setup

Using Docker Hub:

docker run -p 3000:8080 bentopdf/bentopdf:latest

Using GitHub Container Registry:

docker run -p 3000:8080 ghcr.io/alam00000/bentopdf:latest

Open your browser at: http://localhost:3000

This is the fastest way to try BentoPDF without setting up a development environment.

🏠 Self-Hosting

Since BentoPDF is fully client-side, all processing happens in the user's browser and no server-side processing is required. This means you can host BentoPDF as simple static files on any web server or hosting platform.

Download from Releases (Recommended):

The easiest way to self-host is to download the pre-built distribution file from our GitHub releases. Each release includes a dist-{version}.zip file that contains all necessary files for self-hosting.

  1. Go to BentoPDF Releases
  2. Download the latest dist-{version}.zip file
  3. Extract the zip file
  4. Serve the extracted folder with your preferred web server

Navigate to the extracted Folder:

# Navigate to the extracted folder
cd dist-1.7.3  # Replace with your version

Serve with Python:

# For Python 3
python -m http.server 8000

The website can be accessible at: http://[::1]:8000/

Serve with Node.js:

# Install a simple server
npx serve .

# Or if you have serve installed globally
npm install -g serve
serve .

The website can be accessible at: http://localhost:3000/

Serve with other tools:

You can also use other static file servers like:

  • Go: go run main.go with a simple Go server
  • PHP: php -S localhost:8000
  • Ruby: ruby -run -e httpd . -p 8000

The website can be accessible at:

  • Go: http://localhost:8080/ (default) or as specified
  • PHP: http://localhost:8000/
  • Ruby: http://localhost:8000/ (default port can be changed)

Simply serve the extracted folder using any static file server, and BentoPDF will work completely client-side without any server-side dependencies.

Build from Source (Advanced):

If you prefer to build from source:

# Clone the repository
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf

# Install dependencies
npm install

# Build the project
npm run build

# Package the distribution for hosting (optional)
npm run package

# Serve the dist folder
npx serve dist

The website can be accessible at: http://localhost:3000/

The npm run package command creates a dist-{version}.zip file that you can use for self-hosting.

πŸš€ Run with Docker Compose (Recommended)

For a more robust setup with auto-restart capabilities:

  1. Download the repo and create a docker-compose.yml file or use the one given in repo:
services:
  bentopdf:
    image: bentopdf/bentopdf:latest
    container_name: bentopdf
    ports:
      - '3000:8080'
    restart: unless-stopped
  1. Start the application:
docker-compose up -d

The application will be available at http://localhost:3000.

🏒 Simple Mode for Internal Use

For organizations that want a clean, distraction-free interface focused solely on PDF tools, BentoPDF supports a Simple Mode that hides all branding and marketing content.

What Simple Mode does:

  • Hides navigation, hero section, features, FAQ, testimonials, and footer
  • Shows only the essential PDF tools
  • Updates page title to "PDF Tools"
  • Perfect for internal company tools and educational institutions

For more details, see SIMPLE_MODE.md.

πŸ”’ Security Features

BentoPDF runs as a non-root user using nginx-unprivileged for enhanced security:

  • Non-Root Execution: Container runs with minimal privileges using nginx-unprivileged
  • Port 8080: Uses high port number to avoid requiring root privileges
  • Security Best Practices: Follows Principle of Least Privilege

Basic Usage

docker build -t bentopdf .
docker run -p 8080:8080 bentopdf

For detailed security configuration, see SECURITY.md.

πŸ“¦ Version Management

BentoPDF supports semantic versioning with multiple Docker tags available on both Docker Hub and GitHub Container Registry:

Docker Hub:

  • Latest: bentopdf/bentopdf:latest
  • Specific Version: bentopdf/bentopdf:1.0.0
  • Version with Prefix: bentopdf/bentopdf:v1.0.0

GitHub Container Registry:

  • Latest: ghcr.io/alam00000/bentopdf:latest
  • Specific Version: ghcr.io/alam00000/bentopdf:1.0.0
  • Version with Prefix: ghcr.io/alam00000/bentopdf:v1.0.0

Quick Release

# Release a patch version (0.0.1 β†’ 0.0.2)
npm run release

# Release a minor version (0.0.1 β†’ 0.1.0)
npm run release:minor

# Release a major version (0.0.1 β†’ 1.0.0)
npm run release:major

For detailed release instructions, see RELEASE.md.

πŸš€ Development Setup

Option 1: Run with npm

  1. Clone the Repository:

    git clone https://github.com/alam00000/bentopdf.git
    cd bentopdf
  2. Install Dependencies:

    npm install
  3. Run the Development Server:

    npm run dev

    The application will be available at http://localhost:5173.

Option 2: Build and Run with Docker Compose

  1. Clone the Repository:

    git clone https://github.com/alam00000/bentopdf.git
    cd bentopdf
  2. Run with Docker Compose:

    docker-compose -f docker-compose.dev.yml up -d

    The application will be available at http://localhost:3000.

    Note: After making any local changes to the code, rebuild the Docker image using:

    docker-compose -f docker-compose.dev.yml up --build -d

    This ensures your latest changes are applied inside the container.


πŸ› οΈ Tech Stack & Background

BentoPDF was originally built using HTML, CSS, and vanilla JavaScript. As the project grew, it was migrated to a modern stack for better maintainability and scalability:

  • Vite: A fast build tool for modern web development.
  • TypeScript: For type safety and an improved developer experience.
  • Tailwind CSS: For rapid and consistent UI development.

Note: Some parts of the codebase still use legacy structures from the original implementation. Contributors should expect gradual updates as testing and refactoring continue.


πŸ—ΊοΈ Roadmap

Planned Features:

  • HTML to PDF: Convert HTML files or web pages into PDF documents.
  • Markdown to PDF: Enhanced support for converting .md files to PDF.
  • Convert to PDF/A: Convert PDFs to the PDF/A archival format.
  • Edit PDF Content: Directly edit text and other content within your PDF.
  • PDF to Office: Converts PDF files into editable Word, Excel, and PowerPoint formats.
  • Office to PDF: Converts Word, Excel, and PowerPoint documents into optimized PDFs.

Contributions and discussions on the roadmap are welcome! Join the conversation via Discord.


🀝 Contributing

We welcome contributions from the community! Here's how you can get started:

  1. Fork the repository and create your branch from main.
  2. Follow the Getting Started steps to set up your local environment.
  3. Make your changes and commit them with a clear message.
  4. Open a Pull Request and describe the changes you've made.

Have an idea for a new tool or an improvement? Open an issue to discuss it first.


Special Thanks

BentoPDF wouldn't be possible without the amazing open-source tools and libraries that power it. We'd like to extend our heartfelt thanks to the creators and maintainers of:

  • PDFLib.js – For enabling powerful client-side PDF manipulation.
  • PDF.js – For the robust PDF rendering engine in the browser.
  • PDFKit – For creating and editing PDFs with ease.
  • EmbedPDF – For seamless PDF editing in pure JS.
  • Cropper.js – For intuitive image cropping functionality.
  • Vite – For lightning-fast development and build tooling.
  • Tailwind CSS – For rapid, flexible, and beautiful UI styling.
  • qpdf and qpdf-wasm– A powerful command-line tool and library for inspecting, repairing, and transforming PDF file ported to wasm
  • cpdf – For content preserving pdf operations.

Your work inspires and empowers developers everywhere. Thank you for making open-source amazing!

πŸ“œ License

This project is licensed under the GNU AGPLv3. See the LICENSE file for details.

About

A Privacy First PDF Toolkit

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 61.1%
  • Fluent 27.3%
  • TypeScript 5.0%
  • CSS 4.4%
  • HTML 2.2%