In Progress

PDF Tools

A collection of browser-based PDF utilities - merge, split, resize, rotate, watermark, convert images, and convert PowerPoint files to PDF

ReactTypeScriptpdf-libPDF.jsdnd-kitFastAPILibreOfficeClient-Side

Overview

A collection of three PDF tools, each purpose-built for a different task. The main PDF multitool and image converter run entirely in your browser with no server involved. The PowerPoint converter sends files to a backend service that uses LibreOffice for accurate rendering.


Tool 1: PDF Multitool

A flexible PDF processor built around the concept of output buckets. You load PDF files into buckets, configure options per bucket, and process everything at once. Each bucket produces one or more output files.

Output Modes

  • Merge PDFs: Combine all files in a bucket into a single output document
  • Split Pages: Output each page as its own individual PDF file
  • Extract Text: Pull the embedded text layer from PDFs into a downloadable text file
  • Output Password: Password-protect any output PDF (applies to both merged and split outputs)

Per-Bucket Settings

  • Resize Width: Scale all pages to a target width in points, preserving aspect ratio
  • Watermark: Overlay text on every page, with configurable font size, opacity, rotation angle, and color
  • Metadata: Set title, author, subject, and keywords on the output PDF

Per-Page Overrides (via Page Viewer)

Every page in a bucket can be individually controlled. Open the page viewer modal to:

  • Rotate: Rotate individual pages by 90, 180, or 270 degrees
  • Resize: Override the bucket-level resize width for specific pages
  • Watermark: Apply a different watermark to specific pages, or suppress the bucket-level watermark entirely

Per-page settings take priority over bucket-level settings. Pages without overrides fall back to the bucket default.

File Management

  • Drag and drop to reorder PDFs within and across buckets
  • Specify page ranges per file (e.g., "1-3, 5, 7-9")
  • Duplicate a card to reuse the same file with a different page range or in a different bucket
  • Multiple buckets let you produce several distinct outputs in a single processing pass

Tool 2: Images to PDF

Combine multiple images into a single PDF. Each image becomes one page. Supports JPEG, PNG, WebP, GIF, BMP, and AVIF. Drag to reorder before converting. Page size can be set to fit the image dimensions or a standard size (A4, Letter, etc.).

Like the PDF multitool, all processing happens in the browser - files are never uploaded anywhere.


Tool 3: PowerPoint to PDF

Convert PPT and PPTX files to PDF using LibreOffice running on a backend server. LibreOffice produces more faithful output than browser-based alternatives, preserving layout, fonts, and formatting more reliably.

Files are uploaded to the backend, converted, and the resulting PDF is returned for download. Supports batch conversion with per-file status tracking. File size is limited to 32 MB per file due to infrastructure constraints.


Technologies

Layer Stack
Frontend React 19, TypeScript, Next.js 15, Tailwind CSS
PDF manipulation @cantoo/pdf-lib (manipulation, encryption, metadata)
PDF rendering PDF.js (thumbnails, text extraction)
Drag and drop @dnd-kit/core, @dnd-kit/sortable
File input react-dropzone
Backend (PPTX) FastAPI, LibreOffice headless, Docker

Planned Enhancements

  • PDF compression
  • OCR support for scanned documents