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.
- 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
Scanned and categorized:
.pdf.docx.pptx.xlsx
Openable manually:
- Text:
.txt,.md,.log - Code:
.py,.java,.c,.cpp,.js,.ts,.h,.cs,.go,.rs
- Python
- PySide6
- PyMuPDF
- python-pptx
- python-docx
- openpyxl
- Pillow
- pptxtopdf
- pywin32
- Windows
- Python 3.11 recommended
- Microsoft PowerPoint installed (for COM-based PPTX conversion path)
- Create and activate a virtual environment.
- Install dependencies:
pip install -r requirements.txt
- Run the app:
python main.py
On first launch, the app asks where app data should be stored. It creates an AshPPDX folder with:
ConfigLogsCacheRuntime
A small pointer file is stored in Roaming AppData so the app can always find the selected data root.
This project uses --onedir (not --onefile).
- Build app bundle:
pyinstaller --noconfirm --clean --windowed --onedir --name "PPDX Reader" --icon "icon.ico" --add-data "icons;icons" main.py
- Build installer with Inno Setup:
ISCC installer.iss
Expected installer output:
dist/AshPPDX_setup.exe
- App name shown to users:
PPDX Reader - Setup file name:
AshPPDX_setup.exe - Installed folder under Programs:
AshPPDX - Desktop shortcut name:
PPDX Reader
Tag-driven release is configured using GitHub Actions.
- Commit and push your changes.
- Create and push a tag such as:
git tag v1.1.3 git push origin v1.1.3
- The workflow will:
- Build Windows app with PyInstaller (
--onedir) - Build
AshPPDX_setup.exewith Inno Setup - Upload the installer to the GitHub Release for that tag
- Build Windows app with PyInstaller (
Workflow file:
.github/workflows/build-and-release.yml
This project is licensed under the Apache License 2.0.
- See
LICENSEfor full legal terms. - See
NOTICEfor attribution and redistribution notice text.
- Ashmith
- Repository: https://github.com/ashser004/PPDX-Reader.git