Skip to content

Latest commit

 

History

History
297 lines (241 loc) · 14.1 KB

File metadata and controls

297 lines (241 loc) · 14.1 KB

PDFApps

PDF editor and manager for Windows, macOS and Linux — fast, offline and subscription-free.

PDFApps Icon

PDFApps main viewer

Microsoft Store

Release Downloads Build Stars Python PySide6 Platform License GitHub Sponsors


Why PDFApps?

Most PDF tools are either paid, browser-based, or require uploading your files to the cloud. PDFApps is different:

  • 100% offline — your files never leave your computer
  • No subscriptions — free and open source, forever
  • All-in-one — 15 tools: split, merge, compress, encrypt, OCR, convert, edit, page numbers, N-up and more
  • Cross-platform — works on Windows, macOS and Linux
  • Fast — lazy rendering opens large PDFs instantly
  • Multi-language — 8 interface languages (EN, PT, ES, FR, DE, ZH, IT, NL)

Features

Tool Description
Split Split the PDF into multiple files by user-defined page ranges
Merge Combine multiple PDFs (drag and drop) into a single output, with free ordering
Rotate Rotate individual pages or the entire document at any angle
Extract pages Export a subset of pages to a new PDF
Reorder Drag-and-drop interface to reorder or remove pages with preview
Compress Reduce file size with three compression levels (extreme / recommended / low)
Encrypt Protect the PDF with a password or remove existing protection
Watermark Overlay a watermark/stamp PDF on pages with opacity and position control
OCR Recognise text in scanned PDFs — 5 language packs bundled (PT, EN, ES, FR, DE), works with any of Tesseract's 100+ languages if installed separately
Convert Export PDF to DOCX, PPTX, XLSX, HTML, EPUB, TXT, PNG or JPG (with DPI control)
Page numbers Add page numbering (header/footer) with format, position and font control
N-Up Arrange multiple pages per sheet (2, 4, 6, 9, 16-up) with custom layout
Edit Inline visual editor: redact, insert text, image, signature, highlight, notes, forms and edit existing text
Import Convert DOCX, PPTX, XLSX, HTML, EPUB, TXT, Markdown or images (PNG/JPG/BMP) to PDF — batch support
Info Show metadata, page count, size and document properties

Integrated viewer

  • Print — print any open PDF via system print dialog with high-resolution rendering
  • Bookmarks / TOC — clickable side panel with the PDF outline (chapters, sections); jumps to any heading
  • Night reading mode — invert PDF colors (white→dark, dark→light) for comfortable reading at night, independent from the app theme
  • Presentation mode (F5) — fullscreen slideshow with keyboard navigation (arrows, Space, PgUp/PgDn, Home/End)
  • Fullscreen (F11) — distraction-free viewing with hidden toolbars
  • Tabbed viewing — open multiple PDFs in tabs, switch between them
  • Continuous scroll through all pages (Adobe Acrobat style)
  • Lazy rendering — opens instantly; pages rendered in background as they are viewed
  • PDF search (Ctrl+F) — search bar with live highlights and navigation between matches
  • Zoom with Ctrl+scroll or toolbar buttons
  • Page navigation — jump to any page via input field or prev/next buttons
  • Text selection and copy by dragging
  • Comment popups — view and delete annotations with pencil icons and balloon popups
  • Password-protected PDF support
  • Drag & drop — drop a PDF anywhere in the window to open it

Editor

  • Continuous scroll — all pages visible at once, scroll through the entire document
  • Signature — draw, type (cursive fonts), or import an image signature; save for reuse; drag to place on PDF
  • Undo/Redo — Ctrl+Z / Ctrl+Y with full action history
  • Color picker — choose any color for text, highlights, redactions and drawings
  • Redact, insert text, images, highlights, notes, forms and edit existing text

Other highlights

  • Pipeline mode — apply multiple tools in sequence (e.g. rotate then compress) and save only at the end with Ctrl+S
  • Auto-update — checks for new versions on startup; download and install updates in-app with progress bar
  • Multi-language — auto-detects system language (EN, PT, ES, FR, DE, ZH, IT, NL), with selector in toolbar; auto-restarts on change
  • Localized installer — installer and uninstaller detect the OS language and display in the user's language
  • Recent files — quick access to the last 10 opened PDFs via history icon
  • Help guide — ? button opens the online user guide
  • Accessibility — screen reader support (accessible names on all buttons), visible focus indicators, keyboard-navigable UI
  • Modern dark/light theme with toggle sidebar
  • Full drag and drop support across all file fields
  • Cross-platform: Windows, macOS and Linux
  • Installer with automatic OCR engine (Tesseract) and Ghostscript detection and installation

Getting started

Download

Platform How to get it
Windows 10/11 (Store) Get it on the Microsoft Store — auto-updates handled by Windows
Windows 10/11 (direct) winget install nelsonduarte.PDFApps, or download PDFAppsSetup.exe from Releases
macOS 10.14+ Download PDFApps-macOS.dmg from Releases, mount, and drag PDFApps.app to Applications — Tesseract via brew install tesseract tesseract-lang
Ubuntu / Debian / Snap sudo snap install pdfapps
Fedora sudo dnf copr enable nelsonduarte2809/pdfapps && sudo dnf install pdfapps
Arch / Manjaro yay -S pdfapps (source) or yay -S pdfapps-bin (binary)
Any Linux Download the latest PDFApps-*-x86_64.AppImage from Releases, chmod +x and run

Run from source

# Clone the repository
git clone https://github.com/nelsonduarte/PDFApps.git
cd PDFApps

# Create virtual environment
python -m venv venv

# Activate — Windows
venv\Scripts\activate
# Activate — macOS / Linux
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Run
python pdfapps.py

Tesseract OCR is required for text recognition:

  • Windows: the installer handles this automatically
  • macOS: brew install tesseract tesseract-lang
  • Linux: sudo apt install tesseract-ocr tesseract-ocr-por tesseract-ocr-eng

Build

The build process generates three executables in the dist/ folder:

# 1. Main application
python -m PyInstaller --clean pdfapps.spec

# 2. Uninstaller
python -m PyInstaller --clean uninstaller.spec

# 3. Installer (bundles the two above)
python -m PyInstaller --clean installer.spec
File Description
dist/PDFApps.exe Main application (~93 MB)
dist/PDFAppsUninstall.exe Standalone uninstaller (~13 MB)
dist/PDFAppsSetup.exe Installer for distribution (~113 MB)

PyInstaller does not cross-compile — the binary must be built on the target platform.


Tech stack

Component Technology Version
GUI PySide6 (Qt 6) 6.10.2
PDF rendering PyMuPDF (fitz) 1.27.2
PDF manipulation pypdf 6.8.0
OCR Tesseract + pytesseract 0.3.13
DOCX export python-docx 1.2.0
Image processing Pillow 12.1.1
Icons QtAwesome 1.4.1
Packaging PyInstaller 6.19.0

Project structure

PDFApps/
├── pdfapps.py              # Application entry point
├── installer.py            # Installer (tkinter UI, 8 languages)
├── uninstaller.py          # Uninstaller (8 languages)
├── pdfapps.spec            # PyInstaller config — app
├── installer.spec          # PyInstaller config — installer
├── uninstaller.spec        # PyInstaller config — uninstaller
├── icon.ico                # Application icon (multi-size, square)
├── icon_512.png            # Source icon (512x512 PNG)
├── pdfapps.svg             # Logo SVG (used in sidebar/viewer)
├── requirements.txt        # Python dependencies
├── docs/                   # Static site published at pdf-apps.com (Cloudflare Pages)
│   ├── index.html          # Landing page
│   ├── features.html       # Feature gallery
│   ├── download.html       # Per-platform install options
│   ├── docs.html           # User guide
│   ├── changelog.html      # Release notes
│   ├── privacy.html        # Privacy policy
│   ├── styles.css          # Shared theme (dark + light)
│   ├── icon.png            # App icon for website
│   └── favicon.ico         # Browser favicon
├── msix/                   # Microsoft Store packaging (manifest, assets, build.ps1)
├── flatpak/                # Flatpak / AppStream metainfo + .desktop file
├── snap/                   # Snap Store package definition
├── aur/                    # AUR PKGBUILDs (pdfapps source build + pdfapps-bin binary)
├── rpm/                    # Fedora Copr .spec file
├── winget/                 # Microsoft winget manifest
├── app/                    # Modular source code
│   ├── constants.py        # Colours and design constants
│   ├── styles.py           # Qt stylesheet (dark/light theme)
│   ├── utils.py            # Shared utilities
│   ├── widgets.py          # Reusable widgets (DropFileEdit, etc.)
│   ├── base.py             # Base class for tools (BasePage)
│   ├── i18n.py             # Internationalization module (8 languages)
│   ├── translations.json   # All translated UI strings
│   ├── updater.py          # Auto-updater (GitHub releases)
│   ├── window.py           # Main window (MainWindow)
│   ├── tools/              # PDF manipulation tools
│   │   ├── split.py
│   │   ├── merge.py
│   │   ├── rotate.py
│   │   ├── extract.py
│   │   ├── reorder.py
│   │   ├── compress.py
│   │   ├── encrypt.py
│   │   ├── watermark.py
│   │   ├── convert.py
│   │   ├── import_pdf.py
│   │   ├── info.py
│   │   └── ocr.py
│   ├── viewer/             # Integrated PDF viewer
│   │   ├── canvas.py       # Lazy page rendering in background threads (fitz)
│   │   ├── panel.py        # Viewer panel with controls
│   │   └── presentation.py # Fullscreen presentation mode (F5)
│   └── editor/             # Visual PDF editor
│       ├── canvas.py       # Edit canvas (PdfEditCanvas)
│       ├── tab.py          # Edit tab (TabEditar)
│       └── dialogs.py      # Auxiliary dialogs
└── dist/                   # Generated executables (after build)

Keyboard shortcuts

Shortcut Action
Ctrl+O Open PDF (multi-select)
Ctrl+S Save / apply active tool
Ctrl+P Print current PDF
Ctrl+W Close current tab
Ctrl+F Search text in PDF
Ctrl+Z Undo (editor)
Ctrl+Y Redo (editor)
Ctrl+Scroll Zoom in/out
Ctrl+1–9 Open tool 1–9
Ctrl+Shift+1–6 Open tool 10–15
PgUp / PgDn Previous / next page
F5 Start presentation mode
F11 Toggle fullscreen
Escape Exit presentation / close search

Contributing

Contributions are welcome! See CONTRIBUTING.md for the full developer guide — architecture, modules, functions, and how to add new tools.


Support the project

PDFApps is free, open source, and built by a solo developer. If you or your company find it useful, sponsoring on GitHub or funding on Polar helps keep it maintained.

Sponsor on GitHub Fund on Polar

License

This project is licensed under the MIT License.