10 KiB
Quality Recticel Windows Print Service - Installation Guide
📋 Overview
The Quality Recticel Windows Print Service enables silent PDF printing directly from the web application through a Chrome extension. This system eliminates the need for manual PDF downloads and provides seamless label printing functionality.
🏗️ System Architecture
Web Application (print_module.html)
↓
Windows Print Service (localhost:8765)
↓
Chrome Extension (Native Messaging)
↓
Windows Print System
📦 Package Contents
windows_print_service/
├── print_service.py # Main Windows service (Flask API)
├── service_manager.py # Service installation & management
├── install_service.bat # Automated installation script
├── chrome_extension/ # Chrome extension files
│ ├── manifest.json # Extension configuration
│ ├── background.js # Service worker
│ ├── content.js # Page integration
│ ├── popup.html # Extension UI
│ ├── popup.js # Extension logic
│ └── icons/ # Extension icons
└── INSTALLATION_GUIDE.md # This documentation
🔧 Prerequisites
System Requirements
- Operating System: Windows 10/11 (64-bit)
- Python: Python 3.8 or higher
- Browser: Google Chrome (latest version)
- Privileges: Administrator access required for installation
Python Dependencies
The following packages will be installed automatically:
flask- Web service frameworkflask-cors- Cross-origin resource sharingrequests- HTTP client librarypywin32- Windows service integration
🚀 Installation Process
Step 1: Download and Extract Files
- Download the
windows_print_servicefolder to your system - Extract to a permanent location (e.g.,
C:\QualityRecticel\PrintService\) - Do not move or delete this folder after installation
Step 2: Install Windows Service
Method A: Automated Installation (Recommended)
- Right-click on
install_service.bat - Select "Run as administrator"
- Click "Yes" when Windows UAC prompt appears
- Wait for installation to complete
Method B: Manual Installation
If the automated script fails, follow these steps:
# Open Command Prompt as Administrator
cd C:\path\to\windows_print_service
# Install Python dependencies
pip install flask flask-cors requests pywin32
# Install Windows service
python service_manager.py install
# Add firewall exception
netsh advfirewall firewall add rule name="Quality Recticel Print Service" dir=in action=allow protocol=TCP localport=8765
# Create Chrome extension registry entry
reg add "HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.qualityrecticel.printservice" /ve /d "%cd%\chrome_extension\manifest.json" /f
Step 3: Install Chrome Extension
- Open Google Chrome
- Navigate to
chrome://extensions/ - Enable "Developer mode" (toggle in top-right corner)
- Click "Load unpacked"
- Select the
chrome_extensionfolder - Verify the extension appears with a printer icon
Step 4: Verify Installation
Check Windows Service Status
- Press
Win + R, typeservices.msc, press Enter - Look for "Quality Recticel Print Service"
- Status should show "Running"
- Startup type should be "Automatic"
Test API Endpoints
Open a web browser and visit:
- Health Check:
http://localhost:8765/health - Printer List:
http://localhost:8765/printers
Expected response for health check:
{
"status": "healthy",
"service": "Quality Recticel Print Service",
"version": "1.0",
"timestamp": "2025-09-21T10:30:00"
}
Test Chrome Extension
- Click the extension icon in Chrome toolbar
- Verify it shows "Service Status: Connected ✅"
- Check that printers are listed
- Try the "Test Print" button
🔄 Web Application Integration
The web application automatically detects the Windows service and adapts the user interface:
Service Available (Green Button)
- Button text: "🖨️ Print Labels (Silent)"
- Functionality: Direct printing to default printer
- User experience: Click → Labels print immediately
Service Unavailable (Blue Button)
- Button text: "📄 Generate PDF"
- Functionality: PDF download for manual printing
- User experience: Click → PDF downloads to browser
Detection Logic
// Automatic service detection on page load
const response = await fetch('http://localhost:8765/health');
if (response.ok) {
// Service available - enable silent printing
} else {
// Service unavailable - fallback to PDF download
}
🛠️ Configuration
Service Configuration
The service runs with the following default settings:
| Setting | Value | Description |
|---|---|---|
| Port | 8765 | Local API port |
| Host | localhost | Service binding |
| Startup | Automatic | Starts with Windows |
| Printer | Default | Uses system default printer |
| Copies | 1 | Default print copies |
Chrome Extension Permissions
The extension requires these permissions:
printing- Access to printer functionalitynativeMessaging- Communication with Windows serviceactiveTab- Access to current webpagestorage- Save extension settings
🔍 Troubleshooting
Common Issues
1. Service Not Starting
Symptoms: API not accessible at localhost:8765 Solutions:
# Check service status
python -c "from service_manager import service_status; service_status()"
# Restart service manually
python service_manager.py restart
# Check Windows Event Viewer for service errors
2. Chrome Extension Not Working
Symptoms: Extension shows "Service Status: Disconnected ❌" Solutions:
- Verify Windows service is running
- Check firewall settings (port 8765 must be open)
- Reload the Chrome extension
- Restart Chrome browser
3. Firewall Blocking Connection
Symptoms: Service runs but web page can't connect Solutions:
# Add firewall rule manually
netsh advfirewall firewall add rule name="Quality Recticel Print Service" dir=in action=allow protocol=TCP localport=8765
# Or disable Windows Firewall temporarily to test
4. Permission Denied Errors
Symptoms: Installation fails with permission errors Solutions:
- Ensure running as Administrator
- Check Windows UAC settings
- Verify Python installation permissions
5. Print Jobs Not Processing
Symptoms: API accepts requests but nothing prints Solutions:
- Check default printer configuration
- Verify printer drivers are installed
- Test manual printing from other applications
- Check Windows Print Spooler service
Log Files
Check these locations for troubleshooting:
| Component | Log Location |
|---|---|
| Windows Service | print_service.log (same folder as service) |
| Chrome Extension | Chrome DevTools → Extensions → Background page |
| Windows Event Log | Event Viewer → Windows Logs → System |
Diagnostic Commands
# Check service status
python service_manager.py status
# Test API manually
curl http://localhost:8765/health
# List available printers
curl http://localhost:8765/printers
# Check Windows service
sc query QualityRecticelPrintService
# Check listening ports
netstat -an | findstr :8765
🔄 Maintenance
Updating the Service
- Stop the current service:
python service_manager.py stop
-
Replace service files with new versions
-
Restart the service:
python service_manager.py start
Uninstalling
Remove Chrome Extension
- Go to
chrome://extensions/ - Find "Quality Recticel Print Service"
- Click "Remove"
Remove Windows Service
# Run as Administrator
python service_manager.py uninstall
Remove Firewall Rule
netsh advfirewall firewall delete rule name="Quality Recticel Print Service"
📞 Support Information
API Endpoints Reference
| Endpoint | Method | Purpose |
|---|---|---|
/health |
GET | Service health check |
/printers |
GET | List available printers |
/print/pdf |
POST | Print PDF from URL |
/print/silent |
POST | Silent print with metadata |
Request Examples
Silent Print Request:
POST /print/silent
{
"pdf_url": "http://localhost:5000/generate_labels_pdf/123",
"printer_name": "default",
"copies": 1,
"silent": true,
"order_id": "123",
"quantity": "10"
}
Expected Response:
{
"success": true,
"message": "Print job sent successfully",
"job_id": "print_20250921_103000",
"printer": "HP LaserJet Pro",
"timestamp": "2025-09-21T10:30:00"
}
📚 Technical Details
Service Architecture
- Framework: Flask (Python)
- Service Type: Windows Service (pywin32)
- Communication: HTTP REST API + Native Messaging
- Security: Localhost binding only (127.0.0.1:8765)
Chrome Extension Architecture
- Manifest Version: 3
- Service Worker: Handles background print requests
- Content Script: Integrates with Quality Recticel web pages
- Native Messaging: Communicates with Windows service
Security Considerations
- Service only accepts local connections (localhost)
- No external network access required
- Chrome extension runs in sandboxed environment
- Windows service runs with system privileges (required for printing)
📋 Quick Start Checklist
- Download
windows_print_servicefolder - Right-click
install_service.bat→ "Run as administrator" - Install Chrome extension from
chrome_extensionfolder - Verify service at
http://localhost:8765/health - Test printing from Quality Recticel web application
Installation Time: ~5 minutes
User Training Required: Minimal (automatic detection and fallback)
Maintenance: Zero (auto-starts with Windows)
For additional support, check the log files and diagnostic commands listed above.