Skip to content

DroneTechTI/DocConverter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“„ DocConverter

Professional Document Conversion Software

Python License Platform Release Downloads Build Code Style

A powerful, cross-platform desktop application for converting documents between multiple formats with a modern graphical interface. Pure Python implementation - no external dependencies required for most conversions!


🎯 Overview

DocConverter is a professional-grade document conversion tool designed for efficiency and ease of use. Built with Python and PyQt6, it provides a modern graphical interface for batch document conversion with real-time progress tracking and comprehensive logging.

Key Features:

  • πŸš€ Pure Python - No Office/LibreOffice required for most conversions
  • πŸ”„ Multiple Formats - Word, PDF, Excel, PowerPoint, Images, HTML
  • ⚑ Batch Processing - Convert multiple files simultaneously with optimized performance
  • πŸ“Š Real-time Progress - Live progress bars and status updates
  • 🎨 Modern UI - Clean, intuitive interface with drag-and-drop support
  • 🌍 Cross-platform - Works on Windows, Linux, and macOS
  • πŸ“ Comprehensive Logging - Detailed logs for troubleshooting
  • πŸ”§ Extensible Architecture - Easy to add new converters

✨ Supported Conversions

Currently Available

From To Library External Dependencies
πŸ“ Word (.docx, .doc) πŸ“„ PDF python-docx + reportlab ❌ None
πŸ“„ PDF πŸ“ Word (.docx) pdf2docx ❌ None
πŸ–ΌοΈ Images (PNG, JPG, BMP, GIF, TIFF) πŸ“„ PDF Pillow ❌ None
πŸ“„ PDF πŸ–ΌοΈ Images pdf2image ❌ None
πŸ“Š Excel (.xlsx, .xls) πŸ“„ PDF openpyxl + reportlab ❌ None
🎨 PowerPoint (.pptx) πŸ“„ PDF python-pptx + reportlab ❌ None
🌐 HTML πŸ“„ PDF weasyprint ❌ None
πŸ“‘ PDF Merge πŸ“„ PDF pypdf ❌ None
πŸ—œοΈ PDF Compress πŸ“„ PDF pypdf ❌ None

Plugin Architecture Ready

The modular architecture allows easy addition of new converters. Simply extend ConverterBase and register your converter!


πŸ’» System Requirements

Windows

  • OS: Windows 10 or later (64-bit recommended)
  • Python: 3.8 or higher
  • RAM: 4GB minimum, 8GB recommended
  • Disk Space: 200MB for application + dependencies

Linux

  • OS: Any modern distribution (Ubuntu 20.04+, Fedora 35+, etc.)
  • Python: 3.8 or higher
  • RAM: 4GB minimum, 8GB recommended
  • Disk Space: 200MB for application + dependencies

macOS

  • OS: macOS 10.14 (Mojave) or later
  • Python: 3.8 or higher
  • RAM: 4GB minimum, 8GB recommended

πŸ“¦ Installation

πŸš€ Quick Start (Recommended)

Download the standalone executable - No Python installation required!

πŸ‘‰ Download DocConverter.exe (41.5 MB)

Just download and run - it's that simple!


πŸ’» Install from Source

  1. Clone the repository:

    git clone https://github.com/DroneTechTI/DocConverter.git
    cd DocConverter
  2. Install dependencies:

    pip install -r requirements.txt
  3. Run the application:

    python main.py

Virtual Environment (Recommended)

# Create virtual environment
python -m venv venv

# Activate (Windows)
venv\Scripts\activate

# Activate (Linux/macOS)
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Run
python main.py

πŸš€ Usage

Graphical Interface

  1. Launch the application: python main.py
  2. Drag and drop files or click "πŸ“ Add Files"
  3. Select conversion type from dropdown
  4. (Optional) Choose output folder
  5. Click "πŸš€ Convert All"
  6. Monitor progress in real-time

Batch Conversion

Convert multiple files at once:

  • Add all files to the queue
  • The batch optimizer automatically parallelizes conversions
  • Memory optimizer ensures efficient resource usage
  • Progress is tracked per file with overall completion percentage

Command Line (Future)

# Single file conversion
python main.py convert input.docx output.pdf

# Batch conversion
python main.py convert-batch input_folder/ output_folder/ --format pdf

πŸ“ Project Structure

DocConverter/
β”œβ”€β”€ main.py                 # Application entry point
β”œβ”€β”€ requirements.txt        # Python dependencies
β”œβ”€β”€ README.md              # This file
β”œβ”€β”€ LICENSE                # MIT License
β”œβ”€β”€ CHANGELOG.md           # Version history
β”‚
β”œβ”€β”€ assets/                # Application resources
β”‚   β”œβ”€β”€ icon.ico          # Windows icon
β”‚   └── icon.png          # Cross-platform icon
β”‚
β”œβ”€β”€ config/                # Configuration modules
β”‚   β”œβ”€β”€ settings.py       # Application settings
β”‚   β”œβ”€β”€ i18n.py          # Internationalization
β”‚   └── user_settings.py  # User preferences
β”‚
β”œβ”€β”€ core/                  # Core architecture
β”‚   β”œβ”€β”€ converter_base.py      # Abstract base class
β”‚   β”œβ”€β”€ converter_registry.py  # Converter management
β”‚   └── dependency_checker.py  # Dependency validation
β”‚
β”œβ”€β”€ converters/            # Converter implementations
β”‚   β”œβ”€β”€ word_to_pdf.py
β”‚   β”œβ”€β”€ pdf_to_word.py
β”‚   β”œβ”€β”€ images_to_pdf.py
β”‚   β”œβ”€β”€ pdf_to_images.py
β”‚   β”œβ”€β”€ excel_to_pdf.py
β”‚   β”œβ”€β”€ powerpoint_to_pdf.py
β”‚   β”œβ”€β”€ html_to_pdf.py
β”‚   β”œβ”€β”€ pdf_merge.py
β”‚   └── pdf_compress.py
β”‚
β”œβ”€β”€ gui/                   # Graphical interface
β”‚   β”œβ”€β”€ main_window.py    # Main application window
β”‚   β”œβ”€β”€ styles/           # UI themes
β”‚   └── widgets/          # Custom widgets
β”‚
β”œβ”€β”€ utils/                 # Utility modules
β”‚   β”œβ”€β”€ logger.py         # Logging system
β”‚   β”œβ”€β”€ error_handler.py  # Error management
β”‚   β”œβ”€β”€ file_handler.py   # File operations
β”‚   β”œβ”€β”€ batch_optimizer.py    # Batch processing
β”‚   └── memory_optimizer.py   # Memory management
β”‚
└── tests/                 # Unit tests
    β”œβ”€β”€ test_converters.py
    └── test_new_features.py

πŸ› οΈ Development

Adding a New Converter

  1. Create a new file in converters/:
from core.converter_base import ConverterBase
from utils.error_handler import ConversionError

class MyConverter(ConverterBase):
    def get_info(self):
        return {
            'name': 'My Converter',
            'input_formats': ['.ext1', '.ext2'],
            'output_format': '.pdf',
            'description': 'Converts my format to PDF',
            'requires_dependency': None
        }
    
    def convert(self, input_path, output_path, progress_callback=None, **kwargs):
        # Implement conversion logic
        return True
  1. Register in converters/__init__.py:
from .my_converter import MyConverter
registry.register(MyConverter)

Running Tests

# Run all tests
python -m pytest tests/

# Run specific test file
python -m pytest tests/test_converters.py

# Run with coverage
python -m pytest --cov=. tests/

πŸ› Troubleshooting

Common Issues

Import Errors

pip install -r requirements.txt --upgrade

Permission Errors

  • Ensure files are not open in other applications
  • Check file/folder permissions
  • Run as administrator (if necessary)

Missing Libraries The application auto-installs missing Python packages on first run. If auto-install fails:

pip install python-docx pypdf Pillow reportlab openpyxl python-pptx weasyprint pdf2docx pdf2image colorlog psutil

GUI Not Starting

  • Verify PyQt6 installation: pip install PyQt6 --upgrade
  • Check Python version: python --version (must be 3.8+)

Logs

Application logs are stored in logs/docconverter.log with automatic rotation (max 10MB, 5 backups).


πŸ“ Version History

See CHANGELOG.md for detailed version history.

Current Version: 2.5.0

  • Complete English translation
  • Professional code refactoring
  • Enhanced type hints and documentation
  • Improved architecture and modularity

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License

Copyright (c) 2026 DocConverter Team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

πŸ‘€ Author

DocConverter Team


🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow PEP 8 style guidelines
  • Add type hints to all functions
  • Write comprehensive docstrings (Google style)
  • Include unit tests for new features
  • Update documentation as needed

⭐ Show Your Support

If you find this project useful, please consider giving it a star on GitHub!


πŸ“§ Support

For issues, questions, or suggestions:

  • Open an issue on GitHub
  • Check existing documentation
  • Review closed issues for solutions

Made with ❀️ by DocConverter Team

About

Convertitore di documenti

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages