A lightweight, user-friendly Python desktop application for everyday PDF operations. PDF Utility Tool provides a simple graphical interface for merging PDF documents, extracting pages, rotating pages, and converting images into PDFs.
Built with Python and Tkinter, the application focuses on simplicity, consistent UI styling, and practical functionality without requiring command-line operations or paid PDF software.
Combine multiple PDF documents into a single file.
- Add multiple PDF files.
- Remove files from the selection.
- Reorder documents using Move Up and Move Down.
- Choose an output location and filename.
- Merge documents in the selected order.
Extract specific pages from a PDF document.
- Extract individual pages or page ranges.
- Support multiple page ranges in a single operation.
- Specify ranges such as
1-5,8-12, or1-3, 7-9. - View PDF information, including relevant document and page details.
- Select the output location for extracted pages.
Rotate individual pages or multiple pages within a PDF document.
- Specify pages individually, such as
1,3,5. - Rotate pages by
90°,180°, or270°. - Choose clockwise or anticlockwise rotation.
- Save the modified PDF to your preferred location.
Convert multiple images into a single PDF document.
- Supports
.png,.jpg,.jpeg, and.bmpimages. - Add and remove images before conversion.
- Reorder images to control their sequence in the PDF.
- Choose the output filename and destination.
- Generate a PDF containing the selected images.
The following sections are placeholders for screenshots of the application. Add your screenshots to the assets/screenshots/ directory and update the image paths when they are available.
| Technology | Purpose |
|---|---|
| Python | Core programming language |
| Tkinter | Desktop graphical user interface |
| PyPDF2 | PDF reading, merging, page extraction, and rotation |
| Pillow (PIL) | Image processing and image-to-PDF conversion |
The application uses a shared styling module to maintain a consistent appearance across its different utilities.
- Centralized color palette and typography.
- Reusable buttons, labels, input fields, and card components.
- Consistent styling for tables and scrollbars.
- Shared UI helper functions to reduce duplicated code.
Directory structure:
└── PDF-Utility-Tool/
├── image_to_pdf.py
├── main.py
├── pdf_merger.py
├── pdf_rotater.py
├── pdf_splitter.py
├── README.md
├── requirements.txt
├── screenshots/
│ ├── image_to_pdf_convertor.png
│ ├── main_menu.png
│ ├── pdf_merger.png
│ ├── pdf_rotater.png
│ └── pdf_splitter.png
└── utils.py
Follow these steps to run the application locally.
Make sure you have:
- Python installed on your system.
- Git installed if you intend to clone the repository.
pip, Python's package installer.
Check your Python and pip installations:
python --version
python -m pip --versiongit clone https://github.com/VRYeshwanth/PDF-Utility-Tool.git
cd PDF-Utility-ToolCreating a virtual environment keeps the project's dependencies separate from other Python projects.
Windows — Command Prompt or PowerShell
python -m venv venvActivate it using Command Prompt:
venv\Scripts\activate.batOr activate it using PowerShell:
.\venv\Scripts\Activate.ps1Linux or macOS
python3 -m venv venv
source .venv/bin/activateInstall the packages listed in requirements.txt:
python -m pip install -r requirements.txtIf you encounter dependency errors, check that your Python version is compatible with the packages specified in the requirements file.
Note: Tkinter is generally included with standard Python installations on Windows. On some Linux distributions, it may need to be installed separately through the system package manager.
From the project's root directory, run:
python main.pyThe application's main menu should open, allowing you to select the PDF utility you want to use.
- Launch the application using
python main.py. - Select the required utility from the main menu.
- Add the PDF documents or images you want to process.
- Configure the relevant options, such as page ranges, rotation settings, or file order.
- Select the output destination and filename when prompted.
- Run the operation and check the generated file.
Tip: Keep a backup of important documents before performing PDF operations.
- Modular structure: Each PDF operation is implemented in its own Python module.
- Shared styling: Common UI components and theme definitions are maintained in
utils.py. - Separation of concerns: The main menu, individual utilities, and shared UI helpers have distinct responsibilities.
- Reusable components: Common styling helpers reduce duplication and make future UI changes easier.
- Local execution: Files can be processed through the desktop application without requiring a hosted web service.
Contributions, bug reports, and feature suggestions are welcome.
To contribute:
-
Fork the repository.
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes and test the affected functionality.
-
Commit your changes:
git add . git commit -m "Describe your changes"
-
Push the branch:
git push origin feature/your-feature-name
-
Open a pull request describing your changes.
No license has been specified in this README. If you intend to distribute the project for reuse, consider adding an appropriate open-source license and a corresponding LICENSE file.




