#!/usr/bin/env python3
"""
Test script to verify PDF generation works
Run this to test both WeasyPrint and ReportLab fallback
"""

import os
import sys

def test_weasyprint():
    """Test if WeasyPrint is available and working"""
    try:
        from weasyprint import HTML, CSS
        print("✓ WeasyPrint is available")
        return True
    except ImportError as e:
        print(f"✗ WeasyPrint import failed: {e}")
        return False
    except Exception as e:
        print(f"✗ WeasyPrint error: {e}")
        return False

def test_reportlab():
    """Test if ReportLab is available and working"""
    try:
        from reportlab.lib.pagesizes import A4
        from reportlab.platypus import SimpleDocTemplate, Paragraph
        from reportlab.lib.styles import getSampleStyleSheet
        print("✓ ReportLab is available")
        return True
    except ImportError as e:
        print(f"✗ ReportLab import failed: {e}")
        return False
    except Exception as e:
        print(f"✗ ReportLab error: {e}")
        return False

def test_system_libraries():
    """Test if required system libraries are available"""
    import ctypes.util
    
    required_libs = [
        'gobject-2.0-0',
        'pango-1.0-0',
        'cairo',
        'gdk_pixbuf-2.0'
    ]
    
    print("\nChecking system libraries:")
    for lib in required_libs:
        lib_path = ctypes.util.find_library(lib)
        if lib_path:
            print(f"✓ {lib}: {lib_path}")
        else:
            print(f"✗ {lib}: Not found")
    
    return True

def main():
    print("=== PDF Generation Test ===")
    
    # Test system libraries
    test_system_libraries()
    
    print("\n=== Python Libraries ===")
    
    # Test WeasyPrint
    weasyprint_ok = test_weasyprint()
    
    # Test ReportLab
    reportlab_ok = test_reportlab()
    
    print("\n=== Summary ===")
    if weasyprint_ok:
        print("✓ WeasyPrint is working - High-quality PDFs available")
    elif reportlab_ok:
        print("⚠ WeasyPrint failed but ReportLab is available - Basic PDFs available")
    else:
        print("✗ Both PDF generators failed - No PDF generation available")
    
    print("\n=== Recommendations ===")
    if not weasyprint_ok:
        print("1. Install system dependencies: libgdk-pixbuf2.0-0, libpango-1.0-0, libcairo2")
        print("2. Rebuild Docker container with updated Dockerfile")
        print("3. Or use ReportLab fallback (already configured)")
    
    if not reportlab_ok:
        print("1. Install ReportLab: pip install reportlab==4.0.7")
        print("2. Add to requirements.txt")

if __name__ == '__main__':
    main()
