PDF_Generation_and_Automation/python-pdf-generator/start_api.py
2025-08-25 21:52:12 +05:30

78 lines
2.4 KiB
Python

#!/usr/bin/env python3
"""
Startup script for Salesforce PDF Generator API
"""
import subprocess
import sys
import os
def install_requirements():
"""Install required packages"""
print("Installing required packages...")
try:
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"])
print("✅ Requirements installed successfully")
except subprocess.CalledProcessError as e:
print(f"❌ Failed to install requirements: {e}")
return False
return True
def check_wkhtmltopdf():
"""Check if wkhtmltopdf is available"""
print("Checking wkhtmltopdf installation...")
try:
result = subprocess.run(['wkhtmltopdf', '--version'], capture_output=True, text=True)
if result.returncode == 0:
print("✅ wkhtmltopdf is available")
return True
else:
print("❌ wkhtmltopdf not found in PATH")
return False
except FileNotFoundError:
print("❌ wkhtmltopdf not found. Please install it:")
print(" Ubuntu/Debian: sudo apt-get install wkhtmltopdf")
print(" macOS: brew install wkhtmltopdf")
print(" Windows: Download from https://wkhtmltopdf.org/downloads.html")
return False
def start_api():
"""Start the Flask API server"""
print("Starting Salesforce PDF Generator API...")
try:
from salesforce_pdf_api import app
app.run(host='0.0.0.0', port=5000, debug=True)
except ImportError as e:
print(f"❌ Failed to import API: {e}")
return False
except Exception as e:
print(f"❌ Failed to start API: {e}")
return False
return True
def main():
"""Main startup function"""
print("🚀 Salesforce PDF Generator API Startup")
print("=" * 50)
# Install requirements
if not install_requirements():
print("❌ Cannot continue without requirements")
return
# Check wkhtmltopdf
if not check_wkhtmltopdf():
print("⚠️ wkhtmltopdf not available. PDF generation may fail.")
print(" Continuing anyway...")
# Start API
print("\n🌐 Starting API server on http://localhost:8000")
print(" Press Ctrl+C to stop")
print("=" * 50)
if not start_api():
print("❌ Failed to start API server")
return
if __name__ == "__main__":
main()