A PDF reader desktop app
Project description
Book-Reading-GUI-app
Read da Book
A lightweight PDF reader desktop app built with Python and CustomTkinter. Supports adding PDFs from your local machine or directly from a URL, with lazy rendering for smooth performance on large documents.
Features
- 📂 Add PDFs from your local file system
- 🌐 Add PDFs directly from a URL
- 🔍 Zoom in and out while staying on the current page
- ⬅️ ➡️ Navigate pages with previous/next buttons or by typing a page number
- 💾 Automatically saves and restores your reading progress per book
- ⚡ Lazy rendering — only renders pages near the visible area for smooth scrolling on large documents
- 🗂️ Persistent library — your added PDFs are saved and restored on every startup
Installation
pip install pdfreading-app
Then launch it from anywhere with:
pdfreading-app
Adding PDFs via URL
You can load a PDF directly from the internet by clicking the From URL button and pasting a link.
What works
- Direct links to
.pdffiles hosted on open servers (e.g. university sites, government sites, open-access repositories) - URLs that end with
.pdfand don't require login or authentication - Examples:
https://pdfobject.com/pdf/sample.pdf
What doesn't work
- Sites that block programmatic downloads (403 Forbidden) — this is a server-side restriction that cannot be bypassed. Common examples include file-sharing sites, academic paywalls, and sites that require you to click through a page before downloading.
- Links that redirect to a download page instead of the PDF file directly
- PDFs behind a login or authentication wall
- Google Drive, Dropbox, or similar cloud storage share links
Tip
If a URL gives you a 403 Access Denied error, just download the PDF manually in your browser and use the Add PDF button instead.
Requirements
- Python 3.9+
- Windows, macOS, or Linux
Dependencies are installed automatically:
- PyMuPDF — PDF rendering
- Pillow — image handling
- CustomTkinter — modern UI
Linux / macOS users: Tkinter does not come pre-installed on all systems. If you get a
No module named 'tkinter'error, install it manually:Ubuntu / Debian:
sudo apt install python3-tkFedora:
sudo dnf install python3-tkintermacOS (Homebrew):
brew install python-tk
Run from source
# Clone the repo
git clone https://github.com/Vannphreak-Choup/Book-Reading-GUI-app.git
cd Book-Reading-GUI-app
# Create and activate a virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS / Linux
# Install in editable mode
pip install -e .
# Run
python -m pdfreading.main
Project Structure
src/
└── pdfreading/
├── main.py # entry point
├── assets/ # icons and images
├── openDialog/ # file and URL dialogs
│ ├── AddFile.py
│ └── Addurl.py
└── utils/
├── Data.py # shared app state
├── UI.py # UI layout
└── functionality.py # core logic
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pdfreading_app-0.1.8.tar.gz.
File metadata
- Download URL: pdfreading_app-0.1.8.tar.gz
- Upload date:
- Size: 59.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4c5bd7f92528b91852c4e9ad554ec6589503be9ffe227bc3c71ad0b690b26ab
|
|
| MD5 |
d32917b8bb7891e4999e55d2bdbff9b3
|
|
| BLAKE2b-256 |
9e1c7a5f08f3fae132818eb849db357cd90781575a89383835d0b9bb1a99db83
|
File details
Details for the file pdfreading_app-0.1.8-py3-none-any.whl.
File metadata
- Download URL: pdfreading_app-0.1.8-py3-none-any.whl
- Upload date:
- Size: 111.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
076d7cac17b4e06ba978f8ea01041186413c5ca73c64d3077c28c57c145a4bd4
|
|
| MD5 |
0e674ae5e68a1fe14fd232ef9b9e6c47
|
|
| BLAKE2b-256 |
6bb25bafa2d757855a523ec7bf4759cd1f2d9c56063a405516d9781ce8d8cbca
|