A comprehensive web-based PDF manipulation toolkit built with Flask that provides essential document processing capabilities. The application offers a clean, user-friendly interface for merging, splitting, converting, compressing, rotating, and securing PDF documents.
- Merge PDFs - Combine multiple PDF files into a single document
- Split PDFs - Extract individual pages from PDF documents
- Convert Files - Convert between PDF, Word (DOC/DOCX), and PowerPoint (PPT/PPTX) formats
- Compress PDFs - Reduce file size while maintaining quality
- Rotate Pages - Rotate PDF pages to correct orientation
- Secure PDFs - Add password protection to documents
- Clean, professional dark theme interface
- Drag-and-drop file upload support
- File validation and size limits (100MB max)
- Responsive design for all devices
- Real-time file preview and progress indicators
- Secure temporary file handling with automatic cleanup
- Bootstrap 5 with custom styling
- Python 3.11 - Core programming language
- Flask - Lightweight web framework
- Gunicorn - WSGI HTTP Server for production
- PyPDF2 - Core PDF manipulation (merge, split, rotate, encrypt)
- pdf2docx - PDF to Word document conversion
- python-pptx - PowerPoint file handling and creation
- ReportLab - PDF generation for demo conversions
- HTML5 & CSS3 - Modern web standards
- Bootstrap 5 - Responsive UI framework with dark theme
- JavaScript (Vanilla) - Client-side functionality
- Font Awesome - Icon library
- uv - Fast Python package manager
- Werkzeug - WSGI utilities for secure file handling
pdf-tools-app/
├── app.py # Main Flask application
├── main.py # Application entry point
├── requirements.txt # Python dependencies
├── pyproject.toml # Project configuration
├── replit.md # Project documentation
├── README.md # This file
├── templates/ # Jinja2 HTML templates
│ ├── base.html # Base template with navigation
│ ├── index.html # Homepage with tool overview
│ ├── merge.html # PDF merge interface
│ ├── split.html # PDF split interface
│ ├── convert.html # File conversion interface
│ ├── compress.html # PDF compression interface
│ ├── rotate.html # PDF rotation interface
│ └── secure.html # PDF security interface
├── static/ # Static assets
│ ├── css/
│ │ └── custom.css # Custom styling and themes
│ └── js/
│ └── main.js # JavaScript functionality
├── utils/ # Utility modules
│ ├── pdf_tools.py # PDF processing operations
│ └── file_handler.py # File upload and management
└── uploads/ # Temporary file storage
- Python 3.11+
- uv package manager
- Clone the repository
- Install dependencies:
uv add PyPDF2 pdf2docx python-pptx reportlab flask werkzeug gunicorn
- Run the application:
python main.py
- Access at
http://localhost:5000
The application is configured to run with Gunicorn:
gunicorn --bind 0.0.0.0:5000 --reuse-port --reload main:app
- Maximum file size: 100MB per file
- Supported formats: PDF, DOC, DOCX, PPT, PPTX
- Automatic cleanup of temporary files
- Secure filename handling with Werkzeug
- File type validation
- Temporary file isolation
- Password encryption for PDF protection
GET /
- Homepage with tool overviewGET /merge
- PDF merge interfacePOST /api/merge
- Process PDF mergeGET /split
- PDF split interfacePOST /api/split
- Process PDF splitGET /convert
- File conversion interfacePOST /api/convert
- Process file conversionGET /compress
- PDF compression interfacePOST /api/compress
- Process PDF compressionGET /rotate
- PDF rotation interfacePOST /api/rotate
- Process PDF rotationGET /secure
- PDF security interfacePOST /api/secure
- Process PDF encryption
- Chrome/Chromium 90+
- Firefox 88+
- Safari 14+
- Edge 90+
This project is open source and available under the MIT License.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
For issues and feature requests, please create an issue in the repository.