Skip to content

ashser004/PPDX-Reader

Repository files navigation

PPDX Reader

A fast, free, and lightweight offline document viewer for PDF, DOCX, PPTX, XLSX, and text files.

PPDX Reader is a desktop app built with PySide6 for quickly opening and navigating documents without cloud dependency. It supports first-run data root setup, multi-window document workflows, tabbed viewing, and automated Windows installer releases.

Features

  • Offline-first document viewing
  • Support for PDF, DOCX, PPTX, XLSX, and text files
  • Manual open support for common code files
  • Folder-based scanning with tabs: Recent, PDF, Word, PowerPoint, Excel, Folders
  • Standalone viewer navigation with Left and Right keys
  • Multi-tab document window for handling many files in one place
  • PPTX-to-PDF conversion queue for safer rapid navigation
  • Theme support: system, light, and dark
  • First-run storage location setup for local data control

Supported File Types

Scanned and categorized:

  • .pdf
  • .docx
  • .pptx
  • .xlsx

Openable manually:

  • Text: .txt, .md, .log
  • Code: .py, .java, .c, .cpp, .js, .ts, .h, .cs, .go, .rs

Tech Stack

  • Python
  • PySide6
  • PyMuPDF
  • python-pptx
  • python-docx
  • openpyxl
  • Pillow
  • pptxtopdf
  • pywin32

Run Locally (Development)

Prerequisites

  • Windows
  • Python 3.11 recommended
  • Microsoft PowerPoint installed (for COM-based PPTX conversion path)

Setup

  1. Create and activate a virtual environment.
  2. Install dependencies:
    pip install -r requirements.txt
  3. Run the app:
    python main.py

First-Run Data Location

On first launch, the app asks where app data should be stored. It creates an AshPPDX folder with:

  • Config
  • Logs
  • Cache
  • Runtime

A small pointer file is stored in Roaming AppData so the app can always find the selected data root.

Windows Build and Installer

PyInstaller Build Mode

This project uses --onedir (not --onefile).

Local Build

  1. Build app bundle:
    pyinstaller --noconfirm --clean --windowed --onedir --name "PPDX Reader" --icon "icon.ico" --add-data "icons;icons" main.py
  2. Build installer with Inno Setup:
    ISCC installer.iss

Expected installer output:

  • dist/AshPPDX_setup.exe

Installer Naming Rules

  • App name shown to users: PPDX Reader
  • Setup file name: AshPPDX_setup.exe
  • Installed folder under Programs: AshPPDX
  • Desktop shortcut name: PPDX Reader

GitHub Release Flow

Tag-driven release is configured using GitHub Actions.

  1. Commit and push your changes.
  2. Create and push a tag such as:
    git tag v1.1.3
    git push origin v1.1.3
  3. The workflow will:
    • Build Windows app with PyInstaller (--onedir)
    • Build AshPPDX_setup.exe with Inno Setup
    • Upload the installer to the GitHub Release for that tag

Workflow file:

  • .github/workflows/build-and-release.yml

License

This project is licensed under the Apache License 2.0.

  • See LICENSE for full legal terms.
  • See NOTICE for attribution and redistribution notice text.

Author

About

PPDX Reader is a fast, desktop-first document viewer for Windows built with PySide6, designed to open PDF, DOCX, PPTX, XLSX, text, and code files in a clean fullscreen experience with tabbed or standalone windows, smooth rendering, smart file browsing, and practical productivity features for everyday reading and review.

Topics

Resources

License

Stars

Watchers

Forks

Contributors