A Python-based desktop application that helps users convert multiple P7M (signed email) files to PDF format in batch. The application provides a simple graphical user interface and handles OpenSSL installation automatically if needed.
- 🔄 Batch conversion of P7M files to PDF
- 📂 Simple folder selection interface
- 📊 Real-time conversion progress tracking
- 📝 Detailed conversion logs
- 🔧 Automatic OpenSSL installation
- 📋 File listing with scrollable view
- 💫 User-friendly GUI with status updates
- Windows 64-bit operating system
- Python 3.x
- Internet connection (for first-time OpenSSL installation)
- Clone this repository:
git clone https://github.com/saikrishnamallam/P7MConverterApp.git
cd P7MConverterApp
- Install required packages using pip:
pip install -r requirements.txt
Alternatively, if you want to install packages in a virtual environment (recommended):
# Create a virtual environment
python -m venv venv
# Activate the virtual environment
# On Windows:
venv\Scripts\activate
# Install required packages
pip install -r requirements.txt
Note: The application will automatically download and install OpenSSL if it's not already present on your system.
- Run the application:
python app.py
-
The application will check for OpenSSL installation and install it if necessary.
-
Click the "Select Folder" button to choose a directory containing P7M files.
-
The application will display all P7M files found in the selected directory.
-
Click "Convert" to start the batch conversion process.
-
Monitor the progress through the progress bar and status updates.
-
Converted PDF files will be saved in the same directory as the source P7M files.
P7MConverterApp
: Main application class handling the GUI and conversion workflowOpenSSLInstaller
: Helper class managing OpenSSL installation- Logging system storing operation logs in the AppData directory
- Threading implementation for non-blocking UI during conversion
- Progress tracking for batch operations
The application uses the following default paths:
- OpenSSL Installation:
C:\Program Files\OpenSSL-Win64\bin\openssl.exe
- Log Directory:
%APPDATA%\P7MConverterLogs
- OpenSSL Installer: Downloaded to
%APPDATA%\Win64OpenSSL-3_3_2.exe
The application maintains detailed logs of all operations in:
%APPDATA%\P7MConverterLogs\app.log
- The application includes comprehensive error handling for:
- OpenSSL installation failures
- File conversion errors
- Directory access issues
- Invalid file formats
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Uses OpenSSL for P7M file processing
- Built with Python's tkinter for the GUI
- Developed for Windows 64-bit systems
-
OpenSSL Installation Fails
- Ensure you have administrative privileges
- Check your internet connection
- Verify Windows Defender or antivirus isn't blocking the installation
-
Conversion Errors
- Verify the P7M files are valid and not corrupted
- Check if the files are properly signed
- Ensure you have write permissions in the target directory
-
Application Won't Start
- Verify Python 3.x is installed correctly
- Check if tkinter is installed properly
- Ensure all required permissions are granted
- Make sure all dependencies are installed correctly using
pip install -r requirements.txt
-
Package Installation Issues
- If you get permission errors during installation, try running:
pip install --user -r requirements.txt
- If you're behind a proxy, configure pip accordingly:
pip install --proxy http://user:password@proxyserver:port -r requirements.txt
- If you get permission errors during installation, try running:
If you encounter any issues:
- Check the application logs in the AppData directory
- Open an issue in the GitHub repository with:
- Detailed description of the problem
- Steps to reproduce
- Log file contents
- Operating system details
- Add support for other operating systems
- Implement drag-and-drop functionality
- Add option to specify output directory
- Include file validation before conversion
- Add support for other file formats