In todayβs digital workspace, managing multiple document downloads can become chaotic β especially when handling dozens of PDF files.
To simplify this process, I developed a Tkinter-based Multi-Threaded PDF Downloader using Python.
This tool enables concurrent downloads, real-time speed monitoring, and pause/resume control β all inside a simple yet professional GUI interface.
π GitHub Repository: Srijan-XI/PDF-Downloader
π Introduction
The PDF Downloader project merges simplicity and performance to create a powerful, user-friendly desktop application.
It uses Pythonβs threading for parallel downloads, Tkinter for the GUI, and PyInstaller for cross-platform builds. Whether youβre a student, researcher, or engineer β this tool helps automate your workflow efficiently.
β¨ Key Features
- β‘ Concurrent Downloads β Download multiple PDFs at once (1β10 threads).
- π Live Network Speed Display β Monitors download speed dynamically.
- β― Pause/Resume β Stop and continue downloads seamlessly.
- π Recursive File Discovery β Detects PDFs inside nested directories.
- π Progress Tracking β Visual progress bars with precise logging.
- πͺ Custom Icon Branding β Unified design for GUI and executables.
- π» Cross-Platform β Works smoothly on Windows, Linux, and macOS.
π Project Structure
A clean and modular architecture makes this project easy to maintain and extend:
Pdf Downloader/
βββ pdf_downloads.py # Core application logic
βββ requirements.txt # Dependencies
βββ run.bat / run.sh # Launchers for each platform
βββ scripts/
β βββ build_exe.ps1 # Windows build automation
β βββ build_app.sh # Linux/macOS build
β βββ convert_icon.py # Converts icons to .ico
βββ icon/logo_pdf.png # Application logo
βββ docs/ # Documentation files
βββ dist/ / build/ / venv/ # Generated directories
βοΈ Installation and Setup
πͺ Windows
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.\scripts\build_exe.ps1
.\run.bat
π§ Linux / macOS
chmod +x scripts/build_app.sh run.sh
./scripts/build_app.sh
./run.sh
Within minutes, the application compiles and launches seamlessly.
π§° Build from Source
You can also manually build the application from source using your terminal:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.\scripts\build_exe.ps1
chmod +x scripts/build_app.sh
./scripts/build_app.sh
The compiled application will appear inside the /dist/ folder, fully portable and ready to use.
π¦ Dependencies
The project uses lightweight and efficient libraries:
requestsβ For downloading filesbeautifulsoup4β For parsing HTML and locating linkspillowβ For image/icon processingpyinstallerβ For building standalone executables
All dependencies are installed automatically during the build process.
π» Manual Build with PyInstaller
If you want full control, build manually:
pyinstaller --noconfirm --onefile --windowed --icon=icon\logo_pdf.ico --add-data "icon;icon" --name "pdf_downloader" pdf_downloads.py
pyinstaller --noconfirm --onefile --windowed --icon=icon/logo_pdf.ico --add-data "icon:icon" --name "pdf_downloader" pdf_downloads.py
Note: Use ; for Windows and : for Linux/macOS in --add-data.
π§© Debugging and Logging
By default, the app runs in GUI (windowed) mode.
If you want to view console logs for debugging, remove the --windowed flag from your PyInstaller command.
π Cross-Platform Performance
This project has been tested on:
πͺ Windows 10/11
π§ Ubuntu / Fedora
π macOS Sonoma / Ventura
Performance and UI remain consistent across platforms.
π€ Contributing
Community contributions are welcome!
If youβd like to report bugs, suggest improvements, or contribute features, visit the repository:
π https://github.com/Srijan-XI/PDF-Downloader
Fork the repo, experiment, and share your enhancements!
π License & Credits
This project is open-source and available for both personal and commercial use.
Created and maintained by Srijan | Srijanxi Technologies.
Built with dedication, precision, and a belief that every tool β no matter how small β deserves thoughtful engineering.
βBuilt for efficiency. Engineered for reliability. Inspired by innovation.β
β
Explore the Full Project on GitHub:
π github.com/Srijan-XI/PDF-Downloader
Top comments (1)
Nice