@crowsgear/escl-protocol-scanner 1.0.6 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -583
- package/dist/client.d.ts +8 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +40 -8
- package/dist/client.js.map +1 -1
- package/dist/discovery.d.ts +2 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +3 -2
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/python/__pycache__/base.cpython-312.pyc +0 -0
- package/python/__pycache__/escl_backend.cpython-312.pyc +0 -0
package/README.md
CHANGED
|
@@ -1,663 +1,191 @@
|
|
|
1
|
-
# @escl-protocol
|
|
1
|
+
# @crowsgear/escl-protocol-scanner
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Network scanner library based on eSCL/AirPrint protocol.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
- 🔍 **Automatic Scanner Discovery**: Uses mDNS/Bonjour to discover eSCL-compatible scanners on the local network
|
|
8
|
-
- 📡 **HTTP-based Communication**: eSCL protocol built on HTTP for reliable device communication
|
|
9
|
-
- 🎨 **Multiple Color Modes**: Support for Black & White, Grayscale, and Full Color scanning
|
|
10
|
-
- 📊 **Flexible Resolution**: Supports various DPI settings (150, 200, 300, 600 DPI, etc.)
|
|
11
|
-
- 📄 **Multi-source Scanning**: Platen (flatbed) and ADF (Automatic Document Feeder) support
|
|
12
|
-
- 📸 **Image Processing**: Automatic rotation correction and PNG encoding
|
|
13
|
-
- 🔧 **Python Backend**: Uses Python subprocess for reliable mDNS discovery via zeroconf
|
|
14
|
-
- ✨ **Production Ready**: Mature implementation from scanner-net project
|
|
15
|
-
|
|
16
|
-
## Supported Devices
|
|
17
|
-
|
|
18
|
-
Compatible with network scanners from major manufacturers:
|
|
19
|
-
- **Canon**: iR-series MFP devices
|
|
20
|
-
- **HP**: LaserJet MFP devices
|
|
21
|
-
- **Xerox**: WorkCentre series
|
|
22
|
-
- **Ricoh**: MP series
|
|
23
|
-
- **Epson**: WorkForce Pro series
|
|
24
|
-
- **And other AirPrint-compatible MFP devices**
|
|
5
|
+
> **Note**: This library only supports network-connected scanners (WiFi or LAN). USB scanners are not supported - use WIA (Windows) or system scan dialog instead.
|
|
25
6
|
|
|
26
7
|
## Installation
|
|
27
8
|
|
|
28
|
-
### Prerequisites
|
|
29
|
-
- Node.js ≥ 14.0.0
|
|
30
|
-
- Python 3.6+
|
|
31
|
-
- Python packages: `zeroconf`, `pillow`
|
|
32
|
-
|
|
33
|
-
### Step 1: Install Package
|
|
34
|
-
|
|
35
9
|
```bash
|
|
36
|
-
npm install @escl-protocol
|
|
10
|
+
npm install @crowsgear/escl-protocol-scanner
|
|
37
11
|
# or
|
|
38
|
-
yarn add @escl-protocol
|
|
12
|
+
yarn add @crowsgear/escl-protocol-scanner
|
|
39
13
|
```
|
|
40
14
|
|
|
41
|
-
|
|
42
|
-
1. Check for required Python packages (`zeroconf`, `pillow`)
|
|
43
|
-
2. **Interactively ask** if you want to install missing packages
|
|
44
|
-
3. Install to the Python environment specified by `PYTHON_PATH` (or system python3)
|
|
15
|
+
### Python Dependencies
|
|
45
16
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
#### Option A: Using Virtual Environment (Recommended)
|
|
17
|
+
Requires Python 3.6+ and the following packages:
|
|
49
18
|
|
|
50
19
|
```bash
|
|
51
|
-
# 1. Create virtual environment
|
|
52
|
-
python3 -m venv venv
|
|
53
|
-
|
|
54
|
-
# 2. Get absolute path to Python executable
|
|
55
|
-
# Copy the full path (e.g., /Users/username/project/venv/bin/python3)
|
|
56
|
-
python3 -c "import sys; print(sys.executable)"
|
|
57
|
-
|
|
58
|
-
# 3. Install Python packages
|
|
59
|
-
source venv/bin/activate
|
|
60
20
|
pip install zeroconf pillow
|
|
61
|
-
|
|
62
|
-
# 4. Set PYTHON_PATH using ABSOLUTE path (important!)
|
|
63
|
-
# Use the full path from step 2, e.g.:
|
|
64
|
-
export PYTHON_PATH=/Users/username/project/venv/bin/python3
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
⚠️ **Important**: Always use **absolute path** for `PYTHON_PATH`, not relative paths like `./venv/bin/python3`
|
|
68
|
-
|
|
69
|
-
#### Option B: Using System Python
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
# Just ensure Python packages are installed
|
|
73
|
-
pip3 install zeroconf pillow
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Runtime Configuration
|
|
77
|
-
|
|
78
|
-
### Using Virtual Environment
|
|
79
|
-
|
|
80
|
-
Set the `PYTHON_PATH` environment variable when running your application:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
# Option 1: Export before running
|
|
84
|
-
export PYTHON_PATH=./venv/bin/python3
|
|
85
|
-
npm start
|
|
86
|
-
|
|
87
|
-
# Option 2: One-liner
|
|
88
|
-
PYTHON_PATH=./venv/bin/python3 npm start
|
|
89
|
-
|
|
90
|
-
# Option 3: In package.json scripts
|
|
91
|
-
{
|
|
92
|
-
"scripts": {
|
|
93
|
-
"start": "PYTHON_PATH=./venv/bin/python3 electron ."
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Environment-Specific Setup
|
|
99
|
-
|
|
100
|
-
Create separate `.env` files for different environments:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
# .env.dev
|
|
104
|
-
PYTHON_PATH=./venv-dev/bin/python3
|
|
105
|
-
|
|
106
|
-
# .env.staging
|
|
107
|
-
PYTHON_PATH=./venv-staging/bin/python3
|
|
108
|
-
|
|
109
|
-
# .env.production
|
|
110
|
-
PYTHON_PATH=/usr/local/bin/python3
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Then activate the appropriate environment:
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
source .env.dev
|
|
117
|
-
npm start
|
|
118
21
|
```
|
|
119
22
|
|
|
120
23
|
## Quick Start
|
|
121
24
|
|
|
122
|
-
###
|
|
25
|
+
### 1. Discover Scanners
|
|
123
26
|
|
|
124
27
|
```typescript
|
|
125
|
-
import { discoverScanners
|
|
126
|
-
|
|
127
|
-
async function example() {
|
|
128
|
-
// 1. Discover available scanners (5 second discovery window)
|
|
129
|
-
const scanners = await discoverScanners(5000);
|
|
130
|
-
console.log(`Found ${scanners.length} scanners`);
|
|
131
|
-
|
|
132
|
-
if (scanners.length === 0) {
|
|
133
|
-
console.log('No scanners found on network');
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// 2. Get scanner info
|
|
138
|
-
const scanner = scanners[0];
|
|
139
|
-
console.log(`Scanner: ${scanner.name}`);
|
|
140
|
-
console.log(`Host: ${scanner.host}:${scanner.port}`);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
example();
|
|
144
|
-
```
|
|
28
|
+
import { discoverScanners } from "@crowsgear/escl-protocol-scanner";
|
|
145
29
|
|
|
146
|
-
|
|
30
|
+
// Basic usage (uses system Python)
|
|
31
|
+
const result = await discoverScanners(10000);
|
|
147
32
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
// Quick discovery
|
|
152
|
-
const scanners = await discoverScanners(5000);
|
|
153
|
-
|
|
154
|
-
scanners.forEach(scanner => {
|
|
155
|
-
console.log(`${scanner.name} at ${scanner.host}:${scanner.port}`);
|
|
156
|
-
if (scanner.manufacturer) {
|
|
157
|
-
console.log(` Manufacturer: ${scanner.manufacturer}`);
|
|
158
|
-
}
|
|
159
|
-
if (scanner.model) {
|
|
160
|
-
console.log(` Model: ${scanner.model}`);
|
|
161
|
-
}
|
|
33
|
+
// Specify Python path directly (recommended)
|
|
34
|
+
const result = await discoverScanners(10000, {
|
|
35
|
+
pythonPath: "/path/to/.venv/bin/python3",
|
|
162
36
|
});
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Get Scanner Capabilities
|
|
166
|
-
|
|
167
|
-
```typescript
|
|
168
|
-
import { discoverScanners, ESCLClient } from '@escl-protocol/scanner';
|
|
169
|
-
|
|
170
|
-
const scanners = await discoverScanners(5000);
|
|
171
|
-
const client = new ESCLClient();
|
|
172
|
-
|
|
173
|
-
const capabilities = await client.getCapabilities(scanners[0]);
|
|
174
|
-
if (capabilities) {
|
|
175
|
-
console.log('Supported Resolutions:', capabilities.resolutions);
|
|
176
|
-
console.log('Color Modes:', capabilities.colorModes);
|
|
177
|
-
console.log('Scan Sources:', capabilities.sources);
|
|
178
|
-
}
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### Perform a Scan
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
import { discoverScanners, ESCLClient } from '@escl-protocol/scanner';
|
|
185
|
-
|
|
186
|
-
const scanners = await discoverScanners(5000);
|
|
187
|
-
const client = new ESCLClient();
|
|
188
|
-
|
|
189
|
-
// Create scan job
|
|
190
|
-
const jobId = await client.createScanJob(
|
|
191
|
-
scanners[0],
|
|
192
|
-
300, // DPI (300 DPI)
|
|
193
|
-
'RGB24', // Color mode (Full Color)
|
|
194
|
-
'Platen' // Source (Flatbed)
|
|
195
|
-
);
|
|
196
|
-
|
|
197
|
-
if (!jobId) {
|
|
198
|
-
console.error('Failed to create scan job');
|
|
199
|
-
process.exit(1);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// Poll for completion
|
|
203
|
-
let completed = false;
|
|
204
|
-
let attempts = 0;
|
|
205
|
-
|
|
206
|
-
while (!completed && attempts < 30) {
|
|
207
|
-
const status = await client.getScanJobStatus(scanners[0], jobId);
|
|
208
|
-
|
|
209
|
-
if (status.status === 'Completed') {
|
|
210
|
-
// Download images
|
|
211
|
-
for (const imageUrl of status.images) {
|
|
212
|
-
const imageBuffer = await client.downloadImage(scanners[0], imageUrl);
|
|
213
|
-
if (imageBuffer) {
|
|
214
|
-
console.log('Downloaded image:', imageBuffer.length, 'bytes');
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
completed = true;
|
|
218
|
-
} else if (status.status === 'Aborted') {
|
|
219
|
-
console.error('Scan was aborted');
|
|
220
|
-
process.exit(1);
|
|
221
|
-
} else {
|
|
222
|
-
console.log(`Scan progress: ${status.status}`);
|
|
223
|
-
// Wait before next poll
|
|
224
|
-
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
225
|
-
attempts++;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
37
|
|
|
229
|
-
if (
|
|
230
|
-
|
|
231
|
-
process.exit(1);
|
|
38
|
+
if (result.success && result.data.length > 0) {
|
|
39
|
+
console.log("Found scanners:", result.data);
|
|
232
40
|
}
|
|
233
41
|
```
|
|
234
42
|
|
|
235
|
-
###
|
|
236
|
-
|
|
237
|
-
For simple one-off scans:
|
|
43
|
+
### 2. Get Scanner Capabilities
|
|
238
44
|
|
|
239
45
|
```typescript
|
|
240
|
-
import {
|
|
241
|
-
|
|
242
|
-
const scanners = await discoverScanners(5000);
|
|
46
|
+
import { ESCLClient } from "@crowsgear/escl-protocol-scanner";
|
|
243
47
|
|
|
244
|
-
const
|
|
245
|
-
|
|
246
|
-
dpi: 300,
|
|
247
|
-
mode: 'color', // 'bw' | 'gray' | 'color'
|
|
248
|
-
source: 'Platen', // 'Platen' | 'Feeder'
|
|
249
|
-
timeout: 30000
|
|
250
|
-
});
|
|
48
|
+
const client = new ESCLClient(10000);
|
|
49
|
+
const capabilities = await client.getCapabilities(scanner);
|
|
251
50
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
51
|
+
// capabilities structure:
|
|
52
|
+
// {
|
|
53
|
+
// resolutions: [100, 200, 300, 600], // Supported DPI
|
|
54
|
+
// colorModes: ['BlackAndWhite1', 'Grayscale8', 'RGB24'],
|
|
55
|
+
// sources: ['Platen', 'Adf'], // Platen=flatbed, Adf=feeder
|
|
56
|
+
// maxWidth: 297, // Max scan width (mm)
|
|
57
|
+
// maxHeight: 432 // Max scan height (mm)
|
|
58
|
+
// }
|
|
256
59
|
```
|
|
257
60
|
|
|
258
|
-
|
|
61
|
+
### 3. Perform Scan
|
|
259
62
|
|
|
260
|
-
The library provides two different ways to perform scans, each with different use cases:
|
|
261
|
-
|
|
262
|
-
### Low-Level API: `client.createScanJob()`
|
|
263
|
-
|
|
264
|
-
**Use this when you need:**
|
|
265
|
-
- Fine-grained control over the scanning process
|
|
266
|
-
- Custom polling intervals or timeout logic
|
|
267
|
-
- To handle batch scanning with specific error recovery
|
|
268
|
-
- Advanced features like job cancellation
|
|
269
|
-
|
|
270
|
-
**How it works:**
|
|
271
|
-
1. Create scan job with parameters → returns Job ID
|
|
272
|
-
2. Poll `getScanJobStatus()` to check completion
|
|
273
|
-
3. Download each image with `downloadImage()`
|
|
274
|
-
4. Manually manage job lifecycle
|
|
275
|
-
|
|
276
|
-
**Example:**
|
|
277
63
|
```typescript
|
|
278
|
-
|
|
279
|
-
const jobId = await client.createScanJob(scanner, 300, 'RGB24', 'Platen');
|
|
280
|
-
|
|
281
|
-
// Step 2: Poll for completion with custom logic
|
|
282
|
-
while (!completed) {
|
|
283
|
-
const status = await client.getScanJobStatus(scanner, jobId);
|
|
284
|
-
|
|
285
|
-
if (status.status === 'Completed') {
|
|
286
|
-
// Step 3: Download images
|
|
287
|
-
for (const imageUrl of status.images) {
|
|
288
|
-
const buffer = await client.downloadImage(scanner, imageUrl);
|
|
289
|
-
// Custom processing...
|
|
290
|
-
}
|
|
291
|
-
completed = true;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
await new Promise(r => setTimeout(r, 1000)); // Custom delay
|
|
295
|
-
}
|
|
296
|
-
```
|
|
64
|
+
import { quickScan } from "@crowsgear/escl-protocol-scanner";
|
|
297
65
|
|
|
298
|
-
**Pros:**
|
|
299
|
-
- Maximum flexibility and control
|
|
300
|
-
- Custom error handling strategies
|
|
301
|
-
- Can implement custom polling logic
|
|
302
|
-
- Direct access to job status
|
|
303
|
-
|
|
304
|
-
**Cons:**
|
|
305
|
-
- More code to write and maintain
|
|
306
|
-
- More opportunities for bugs
|
|
307
|
-
- Requires manual resource cleanup
|
|
308
|
-
|
|
309
|
-
### High-Level API: `quickScan()`
|
|
310
|
-
|
|
311
|
-
**Use this when you need:**
|
|
312
|
-
- Simple one-shot scanning (most common case)
|
|
313
|
-
- Fast implementation without boilerplate
|
|
314
|
-
- Automatic error handling and cleanup
|
|
315
|
-
- Sensible defaults for typical scanning scenarios
|
|
316
|
-
|
|
317
|
-
**How it works:**
|
|
318
|
-
1. Creates scan job automatically
|
|
319
|
-
2. Waits and polls for completion (~5 second intervals)
|
|
320
|
-
3. Downloads all images
|
|
321
|
-
4. Saves to disk automatically
|
|
322
|
-
5. Cleans up job automatically
|
|
323
|
-
|
|
324
|
-
**Example:**
|
|
325
|
-
```typescript
|
|
326
66
|
const filePaths = await quickScan({
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
67
|
+
scanner: scanner,
|
|
68
|
+
dpi: 300,
|
|
69
|
+
mode: "color", // 'bw' | 'gray' | 'color'
|
|
70
|
+
source: "Platen", // 'Platen' | 'Feeder'
|
|
71
|
+
savePath: "/save/path",
|
|
72
|
+
width: 210, // Scan width in mm (default: 210 = A4)
|
|
73
|
+
height: 297, // Scan height in mm (default: 297 = A4)
|
|
74
|
+
timeout: 30000,
|
|
332
75
|
});
|
|
333
76
|
|
|
334
77
|
if (filePaths) {
|
|
335
|
-
|
|
336
|
-
filePaths.forEach(path => console.log(` - ${path}`));
|
|
78
|
+
console.log("Saved files:", filePaths);
|
|
337
79
|
}
|
|
338
80
|
```
|
|
339
81
|
|
|
340
|
-
|
|
341
|
-
- Minimal code required
|
|
342
|
-
- Automatic cleanup on success/failure
|
|
343
|
-
- Returns file paths ready for use
|
|
344
|
-
- Built-in error handling
|
|
345
|
-
- Best for simple scanning tasks
|
|
346
|
-
|
|
347
|
-
**Cons:**
|
|
348
|
-
- Less control over polling
|
|
349
|
-
- Fixed timeout/retry logic
|
|
350
|
-
- Cannot implement custom scanning workflows
|
|
351
|
-
|
|
352
|
-
### Comparison Table
|
|
353
|
-
|
|
354
|
-
| Feature | `createScanJob()` | `quickScan()` |
|
|
355
|
-
|---------|-------------------|---------------|
|
|
356
|
-
| **Typical Use** | Advanced, custom workflows | Simple one-shot scans |
|
|
357
|
-
| **Code Required** | ~30+ lines | ~10 lines |
|
|
358
|
-
| **Control Level** | Full | Limited |
|
|
359
|
-
| **Error Handling** | Manual | Automatic |
|
|
360
|
-
| **Cleanup** | Manual | Automatic |
|
|
361
|
-
| **Polling Logic** | Custom | Built-in (~5s intervals) |
|
|
362
|
-
| **Return Type** | Job ID (string) | File paths (string[]) |
|
|
363
|
-
| **Learning Curve** | Moderate | Easy |
|
|
364
|
-
| **Best For** | Integrations, batch jobs | Desktop apps, CLI tools |
|
|
365
|
-
|
|
366
|
-
### Recommendation
|
|
367
|
-
|
|
368
|
-
**Choose `quickScan()` unless you have specific reasons not to:**
|
|
369
|
-
- It's the recommended approach for most use cases
|
|
370
|
-
- Handles all the complexity automatically
|
|
371
|
-
- Reduces bugs and improves maintainability
|
|
372
|
-
- Perfect for Electron, CLI, and batch applications
|
|
373
|
-
|
|
374
|
-
**Choose `createScanJob()` only if:**
|
|
375
|
-
- You need custom polling behavior
|
|
376
|
-
- Implementing a queue system
|
|
377
|
-
- Building advanced scanning workflows
|
|
378
|
-
- Integrating with custom error handling
|
|
379
|
-
|
|
380
|
-
## API Reference
|
|
381
|
-
|
|
382
|
-
### Types
|
|
383
|
-
|
|
384
|
-
#### `ESCLScanner`
|
|
385
|
-
```typescript
|
|
386
|
-
interface ESCLScanner {
|
|
387
|
-
name: string; // Scanner display name
|
|
388
|
-
host: string; // IP address
|
|
389
|
-
port: number; // HTTP port (usually 80)
|
|
390
|
-
serviceName?: string; // Full mDNS service name
|
|
391
|
-
model?: string; // Device model (if available)
|
|
392
|
-
manufacturer?: string; // Device manufacturer (if available)
|
|
393
|
-
}
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
#### `ESCLCapabilities`
|
|
397
|
-
```typescript
|
|
398
|
-
interface ESCLCapabilities {
|
|
399
|
-
resolutions: number[]; // Available DPI values
|
|
400
|
-
colorModes: ('BlackAndWhite1' | 'Grayscale8' | 'RGB24')[]; // Available color modes
|
|
401
|
-
sources: ('Platen' | 'Adf' | 'Feeder')[]; // Available scan sources
|
|
402
|
-
}
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
### Classes
|
|
82
|
+
## Paper Size Reference
|
|
406
83
|
|
|
407
|
-
|
|
84
|
+
| Paper | Width (mm) | Height (mm) |
|
|
85
|
+
| ------ | ---------- | ----------- |
|
|
86
|
+
| A4 | 210 | 297 |
|
|
87
|
+
| A3 | 297 | 420 |
|
|
88
|
+
| Letter | 216 | 279 |
|
|
89
|
+
| Legal | 216 | 356 |
|
|
408
90
|
|
|
409
|
-
|
|
91
|
+
## Cross-Platform Python Path
|
|
410
92
|
|
|
411
93
|
```typescript
|
|
412
|
-
|
|
413
|
-
constructor(timeout?: number);
|
|
94
|
+
import path from "path";
|
|
414
95
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
```
|
|
421
|
-
|
|
422
|
-
#### `ESCLDiscovery`
|
|
423
|
-
|
|
424
|
-
Scanner discovery service using Python subprocess with zeroconf.
|
|
96
|
+
const projectRoot = process.cwd();
|
|
97
|
+
const pythonPath =
|
|
98
|
+
process.platform === "win32"
|
|
99
|
+
? path.join(projectRoot, ".venv", "python.exe")
|
|
100
|
+
: path.join(projectRoot, ".venv", "bin", "python3");
|
|
425
101
|
|
|
426
|
-
|
|
427
|
-
class ESCLDiscovery {
|
|
428
|
-
constructor(timeout?: number);
|
|
429
|
-
|
|
430
|
-
async startDiscovery(): Promise<ESCLScanner[]>;
|
|
431
|
-
stopDiscovery(): void;
|
|
432
|
-
getScanners(): ESCLScanner[];
|
|
433
|
-
onScannerDiscovered(callback: (scanners: ESCLScanner[]) => void): void;
|
|
434
|
-
offScannerDiscovered(callback: (scanners: ESCLScanner[]) => void): void;
|
|
435
|
-
}
|
|
102
|
+
const result = await discoverScanners(10000, { pythonPath });
|
|
436
103
|
```
|
|
437
104
|
|
|
438
|
-
|
|
105
|
+
## API
|
|
439
106
|
|
|
440
|
-
|
|
107
|
+
### discoverScanners(timeout, options?)
|
|
441
108
|
|
|
442
|
-
|
|
109
|
+
Discovers eSCL scanners on the network.
|
|
443
110
|
|
|
444
111
|
```typescript
|
|
445
|
-
const
|
|
112
|
+
const result = await discoverScanners(10000, { pythonPath: "/path/to/python3" });
|
|
113
|
+
// result: { success: boolean, data: ESCLScanner[], error?: string }
|
|
446
114
|
```
|
|
447
115
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
Convenience function for simple scan workflow.
|
|
116
|
+
### ESCLClient
|
|
451
117
|
|
|
452
118
|
```typescript
|
|
453
|
-
const
|
|
454
|
-
scanner: device,
|
|
455
|
-
dpi: 300,
|
|
456
|
-
mode: 'color',
|
|
457
|
-
source: 'Platen',
|
|
458
|
-
timeout: 30000
|
|
459
|
-
});
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
## Architecture
|
|
463
|
-
|
|
464
|
-
### How It Works
|
|
465
|
-
|
|
466
|
-
1. **Discovery**: JavaScript code spawns a Python subprocess (`escl_main.py`)
|
|
467
|
-
2. **Python Subprocess**: Uses `zeroconf` library to discover eSCL scanners on the network via mDNS
|
|
468
|
-
3. **Communication**: JSON-RPC over stdin/stdout between Node.js and Python
|
|
469
|
-
4. **Image Processing**: Python handles image rotation and PNG encoding
|
|
470
|
-
|
|
471
|
-
### Design Rationale
|
|
119
|
+
const client = new ESCLClient(timeout?: number);
|
|
472
120
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
- **JSON-RPC Protocol**: Simple, reliable IPC between Node.js and Python processes
|
|
476
|
-
- **Image Encoding**: Base64 PNG encoding for safe cross-process transmission
|
|
121
|
+
// Get scanner capabilities
|
|
122
|
+
const caps = await client.getCapabilities(scanner, debug?: boolean);
|
|
477
123
|
|
|
478
|
-
|
|
124
|
+
// Create scan job
|
|
125
|
+
const jobId = await client.createScanJob(
|
|
126
|
+
scanner,
|
|
127
|
+
dpi: number,
|
|
128
|
+
colorMode: string, // 'BlackAndWhite1' | 'Grayscale8' | 'RGB24'
|
|
129
|
+
source: string, // 'Platen' | 'Feeder'
|
|
130
|
+
width?: number, // mm (default: 210)
|
|
131
|
+
height?: number // mm (default: 297)
|
|
132
|
+
);
|
|
479
133
|
|
|
480
|
-
|
|
134
|
+
// Check scan status
|
|
135
|
+
const status = await client.getScanJobStatus(scanner, jobId);
|
|
481
136
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
export PYTHON_PATH=python3
|
|
485
|
-
|
|
486
|
-
# Logging (if implemented)
|
|
487
|
-
export ESCL_DEBUG=1
|
|
137
|
+
// Download image
|
|
138
|
+
const buffer = await client.downloadImage(scanner, imageUrl);
|
|
488
139
|
```
|
|
489
140
|
|
|
490
|
-
###
|
|
141
|
+
### quickScan(params)
|
|
142
|
+
|
|
143
|
+
Convenience function - handles scan job creation to image saving in one call.
|
|
491
144
|
|
|
492
145
|
```typescript
|
|
493
|
-
const
|
|
494
|
-
|
|
146
|
+
const filePaths = await quickScan({
|
|
147
|
+
scanner: ESCLScanner,
|
|
148
|
+
dpi: number,
|
|
149
|
+
mode: 'bw' | 'gray' | 'color',
|
|
150
|
+
source: 'Platen' | 'Feeder',
|
|
151
|
+
savePath?: string, // Save path (default: cwd)
|
|
152
|
+
width?: number, // mm (default: 210)
|
|
153
|
+
height?: number, // mm (default: 297)
|
|
154
|
+
timeout?: number
|
|
155
|
+
});
|
|
495
156
|
```
|
|
496
157
|
|
|
497
|
-
##
|
|
498
|
-
|
|
499
|
-
### Scanners Not Found
|
|
500
|
-
|
|
501
|
-
1. **Check Python Dependencies**:
|
|
502
|
-
```bash
|
|
503
|
-
pip install zeroconf pillow
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
2. **Verify Network**:
|
|
507
|
-
- Ensure scanner is on same network as computer
|
|
508
|
-
- Check scanner is powered on and connected
|
|
509
|
-
- Verify network is mDNS-enabled (not blocked by firewall)
|
|
510
|
-
|
|
511
|
-
3. **Enable Debug Output**:
|
|
512
|
-
```typescript
|
|
513
|
-
import { ESCLDiscovery } from '@escl-protocol/scanner';
|
|
514
|
-
const discovery = new ESCLDiscovery();
|
|
515
|
-
// Check stderr output for Python errors
|
|
516
|
-
```
|
|
517
|
-
|
|
518
|
-
### Connection Refused
|
|
519
|
-
|
|
520
|
-
1. Verify scanner IP and port (usually port 80)
|
|
521
|
-
2. Ensure firewall allows HTTP access to scanner
|
|
522
|
-
3. Check scanner supports eSCL protocol (AirPrint-compatible)
|
|
523
|
-
|
|
524
|
-
### Scan Timeouts
|
|
525
|
-
|
|
526
|
-
1. Increase timeout value:
|
|
527
|
-
```typescript
|
|
528
|
-
const client = new ESCLClient(30000); // 30 seconds
|
|
529
|
-
```
|
|
530
|
-
|
|
531
|
-
2. Check scanner network latency
|
|
532
|
-
3. Reduce scan resolution for slower networks
|
|
533
|
-
|
|
534
|
-
### Image Processing Issues
|
|
535
|
-
|
|
536
|
-
1. Verify `pillow` library is installed:
|
|
537
|
-
```bash
|
|
538
|
-
pip install --upgrade pillow
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
2. Check disk space for image temporary files
|
|
542
|
-
3. Verify scanner outputs valid PNG/JPEG images
|
|
543
|
-
|
|
544
|
-
## Error Handling
|
|
158
|
+
## Types
|
|
545
159
|
|
|
546
160
|
```typescript
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
const capabilities = await client.getCapabilities(scanners[0]);
|
|
555
|
-
if (!capabilities) {
|
|
556
|
-
throw new Error('Failed to get capabilities');
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
const jobId = await client.createScanJob(scanners[0], 300, 'RGB24', 'Platen');
|
|
560
|
-
if (!jobId) {
|
|
561
|
-
throw new Error('Failed to create scan job');
|
|
562
|
-
}
|
|
563
|
-
} catch (error) {
|
|
564
|
-
console.error('eSCL operation failed:', error.message);
|
|
565
|
-
// Handle error appropriately
|
|
161
|
+
interface ESCLScanner {
|
|
162
|
+
name: string;
|
|
163
|
+
host: string;
|
|
164
|
+
port: number;
|
|
165
|
+
model?: string;
|
|
166
|
+
manufacturer?: string;
|
|
566
167
|
}
|
|
567
|
-
```
|
|
568
|
-
|
|
569
|
-
## Performance Considerations
|
|
570
|
-
|
|
571
|
-
- **Discovery Time**: ~5 seconds for local network scan
|
|
572
|
-
- **Scan Time**: Varies by document size, DPI, and network latency
|
|
573
|
-
- Single page A4 at 300 DPI: typically 5-10 seconds
|
|
574
|
-
- Large batch jobs: minutes depending on document count
|
|
575
|
-
- **Memory Usage**: Python subprocess uses ~50-100MB when idle
|
|
576
|
-
- **Network**: Requires local network access to scanners (no internet required)
|
|
577
|
-
|
|
578
|
-
## Compatibility
|
|
579
|
-
|
|
580
|
-
### Operating Systems
|
|
581
|
-
- ✅ macOS 10.14+
|
|
582
|
-
- ✅ Linux (Ubuntu 18.04+, CentOS 7+, etc.)
|
|
583
|
-
- ✅ Windows 10+ (with Python 3.6+)
|
|
584
|
-
|
|
585
|
-
### Node.js Versions
|
|
586
|
-
- ✅ Node.js 14.x
|
|
587
|
-
- ✅ Node.js 16.x
|
|
588
|
-
- ✅ Node.js 18.x
|
|
589
|
-
- ✅ Node.js 20.x
|
|
590
|
-
|
|
591
|
-
### Scanner Models
|
|
592
|
-
- ✅ Canon: iR-ADV C series, iR 2500/3000 series
|
|
593
|
-
- ✅ HP: LaserJet Pro M series, MFP devices
|
|
594
|
-
- ✅ Xerox: WorkCentre 5000+ series
|
|
595
|
-
- ✅ Ricoh: MP C series
|
|
596
|
-
- ✅ Epson: WorkForce Pro series
|
|
597
|
-
- ✅ Brother: MFC series (eSCL enabled)
|
|
598
168
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
# Build TypeScript
|
|
608
|
-
yarn build
|
|
609
|
-
|
|
610
|
-
# Clean build artifacts
|
|
611
|
-
yarn clean
|
|
612
|
-
|
|
613
|
-
# Watch mode
|
|
614
|
-
yarn build:watch
|
|
615
|
-
```
|
|
616
|
-
|
|
617
|
-
### Project Structure
|
|
618
|
-
|
|
619
|
-
```
|
|
620
|
-
├── src/
|
|
621
|
-
│ ├── index.ts # Main entry point
|
|
622
|
-
│ ├── types.ts # TypeScript interfaces
|
|
623
|
-
│ ├── client.ts # eSCL HTTP client
|
|
624
|
-
│ ├── discovery.ts # Scanner discovery service
|
|
625
|
-
│ └── [...other files]
|
|
626
|
-
├── python/
|
|
627
|
-
│ ├── escl_main.py # Python subprocess entry point
|
|
628
|
-
│ ├── escl_backend.py # eSCL protocol implementation
|
|
629
|
-
│ └── base.py # Base class for backends
|
|
630
|
-
├── dist/ # Compiled JavaScript (generated)
|
|
631
|
-
├── package.json
|
|
632
|
-
└── README.md
|
|
169
|
+
interface ESCLCapabilities {
|
|
170
|
+
resolutions: number[];
|
|
171
|
+
colorModes: ("BlackAndWhite1" | "Grayscale8" | "RGB24")[];
|
|
172
|
+
sources: ("Platen" | "Adf" | "Feeder")[];
|
|
173
|
+
maxWidth?: number; // mm
|
|
174
|
+
maxHeight?: number; // mm
|
|
175
|
+
}
|
|
633
176
|
```
|
|
634
177
|
|
|
635
|
-
##
|
|
178
|
+
## Supported Scanners
|
|
636
179
|
|
|
637
|
-
|
|
180
|
+
AirPrint/eSCL compatible network scanners:
|
|
638
181
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
182
|
+
- Canon iR-ADV series
|
|
183
|
+
- HP LaserJet MFP
|
|
184
|
+
- Xerox WorkCentre
|
|
185
|
+
- Epson WorkForce Pro
|
|
186
|
+
- Other AirPrint compatible MFPs
|
|
187
|
+
- ...
|
|
643
188
|
|
|
644
189
|
## License
|
|
645
190
|
|
|
646
191
|
MIT
|
|
647
|
-
|
|
648
|
-
## Support
|
|
649
|
-
|
|
650
|
-
For issues, questions, or feature requests:
|
|
651
|
-
- GitHub Repository: [escl-protocol-scanner](https://github.com/byeong1/escl-protocol-scanner)
|
|
652
|
-
- GitHub Issues: [Report Issues](https://github.com/byeong1/escl-protocol-scanner/issues)
|
|
653
|
-
- npm Package: [@escl-protocol/scanner](https://www.npmjs.com/package/@escl-protocol/scanner)
|
|
654
|
-
- Email: your-email@example.com
|
|
655
|
-
|
|
656
|
-
## Changelog
|
|
657
|
-
|
|
658
|
-
### Version 1.0.0 (Initial Release)
|
|
659
|
-
- Basic eSCL protocol support
|
|
660
|
-
- Scanner discovery via mDNS
|
|
661
|
-
- Single and batch scanning
|
|
662
|
-
- Image rotation and encoding
|
|
663
|
-
- Support for multiple manufacturers
|
package/dist/client.d.ts
CHANGED
|
@@ -23,9 +23,11 @@ export declare class ESCLClient {
|
|
|
23
23
|
* @param dpi Resolution in DPI
|
|
24
24
|
* @param colorMode Color mode (BlackAndWhite1, Grayscale8, RGB24)
|
|
25
25
|
* @param source Scan source (Platen, Feeder)
|
|
26
|
+
* @param width Scan width in mm (optional)
|
|
27
|
+
* @param height Scan height in mm (optional)
|
|
26
28
|
* @returns Scan job UUID
|
|
27
29
|
*/
|
|
28
|
-
createScanJob(scanner: ESCLScanner, dpi: number, colorMode: string, source: string): Promise<string | null>;
|
|
30
|
+
createScanJob(scanner: ESCLScanner, dpi: number, colorMode: string, source: string, width?: number, height?: number): Promise<string | null>;
|
|
29
31
|
/**
|
|
30
32
|
* Poll scan job status
|
|
31
33
|
* @param scanner Target scanner
|
|
@@ -45,6 +47,11 @@ export declare class ESCLClient {
|
|
|
45
47
|
downloadImage(scanner: ESCLScanner, imageUrl: string): Promise<Buffer | null>;
|
|
46
48
|
/**
|
|
47
49
|
* Build eSCL scan settings XML
|
|
50
|
+
* @param dpi Resolution in DPI
|
|
51
|
+
* @param colorMode Color mode
|
|
52
|
+
* @param source Scan source
|
|
53
|
+
* @param width Scan width in mm (optional, default: 210mm = A4)
|
|
54
|
+
* @param height Scan height in mm (optional, default: 297mm = A4)
|
|
48
55
|
*/
|
|
49
56
|
private buildScanSettings;
|
|
50
57
|
/**
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAgB,MAAM,SAAS,CAAC;AAEtE;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,CAAC,EAAE,MAAM;IAM5B;;;;;OAKG;IACG,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAarG
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAgB,MAAM,SAAS,CAAC;AAEtE;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,CAAC,EAAE,MAAM;IAM5B;;;;;OAKG;IACG,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAarG;;;;;;;;;OASG;IACG,aAAa,CACjB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqBzB;;;;;OAKG;IACG,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QACnE,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;QAC3D,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IAyBF;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnF;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA+FzB;;OAEG;IACH,OAAO,CAAC,OAAO;IAyBf;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAmCjB"}
|
package/dist/client.js
CHANGED
|
@@ -72,11 +72,13 @@ class ESCLClient {
|
|
|
72
72
|
* @param dpi Resolution in DPI
|
|
73
73
|
* @param colorMode Color mode (BlackAndWhite1, Grayscale8, RGB24)
|
|
74
74
|
* @param source Scan source (Platen, Feeder)
|
|
75
|
+
* @param width Scan width in mm (optional)
|
|
76
|
+
* @param height Scan height in mm (optional)
|
|
75
77
|
* @returns Scan job UUID
|
|
76
78
|
*/
|
|
77
|
-
async createScanJob(scanner, dpi, colorMode, source) {
|
|
79
|
+
async createScanJob(scanner, dpi, colorMode, source, width, height) {
|
|
78
80
|
try {
|
|
79
|
-
const scanSettings = this.buildScanSettings(dpi, colorMode, source);
|
|
81
|
+
const scanSettings = this.buildScanSettings(dpi, colorMode, source, width, height);
|
|
80
82
|
const jobResponse = await this.httpPost(`http://${scanner.host}:${scanner.port}/eSCL/ScanJobs`, scanSettings);
|
|
81
83
|
// Extract job UUID from Location header or response
|
|
82
84
|
const jobMatch = jobResponse.match(/\/eSCL\/ScanJobs\/([a-f0-9-]+)/);
|
|
@@ -134,11 +136,18 @@ class ESCLClient {
|
|
|
134
136
|
}
|
|
135
137
|
/**
|
|
136
138
|
* Build eSCL scan settings XML
|
|
139
|
+
* @param dpi Resolution in DPI
|
|
140
|
+
* @param colorMode Color mode
|
|
141
|
+
* @param source Scan source
|
|
142
|
+
* @param width Scan width in mm (optional, default: 210mm = A4)
|
|
143
|
+
* @param height Scan height in mm (optional, default: 297mm = A4)
|
|
137
144
|
*/
|
|
138
|
-
buildScanSettings(dpi, colorMode, source) {
|
|
139
|
-
// Match the Python implementation which uses proper namespaces
|
|
145
|
+
buildScanSettings(dpi, colorMode, source, width, height) {
|
|
140
146
|
const ESCL_NS = 'http://schemas.hp.com/imaging/escl/2011/05/03';
|
|
141
147
|
const PWG_NS = 'http://www.pwg.org/schemas/2010/12/sm';
|
|
148
|
+
/* mm to 1/300 inch 변환 */
|
|
149
|
+
const widthInUnits = Math.round((width || 210) / 25.4 * 300);
|
|
150
|
+
const heightInUnits = Math.round((height || 297) / 25.4 * 300);
|
|
142
151
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
143
152
|
<scan:ScanSettings xmlns:scan="${ESCL_NS}" xmlns:pwg="${PWG_NS}">
|
|
144
153
|
<pwg:Version>2.0</pwg:Version>
|
|
@@ -148,8 +157,8 @@ class ESCLClient {
|
|
|
148
157
|
<pwg:ContentRegionUnits>escl:ThreeHundredthsOfInches</pwg:ContentRegionUnits>
|
|
149
158
|
<pwg:XOffset>0</pwg:XOffset>
|
|
150
159
|
<pwg:YOffset>0</pwg:YOffset>
|
|
151
|
-
<pwg:Width
|
|
152
|
-
<pwg:Height
|
|
160
|
+
<pwg:Width>${widthInUnits}</pwg:Width>
|
|
161
|
+
<pwg:Height>${heightInUnits}</pwg:Height>
|
|
153
162
|
</pwg:ScanRegion>
|
|
154
163
|
</pwg:ScanRegions>
|
|
155
164
|
<scan:Justification>
|
|
@@ -218,14 +227,37 @@ class ESCLClient {
|
|
|
218
227
|
sources.push('Adf');
|
|
219
228
|
}
|
|
220
229
|
}
|
|
230
|
+
// Extract max width and height (in 1/300 inch units, convert to mm)
|
|
231
|
+
let maxWidth;
|
|
232
|
+
let maxHeight;
|
|
233
|
+
const maxWidthMatch = xml.match(/<[a-z]*:?MaxWidth>(\d+)<\/[a-z]*:?MaxWidth>/);
|
|
234
|
+
const maxHeightMatch = xml.match(/<[a-z]*:?MaxHeight>(\d+)<\/[a-z]*:?MaxHeight>/);
|
|
235
|
+
if (maxWidthMatch) {
|
|
236
|
+
maxWidth = Math.round(parseInt(maxWidthMatch[1], 10) / 300 * 25.4);
|
|
237
|
+
}
|
|
238
|
+
if (maxHeightMatch) {
|
|
239
|
+
maxHeight = Math.round(parseInt(maxHeightMatch[1], 10) / 300 * 25.4);
|
|
240
|
+
}
|
|
221
241
|
// Remove duplicates from resolutions
|
|
222
242
|
const uniqueResolutions = Array.from(new Set(resolutions)).sort((a, b) => a - b);
|
|
223
243
|
const uniqueColorModes = Array.from(new Set(colorModes));
|
|
224
244
|
const uniqueSources = Array.from(new Set(sources));
|
|
225
245
|
if (debug) {
|
|
226
|
-
console.log('[eSCL] Parsed capabilities:', {
|
|
246
|
+
console.log('[eSCL] Parsed capabilities:', {
|
|
247
|
+
resolutions: uniqueResolutions,
|
|
248
|
+
colorModes: uniqueColorModes,
|
|
249
|
+
sources: uniqueSources,
|
|
250
|
+
maxWidth,
|
|
251
|
+
maxHeight
|
|
252
|
+
});
|
|
227
253
|
}
|
|
228
|
-
return {
|
|
254
|
+
return {
|
|
255
|
+
resolutions: uniqueResolutions,
|
|
256
|
+
colorModes: uniqueColorModes,
|
|
257
|
+
sources: uniqueSources,
|
|
258
|
+
maxWidth,
|
|
259
|
+
maxHeight
|
|
260
|
+
};
|
|
229
261
|
}
|
|
230
262
|
/**
|
|
231
263
|
* HTTP GET request
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAG7B;;;GAGG;AACH,MAAa,UAAU;IAGrB,YAAY,OAAgB;QAFpB,YAAO,GAAW,KAAK,CAAC;QAG9B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,OAAoB,EAAE,QAAiB,KAAK;QAChE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,UAAU,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,2BAA2B,CAClE,CAAC;YAEF,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,OAAO,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/discovery.d.ts
CHANGED
|
@@ -65,7 +65,8 @@ export declare class ESCLDiscovery {
|
|
|
65
65
|
/**
|
|
66
66
|
* Convenience function for quick scanner discovery
|
|
67
67
|
* @param timeout Discovery timeout in milliseconds (default: 5000)
|
|
68
|
+
* @param options Discovery options including pythonPath
|
|
68
69
|
* @returns Discovery response with success status and scanner data
|
|
69
70
|
*/
|
|
70
|
-
export declare function discoverScanners(timeout?: number): Promise<DiscoveryResponse>;
|
|
71
|
+
export declare function discoverScanners(timeout?: number, options?: ESCLDiscoveryOptions): Promise<DiscoveryResponse>;
|
|
71
72
|
//# sourceMappingURL=discovery.d.ts.map
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,WAAW,EAA6B,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,UAAU,CAAqB;gBAE3B,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAS5D;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;;OAIG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoDlE;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAI5B;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI;IAItE;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI;IAIvE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6D1B;;OAEG;IACH,OAAO,CAAC,OAAO;IA2Bf;;OAEG;IACH,OAAO,CAAC,eAAe;CAMxB;AAED
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,WAAW,EAA6B,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,UAAU,CAAqB;gBAE3B,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAS5D;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;;OAIG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoDlE;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAI5B;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI;IAItE;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,IAAI,GAAG,IAAI;IAIvE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6D1B;;OAEG;IACH,OAAO,CAAC,OAAO;IA2Bf;;OAEG;IACH,OAAO,CAAC,eAAe;CAMxB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,MAAa,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAGzH"}
|
package/dist/discovery.js
CHANGED
|
@@ -260,10 +260,11 @@ exports.ESCLDiscovery = ESCLDiscovery;
|
|
|
260
260
|
/**
|
|
261
261
|
* Convenience function for quick scanner discovery
|
|
262
262
|
* @param timeout Discovery timeout in milliseconds (default: 5000)
|
|
263
|
+
* @param options Discovery options including pythonPath
|
|
263
264
|
* @returns Discovery response with success status and scanner data
|
|
264
265
|
*/
|
|
265
|
-
async function discoverScanners(timeout = 5000) {
|
|
266
|
-
const discovery = new ESCLDiscovery(timeout);
|
|
266
|
+
async function discoverScanners(timeout = 5000, options) {
|
|
267
|
+
const discovery = new ESCLDiscovery(timeout, options);
|
|
267
268
|
return discovery.startDiscovery(timeout);
|
|
268
269
|
}
|
|
269
270
|
//# sourceMappingURL=discovery.js.map
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG9D,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE;IACtC,OAAO,EAAE,GAAG,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9B,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG9D,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE;IACtC,OAAO,EAAE,GAAG,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9B,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CA+E3B"}
|
package/dist/index.js
CHANGED
|
@@ -74,7 +74,7 @@ exports.VERSION = '1.0.0';
|
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
76
|
async function quickScan(params) {
|
|
77
|
-
let { scanner, dpi, mode, source, timeout, savePath } = params;
|
|
77
|
+
let { scanner, dpi, mode, source, timeout, savePath, width, height } = params;
|
|
78
78
|
const client = new client_1.ESCLClient(timeout);
|
|
79
79
|
// Default save path to current working directory if not provided
|
|
80
80
|
if (!savePath) {
|
|
@@ -92,7 +92,7 @@ async function quickScan(params) {
|
|
|
92
92
|
throw new Error(`Invalid color mode: ${mode}`);
|
|
93
93
|
}
|
|
94
94
|
// 1. Create scan job
|
|
95
|
-
const jobId = await client.createScanJob(scanner, dpi, colorMode, source);
|
|
95
|
+
const jobId = await client.createScanJob(scanner, dpi, colorMode, source, width, height);
|
|
96
96
|
if (!jobId) {
|
|
97
97
|
throw new Error('Failed to create scan job');
|
|
98
98
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;;;AAuDH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|