# PowerPoint Automation Guide Transform your AI-generated screenshots into professional 4K video presentations automatically using PowerPoint's native video export capabilities. ## Overview The PowerPoint Automation feature extends Screenshot Studio with the ability to: - Automatically create PowerPoint presentations from generated images - Configure slide timings and transitions - Export presentations as high-quality 4K videos (3840x2160, MP4 format) - Monitor progress in real-time - Manage operations through a simple web interface ## System Requirements ### Operating System - **Windows 10** or later - **Windows Server 2016** or later - **Not supported**: macOS, Linux (requires Windows COM automation) ### Software Requirements - **Microsoft PowerPoint 2016** or later (must be installed and licensed) - **Python 3.8** or later - **8GB RAM minimum** (16GB recommended for 4K export) - **10GB free disk space** for temporary files and output ### Python Dependencies - `python-pptx==0.6.23` - PowerPoint file manipulation - `pywin32==306` - Windows COM automation - All other dependencies from `requirements.txt` ## Installation ### 1. Install Python Dependencies ```bash pip install -r requirements.txt ``` This installs `python-pptx` and `pywin32` along with other required packages. ### 2. Run pywin32 Post-Install Script After installing pywin32, you must run the post-install script to register COM components: ```bash python Scripts/pywin32_postinstall.py -install ``` **Note**: On some systems, the script may be in a different location: ```bash python -m pywin32_postinstall -install ``` ### 3. Verify PowerPoint Installation Test that PowerPoint is accessible via COM automation: ```python python -c "import win32com.client; ppt = win32com.client.Dispatch('PowerPoint.Application'); print('PowerPoint version:', ppt.Version); ppt.Quit()" ``` Expected output: `PowerPoint version: 16.0` (or similar) If you see an error, ensure: - PowerPoint is installed and licensed - You ran the pywin32 post-install script - You're running on Windows ### 4. Create Required Directories The application will create these automatically, but you can create them manually: ```bash mkdir output\presentations mkdir output\videos mkdir templates\powerpoint ``` ### 5. Configure Settings Edit `config/config.py` to customize PowerPoint settings (optional): ```python # PowerPoint Automation Settings POWERPOINT_ENABLED = True POWERPOINT_TEMPLATE_PATH = "templates/powerpoint/default.pptx" POWERPOINT_OUTPUT_FOLDER = "output/presentations" POWERPOINT_VIDEO_FOLDER = "output/videos" # Slide Settings DEFAULT_SLIDE_DURATION = 3.0 # Seconds per slide DEFAULT_TRANSITION_TYPE = "fade" # fade, push, wipe, none DEFAULT_TRANSITION_DURATION = 0.5 # Seconds for transition # Video Export Settings VIDEO_RESOLUTION_WIDTH = 3840 # 4K width VIDEO_RESOLUTION_HEIGHT = 2160 # 4K height VIDEO_FPS = 30 # Frames per second VIDEO_QUALITY = 5 # 1-5, where 5 is highest quality ``` ## Configuration Options ### Slide Settings **DEFAULT_SLIDE_DURATION** (float) - Duration each slide displays in seconds - Default: `3.0` - Range: `0.5` to `30.0` - Example: `5.0` for 5 seconds per slide **DEFAULT_TRANSITION_TYPE** (string) - Type of transition between slides - Default: `"fade"` - Options: `"fade"`, `"push"`, `"wipe"`, `"none"` **DEFAULT_TRANSITION_DURATION** (float) - Duration of transition animation in seconds - Default: `0.5` - Range: `0.1` to `3.0` ### Video Export Settings **VIDEO_RESOLUTION_WIDTH** / **VIDEO_RESOLUTION_HEIGHT** (int) - Video resolution in pixels - Default: `3840 x 2160` (4K) - Common options: - 4K: `3840 x 2160` - 1080p: `1920 x 1080` - 720p: `1280 x 720` **VIDEO_FPS** (int) - Frames per second for video - Default: `30` - Options: `24`, `30`, `60` **VIDEO_QUALITY** (int) - Video encoding quality - Default: `5` (highest) - Range: `1` (lowest) to `5` (highest) - Higher quality = larger file size ### Image Insertion Settings **IMAGE_FIT_MODE** (string) - How images fit within slides - Default: `"contain"` - Options: - `"contain"` - Fit entire image, preserve aspect ratio - `"cover"` - Fill slide, may crop image - `"fill"` - Stretch to fill slide **IMAGE_POSITION** (string) - Image alignment on slide - Default: `"center"` - Options: `"center"`, `"top"`, `"bottom"` **PRESERVE_ASPECT_RATIO** (bool) - Whether to maintain image aspect ratios - Default: `True` - Set to `False` to allow stretching ## API Endpoints ### 1. Upload Template Upload a PowerPoint template file to use for presentation creation. **Endpoint**: `POST /api/powerpoint/upload-template` **Request**: Multipart form data ```javascript const formData = new FormData(); formData.append('template', templateFile); fetch('/api/powerpoint/upload-template', { method: 'POST', body: formData }); ``` **Response**: ```json { "success": true, "template_path": "templates/powerpoint/my_template.pptx" } ``` ### 2. Create Presentation Create a PowerPoint presentation from images in a folder. **Endpoint**: `POST /api/powerpoint/create` **Request Body**: ```json { "template_path": "templates/powerpoint/default.pptx", "image_folder": "output/screenshots", "slide_duration": 3.0, "transition_type": "fade" } ``` **Response**: ```json { "success": true, "presentation_path": "output/presentations/presentation_20240101_120000.pptx", "operation_id": "create_1704110400000" } ``` ### 3. Export Video Export an existing PowerPoint presentation to 4K video. **Endpoint**: `POST /api/powerpoint/export-video` **Request Body**: ```json { "presentation_path": "output/presentations/presentation.pptx", "resolution": [3840, 2160], "fps": 30, "quality": 5 } ``` **Response**: ```json { "success": true, "video_path": "output/videos/video_20240101_120000.mp4", "operation_id": "export_1704110400000" } ``` ### 4. Create and Export (Combined) Create presentation and export to video in one operation. **Endpoint**: `POST /api/powerpoint/create-and-export` **Request Body**: ```json { "template_path": "templates/powerpoint/default.pptx", "image_folder": "output/screenshots", "slide_duration": 3.0, "transition_type": "fade", "video_resolution": [3840, 2160], "video_fps": 30, "video_quality": 5 } ``` **Response**: ```json { "success": true, "presentation_path": "output/presentations/presentation_20240101_120000.pptx", "video_path": "output/videos/video_20240101_120000.mp4", "operation_id": "create_and_export_1704110400000" } ``` ### 5. Monitor Progress Stream real-time progress updates using Server-Sent Events (SSE). **Endpoint**: `GET /api/powerpoint/progress/` **Usage**: ```javascript const eventSource = new EventSource(`/api/powerpoint/progress/${operationId}`); eventSource.addEventListener('slide_inserted', (e) => { const data = JSON.parse(e.data); console.log(`Slide ${data.slide_number} of ${data.total_slides}`); }); eventSource.addEventListener('video_export_started', (e) => { console.log('Video export started...'); }); eventSource.addEventListener('completed', (e) => { const data = JSON.parse(e.data); console.log('Completed!', data); eventSource.close(); }); eventSource.addEventListener('error', (e) => { const data = JSON.parse(e.data); console.error('Error:', data.error_message); eventSource.close(); }); ``` **Event Types**: - `slide_inserted` - A slide was added to the presentation - `video_export_started` - Video export has begun - `video_export_progress` - Video export progress update (if available) - `completed` - Operation finished successfully - `error` - Operation failed with error ### 6. Validate Template Check if a PowerPoint template file is valid before using it. **Endpoint**: `POST /api/powerpoint/validate-template` **Request Body**: ```json { "template_path": "templates/powerpoint/my_template.pptx" } ``` **Response**: ```json { "valid": true, "slide_count": 1, "layout_info": { "slide_width": 9144000, "slide_height": 6858000, "layout_names": ["Title Slide", "Content"] } } ``` ## UI Usage ### Basic Workflow 1. **Generate Screenshots** - Use the Text-to-Image or HTML-to-Image features to create screenshots - Screenshots are saved to `output/screenshots/` 2. **Open PowerPoint Panel** - Scroll to the PowerPoint Automation section in the UI - The panel contains all PowerPoint controls 3. **Upload Template** (Optional) - Click "Choose File" to select a .pptx template - Click "Validate" to check if the template is valid - Or use the default template 4. **Configure Settings** - **Slide Duration**: How long each slide displays (seconds) - **Transition Type**: Animation between slides - **Video Quality**: 1 (lowest) to 5 (highest) 5. **Create Presentation** - Click "Create Presentation" to generate .pptx file only - Or click "Create & Export Video" to generate both .pptx and .mp4 6. **Monitor Progress** - Progress bar shows current operation status - Status text displays detailed progress information - Download links appear when complete ### Advanced Options **Custom Image Folder** - By default, uses `output/screenshots/` - Can specify different folder via API **Custom Output Paths** - Presentations saved to `output/presentations/` - Videos saved to `output/videos/` - Filenames include timestamp for uniqueness **Template Customization** - Create custom .pptx templates with your branding - Templates should have at least one slide layout - Images will be inserted as new slides ## Troubleshooting ### PowerPoint Not Found **Error**: `PowerPointNotFoundError: PowerPoint is not installed or not accessible` **Solutions**: 1. Verify PowerPoint is installed: Open PowerPoint manually 2. Check PowerPoint version: Must be 2016 or later 3. Verify license: PowerPoint must be activated 4. Run as Administrator: Some COM operations require elevated privileges 5. Re-run pywin32 post-install: `python -m pywin32_postinstall -install` ### COM Automation Errors **Error**: `pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)` **Solutions**: 1. Re-register COM components: ```bash python -m pywin32_postinstall -install ``` 2. Restart your computer 3. Check Windows Event Viewer for COM errors 4. Ensure no other process is using PowerPoint ### Video Export Timeout **Error**: `ExportError: Video export operation timed out` **Solutions**: 1. Reduce video quality setting (try 3 instead of 5) 2. Reduce resolution (try 1080p instead of 4K) 3. Reduce number of slides (split into multiple videos) 4. Close other applications to free up CPU/RAM 5. Check disk space (video export requires significant space) ### Template Validation Fails **Error**: `TemplateError: Template file is invalid or corrupted` **Solutions**: 1. Open template in PowerPoint manually to verify it works 2. Save template as .pptx (not .ppt or .pptm) 3. Remove macros from template (save as .pptx, not .pptm) 4. Create new template from scratch 5. Use the default template provided ### Out of Memory **Error**: `MemoryError` or system becomes unresponsive during video export **Solutions**: 1. Close other applications 2. Reduce video resolution 3. Reduce video quality setting 4. Process fewer slides at once 5. Upgrade RAM (16GB recommended for 4K) ### Permission Denied **Error**: `PermissionError: [Errno 13] Permission denied` **Solutions**: 1. Close PowerPoint if it's open 2. Check file isn't open in another program 3. Run application as Administrator 4. Check antivirus isn't blocking file access 5. Verify write permissions on output folders ### Slow Video Export **Issue**: Video export takes very long (>10 minutes) **Solutions**: 1. This is normal for 4K video with many slides 2. Reduce resolution to 1080p for faster export 3. Reduce video quality setting 4. Use fewer slides per video 5. Upgrade CPU (video encoding is CPU-intensive) ### Images Not Appearing in Slides **Issue**: Presentation created but slides are blank **Solutions**: 1. Verify images exist in the specified folder 2. Check image file formats (PNG, JPG, JPEG supported) 3. Ensure images aren't corrupted (open manually) 4. Check file permissions on image folder 5. Verify image paths don't contain special characters ## Performance Considerations ### Presentation Creation - **Speed**: ~0.2 seconds per slide - **10 slides**: ~2 seconds - **50 slides**: ~10 seconds ### Video Export (4K, Quality 5) - **Speed**: Varies by CPU and slide count - **1 minute video (20 slides @ 3s each)**: 3-5 minutes - **2 minute video (40 slides @ 3s each)**: 6-10 minutes - **5 minute video (100 slides @ 3s each)**: 15-25 minutes ### File Sizes - **Presentation (.pptx)**: 5-20MB for 10-50 slides - **4K Video (Quality 5)**: 50-100MB per minute - **1080p Video (Quality 5)**: 20-40MB per minute ### Optimization Tips 1. **Use 1080p for faster export**: 4K takes 2-3x longer 2. **Lower quality for drafts**: Use quality 3 for testing 3. **Batch operations**: Process multiple sets separately 4. **Monitor resources**: Close unnecessary applications 5. **SSD recommended**: Faster disk I/O improves performance ## Best Practices ### Template Design 1. **Keep it simple**: Complex templates may cause issues 2. **Test first**: Validate template before production use 3. **Standard layouts**: Use PowerPoint's built-in layouts 4. **No macros**: Save as .pptx, not .pptm 5. **Backup templates**: Keep copies of working templates ### Image Preparation 1. **Consistent sizing**: Use same dimensions for all images 2. **High resolution**: Use at least 1920x1080 for best quality 3. **Proper naming**: Use numeric prefixes for ordering (1_image.png, 2_image.png) 4. **Supported formats**: PNG and JPEG recommended 5. **Optimize files**: Compress images to reduce file size ### Video Production 1. **Test with small sets**: Create short videos first 2. **Monitor progress**: Watch for errors during export 3. **Verify output**: Check video plays correctly 4. **Archive source files**: Keep .pptx files for re-export 5. **Plan for time**: Allow sufficient time for 4K export ### Error Handling 1. **Check logs**: Review console output for errors 2. **Retry on failure**: Transient errors may resolve on retry 3. **Validate inputs**: Use template validation before operations 4. **Clean up**: Remove partial files after errors 5. **Report issues**: Note error messages for troubleshooting ## Limitations ### Platform - **Windows only**: Requires Windows COM automation - **PowerPoint required**: Must have PowerPoint installed - **No cloud support**: Cannot run on Linux servers ### Performance - **CPU intensive**: Video export uses significant CPU - **Memory intensive**: 4K export requires substantial RAM - **Time consuming**: Large videos take many minutes - **Disk space**: Temporary files can be large ### Features - **No audio**: Videos are silent (no background music) - **No animations**: Slide content is static - **Limited transitions**: Basic transitions only - **No text overlays**: Cannot add captions automatically - **Sequential processing**: One operation at a time recommended ## Security Considerations ### File Upload - Template files are validated for .pptx extension - File size limited to 50MB - Files stored in isolated directory - Path traversal protection enabled ### Resource Limits - Maximum 2 concurrent operations - Video export timeout: 30 minutes - Disk space checked before operations - Memory usage monitored ### COM Security - PowerPoint runs with user privileges - COM objects properly cleaned up - Exceptions handled to prevent crashes - Logging enabled for audit trail ## Future Enhancements Planned features for future releases: 1. **Audio Support**: Add background music or narration 2. **Text Overlays**: Automatic captions and titles 3. **Batch Processing**: Process multiple image sets in parallel 4. **Cloud Export**: Direct upload to YouTube, Vimeo 5. **Template Library**: Built-in professional templates 6. **Preview Generation**: Thumbnail previews before export 7. **Custom Animations**: Support for slide animations 8. **Multi-Resolution**: Export multiple resolutions simultaneously 9. **Progress Estimation**: More accurate time estimates 10. **Template Editor**: Web-based template customization ## Support ### Getting Help - Check this documentation first - Review troubleshooting section - Check console logs for error messages - Verify system requirements are met ### Reporting Issues When reporting issues, include: - Windows version - PowerPoint version - Python version - Error message (full text) - Steps to reproduce - Console log output ### Additional Resources - PowerPoint VBA Reference: [Microsoft Docs](https://docs.microsoft.com/en-us/office/vba/api/overview/powerpoint) - python-pptx Documentation: [python-pptx.readthedocs.io](https://python-pptx.readthedocs.io/) - pywin32 Documentation: [pywin32.readthedocs.io](https://pywin32.readthedocs.io/) --- **Last Updated**: 2024 **Version**: 1.0 **Status**: Production Ready