PDF editor and manager for Windows, macOS and Linux — fast, offline and subscription-free.
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 — auto-detects your system language (EN, PT, ES, FR, DE, ZH, IT, NL)
| 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) |
| 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 text files (.txt), images (PNG/JPG/BMP) or Markdown (.md) to PDF — batch support |
| Info | Show metadata, page count, size and document properties |
- 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
- 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
- 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
| 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.dmg from Releases, mount, and drag PDFApps.app to Applications — Tesseract via brew install tesseract tesseract-lang |
# 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.pyTesseract 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
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.
| 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 |
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)
| 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 |
Contributions are welcome! See CONTRIBUTING.md for the full developer guide — architecture, modules, functions, and how to add new tools.
PDFApps is free, open source and built by a solo developer. If you or your company find it useful, sponsoring helps keep it maintained and growing.
Why sponsor?
- Ensure long-term maintenance and new features
- Get your logo in the README and website (Gold tier)
- Support privacy-first, offline software
Your company here — become a Gold sponsor
Be the first backer — sponsor on GitHub or fund on Polar
This project is licensed under the MIT License.