Skip to content

Latest commit

 

History

History
298 lines (232 loc) · 14.2 KB

File metadata and controls

298 lines (232 loc) · 14.2 KB

PDFApps

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

PDFApps Icon

PDFApps

Release Downloads Build Stars Python PySide6 Platform License GitHub Sponsors Hypercommit


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 — 13 tools: split, merge, compress, encrypt, OCR, convert, edit and more in a single app
  • Cross-platform — works on Windows, macOS and Linux
  • Fast — lazy rendering opens large PDFs instantly
  • Multi-language — auto-detects your system language (EN, PT, ES, FR, DE, ZH, IT, NL)

Screenshots

Viewer Light Theme
PDF Viewer — dark theme PDF Viewer — light theme
Editor Languages
Visual editor — redact, text, images, highlights 8 languages with auto-detection
Convert Encrypt
Convert PDF to PNG, JPG, DOCX, TXT Encrypt / decrypt PDFs
Import OCR
Import TXT, images, Markdown to PDF OCR text recognition

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 — supports PT, EN, ES, FR and DE
Convert Convert PDF to images (PNG/JPG with DPI control), Word (DOCX) or plain text (TXT)
Edit Inline visual editor: redact, insert text, image, signature, highlight, notes, forms and edit existing text
Import Convert text files (.txt), images (PNG/JPG/BMP) or Markdown (.md) 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
  • Redact, insert text, images, highlights, notes, forms and edit existing text

Other highlights

  • 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
  • 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
  • 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 64-bit Download PDFAppsSetup.exe from Releases, or winget install nelsonduarte.PDFApps (after winget review)
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 PDFApps-1.8.3-x86_64.AppImage from Releases, chmod +x and run
macOS 10.14+ Download PDFApps-macOS.zip from Releases — Tesseract via brew install tesseract tesseract-lang

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 (~82 MB)
dist/PDFAppsUninstall.exe Standalone uninstaller (~11 MB)
dist/PDFAppsSetup.exe Installer for distribution (~104 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/                   # GitHub Pages website
│   ├── index.html          # Single-page site with JS-based i18n
│   ├── icon.png            # App icon for website
│   └── favicon.ico         # Browser favicon
├── 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
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

If you find PDFApps useful, consider sponsoring the project to help keep it alive and growing.

Sponsor on GitHub

Sponsors

Gold sponsors

Be the first Gold sponsor — become one

Backers

Be the first Backer — become one

Supporters

Be the first Supporter — become one


License

This project is licensed under the MIT License.