/pdf-tools-web

This project aims to provide a powerful web-based toolbox of different PDF-related features.

Primary LanguageTypeScriptMIT LicenseMIT

PDF Tools Logo showing a PDF file icon with a wrench

PDF Tools (Web)

This project aims to provide a powerful web-based toolbox of different PDF-related features.

Try or install PDF Tools here: https://pdf.wolke7.cloud.

Features

Merging PDF Files

Merge multiple PDF documents to one file.

There are different options for the outline of the merged file available:

  • Retain outline entries as one entry per file: The outlines of the original documents are retained. They are included as children of the corresponding top-level outline element, which is created for every file.
  • Retain outline entries: Simply retain the outline entries of the original documents, only adjusting the page/destination they point to, to account for the changed page numbering.
  • Create one outline entry per file: Create a single outline entry for each of the documents, using the file name as a title.
  • Don't create an outline: Don't create any outline for the merged PDF file.

Reordering PDF Pages

Visually reorder the pages of a PDF file.

Gif of visual reordering feature

Extract Text

Extract and view or copy the text content of a PDF file, or individual pages.

Gif of text extraction feature

Automatically Crop PDF

Crop PDF pages automatically to their content.

Gif of auto-crop feature

Offline Use

The web app hosted at https://pdf.wolke7.cloud is a progressive web app (PWA). You can use it offline (after first visit) and even install it to have it easily available.

Screenshots

Screenshot of user interface in light mode Screenshot of user interface in dark mode

Screenshot of user interface in light mode

Project Structure

This project uses Typescript. The Web App (PWA) is implemented using Next.JS (React) and Tailwind CSS.

The main PDF merging and outline processing work is done in the following files: lib/pdf-outline-helper.ts and components/PDFMagic.tsx.

This project makes heavy use of the pdf-lib JavaScript library for PDF manipulation. See also https://pdf-lib.js.org, https://github.com/Hopding/pdf-lib and its fork used in this project: https://github.com/cantoo-scribe/pdf-lib.