361 lines
10 KiB
Markdown
Executable File
361 lines
10 KiB
Markdown
Executable File
# 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 framework
|
|
- `flask-cors` - Cross-origin resource sharing
|
|
- `requests` - HTTP client library
|
|
- `pywin32` - Windows service integration
|
|
|
|
## 🚀 Installation Process
|
|
|
|
### Step 1: Download and Extract Files
|
|
|
|
1. Download the `windows_print_service` folder to your system
|
|
2. Extract to a permanent location (e.g., `C:\QualityRecticel\PrintService\`)
|
|
3. **Do not move or delete this folder after installation**
|
|
|
|
### Step 2: Install Windows Service
|
|
|
|
#### Method A: Automated Installation (Recommended)
|
|
|
|
1. **Right-click** on `install_service.bat`
|
|
2. Select **"Run as administrator"**
|
|
3. Click **"Yes"** when Windows UAC prompt appears
|
|
4. Wait for installation to complete
|
|
|
|
#### Method B: Manual Installation
|
|
|
|
If the automated script fails, follow these steps:
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. Open **Google Chrome**
|
|
2. Navigate to `chrome://extensions/`
|
|
3. Enable **"Developer mode"** (toggle in top-right corner)
|
|
4. Click **"Load unpacked"**
|
|
5. Select the `chrome_extension` folder
|
|
6. Verify the extension appears with a printer icon
|
|
|
|
### Step 4: Verify Installation
|
|
|
|
#### Check Windows Service Status
|
|
|
|
1. Press `Win + R`, type `services.msc`, press Enter
|
|
2. Look for **"Quality Recticel Print Service"**
|
|
3. Status should show **"Running"**
|
|
4. 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:
|
|
```json
|
|
{
|
|
"status": "healthy",
|
|
"service": "Quality Recticel Print Service",
|
|
"version": "1.0",
|
|
"timestamp": "2025-09-21T10:30:00"
|
|
}
|
|
```
|
|
|
|
#### Test Chrome Extension
|
|
|
|
1. Click the extension icon in Chrome toolbar
|
|
2. Verify it shows "Service Status: Connected ✅"
|
|
3. Check that printers are listed
|
|
4. 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
|
|
```javascript
|
|
// 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 functionality
|
|
- `nativeMessaging` - Communication with Windows service
|
|
- `activeTab` - Access to current webpage
|
|
- `storage` - Save extension settings
|
|
|
|
## 🔍 Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### 1. Service Not Starting
|
|
**Symptoms**: API not accessible at localhost:8765
|
|
**Solutions**:
|
|
```bash
|
|
# 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**:
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. Stop the current service:
|
|
```bash
|
|
python service_manager.py stop
|
|
```
|
|
|
|
2. Replace service files with new versions
|
|
|
|
3. Restart the service:
|
|
```bash
|
|
python service_manager.py start
|
|
```
|
|
|
|
### Uninstalling
|
|
|
|
#### Remove Chrome Extension
|
|
1. Go to `chrome://extensions/`
|
|
2. Find "Quality Recticel Print Service"
|
|
3. Click "Remove"
|
|
|
|
#### Remove Windows Service
|
|
```bash
|
|
# Run as Administrator
|
|
python service_manager.py uninstall
|
|
```
|
|
|
|
#### Remove Firewall Rule
|
|
```bash
|
|
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**:
|
|
```json
|
|
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**:
|
|
```json
|
|
{
|
|
"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_service` folder
|
|
- [ ] Right-click `install_service.bat` → "Run as administrator"
|
|
- [ ] Install Chrome extension from `chrome_extension` folder
|
|
- [ ] 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. |