scanonweb 1.0.2 → 1.0.3
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 +5 -0
- package/dist/scanonweb.cjs.js +17 -3
- package/dist/scanonweb.esm.js +17 -3
- package/dist/scanonweb.umd.js +17 -3
- package/dist/scanonweb.umd.min.js +3 -3
- package/package.json +1 -1
- package/src/index.d.ts +7 -0
- package/src/index.js +15 -1
package/README.md
CHANGED
|
@@ -148,6 +148,7 @@ scanner.scaner_work_config = {
|
|
|
148
148
|
- `getImageById(index)` - 获取指定索引的图像
|
|
149
149
|
- `rotateImage(index, angle)` - 旋转图像
|
|
150
150
|
- `deleteImageByIndex(index)` - 删除指定图像
|
|
151
|
+
- `moveImage(oldIndex, newIndex)` - 调整图像顺序(将 oldIndex 移动到 newIndex)
|
|
151
152
|
|
|
152
153
|
#### 上传功能
|
|
153
154
|
- `uploadAllImageAsPdfToUrl(url, id, desc)` - 以PDF格式上传所有图像
|
|
@@ -196,6 +197,10 @@ MIT License
|
|
|
196
197
|
|
|
197
198
|
## 更新日志
|
|
198
199
|
|
|
200
|
+
### 1.0.3
|
|
201
|
+
- 添加了支持前端直接调整扫描结果图像顺序的能力,前端可以通过moveImage函数调整结果图像顺序
|
|
202
|
+
|
|
203
|
+
|
|
199
204
|
### 1.0.2
|
|
200
205
|
- 添加了对加载base64格式图像的支持
|
|
201
206
|
- 远程加载图像除了支持pdf和tiff格式,现在也支持加载jpg、png等常见格式的图像
|
package/dist/scanonweb.cjs.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* scanonweb v1.0.
|
|
2
|
+
* scanonweb v1.0.3
|
|
3
3
|
* ScanOnWeb - 扫描控件 JavaScript SDK,用于与本地扫描服务程序通信
|
|
4
4
|
* https://www.brainysoft.cn
|
|
5
5
|
*
|
|
6
|
-
* Copyright (c)
|
|
6
|
+
* Copyright (c) 2026 BrainySoft
|
|
7
7
|
* Licensed under the MIT license
|
|
8
8
|
*/
|
|
9
9
|
'use strict';
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* ScanOnWeb - 扫描控件 JavaScript SDK
|
|
13
13
|
* https://www.brainysoft.cn 扫描控件官方网站,如需更多文档帮助请访问官网
|
|
14
|
-
* @version 1.0.
|
|
14
|
+
* @version 1.0.3
|
|
15
15
|
* @author BrainySoft
|
|
16
16
|
* @license MIT
|
|
17
17
|
*/
|
|
@@ -486,6 +486,20 @@ class ScanOnWeb {
|
|
|
486
486
|
this.sendWebSocketCommand(cmdObj);
|
|
487
487
|
}
|
|
488
488
|
|
|
489
|
+
/**
|
|
490
|
+
* 前端调整扫描结果图像顺序
|
|
491
|
+
* @param {number} oldIndex - 原图像索引
|
|
492
|
+
* @param {number} newIndex - 目标图像索引
|
|
493
|
+
*/
|
|
494
|
+
moveImage(oldIndex, newIndex) {
|
|
495
|
+
const cmdObj = {
|
|
496
|
+
cmd_type: "moveImage",
|
|
497
|
+
oldIndex: oldIndex,
|
|
498
|
+
newIndex: newIndex
|
|
499
|
+
};
|
|
500
|
+
this.sendWebSocketCommand(cmdObj);
|
|
501
|
+
}
|
|
502
|
+
|
|
489
503
|
/**
|
|
490
504
|
* 以pdf格式上传全部图像到服务器端
|
|
491
505
|
* @param {string} url - 上传URL
|
package/dist/scanonweb.esm.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* scanonweb v1.0.
|
|
2
|
+
* scanonweb v1.0.3
|
|
3
3
|
* ScanOnWeb - 扫描控件 JavaScript SDK,用于与本地扫描服务程序通信
|
|
4
4
|
* https://www.brainysoft.cn
|
|
5
5
|
*
|
|
6
|
-
* Copyright (c)
|
|
6
|
+
* Copyright (c) 2026 BrainySoft
|
|
7
7
|
* Licensed under the MIT license
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
10
|
* ScanOnWeb - 扫描控件 JavaScript SDK
|
|
11
11
|
* https://www.brainysoft.cn 扫描控件官方网站,如需更多文档帮助请访问官网
|
|
12
|
-
* @version 1.0.
|
|
12
|
+
* @version 1.0.3
|
|
13
13
|
* @author BrainySoft
|
|
14
14
|
* @license MIT
|
|
15
15
|
*/
|
|
@@ -484,6 +484,20 @@ class ScanOnWeb {
|
|
|
484
484
|
this.sendWebSocketCommand(cmdObj);
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
+
/**
|
|
488
|
+
* 前端调整扫描结果图像顺序
|
|
489
|
+
* @param {number} oldIndex - 原图像索引
|
|
490
|
+
* @param {number} newIndex - 目标图像索引
|
|
491
|
+
*/
|
|
492
|
+
moveImage(oldIndex, newIndex) {
|
|
493
|
+
const cmdObj = {
|
|
494
|
+
cmd_type: "moveImage",
|
|
495
|
+
oldIndex: oldIndex,
|
|
496
|
+
newIndex: newIndex
|
|
497
|
+
};
|
|
498
|
+
this.sendWebSocketCommand(cmdObj);
|
|
499
|
+
}
|
|
500
|
+
|
|
487
501
|
/**
|
|
488
502
|
* 以pdf格式上传全部图像到服务器端
|
|
489
503
|
* @param {string} url - 上传URL
|
package/dist/scanonweb.umd.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* scanonweb v1.0.
|
|
2
|
+
* scanonweb v1.0.3
|
|
3
3
|
* ScanOnWeb - 扫描控件 JavaScript SDK,用于与本地扫描服务程序通信
|
|
4
4
|
* https://www.brainysoft.cn
|
|
5
5
|
*
|
|
6
|
-
* Copyright (c)
|
|
6
|
+
* Copyright (c) 2026 BrainySoft
|
|
7
7
|
* Licensed under the MIT license
|
|
8
8
|
*/
|
|
9
9
|
(function (global, factory) {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
/**
|
|
16
16
|
* ScanOnWeb - 扫描控件 JavaScript SDK
|
|
17
17
|
* https://www.brainysoft.cn 扫描控件官方网站,如需更多文档帮助请访问官网
|
|
18
|
-
* @version 1.0.
|
|
18
|
+
* @version 1.0.3
|
|
19
19
|
* @author BrainySoft
|
|
20
20
|
* @license MIT
|
|
21
21
|
*/
|
|
@@ -490,6 +490,20 @@
|
|
|
490
490
|
this.sendWebSocketCommand(cmdObj);
|
|
491
491
|
}
|
|
492
492
|
|
|
493
|
+
/**
|
|
494
|
+
* 前端调整扫描结果图像顺序
|
|
495
|
+
* @param {number} oldIndex - 原图像索引
|
|
496
|
+
* @param {number} newIndex - 目标图像索引
|
|
497
|
+
*/
|
|
498
|
+
moveImage(oldIndex, newIndex) {
|
|
499
|
+
const cmdObj = {
|
|
500
|
+
cmd_type: "moveImage",
|
|
501
|
+
oldIndex: oldIndex,
|
|
502
|
+
newIndex: newIndex
|
|
503
|
+
};
|
|
504
|
+
this.sendWebSocketCommand(cmdObj);
|
|
505
|
+
}
|
|
506
|
+
|
|
493
507
|
/**
|
|
494
508
|
* 以pdf格式上传全部图像到服务器端
|
|
495
509
|
* @param {string} url - 上传URL
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* scanonweb v1.0.
|
|
2
|
+
* scanonweb v1.0.3
|
|
3
3
|
* ScanOnWeb - 扫描控件 JavaScript SDK,用于与本地扫描服务程序通信
|
|
4
4
|
* https://www.brainysoft.cn
|
|
5
5
|
*
|
|
6
|
-
* Copyright (c)
|
|
6
|
+
* Copyright (c) 2026 BrainySoft
|
|
7
7
|
* Licensed under the MIT license
|
|
8
8
|
*/
|
|
9
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).ScanOnWeb=t()}(this,(function(){"use strict";class e{constructor(){this.scaner_work_config={showUI:!1,dpi_x:300,dpi_y:300,deviceIndex:0,showDialog:!1,autoFeedEnable:!0,autoFeed:!1,dupxMode:!1,autoDeskew:!1,autoBorderDetection:!1,colorMode:"RGB",transMode:"memory"},this.h5socket=null,this.imageCount=0,this.tryConnect()}getConnectedServer(e){return console.log("尝试连接托盘扫描服务websocket服务器..."),new Promise(((t,o)=>{const a=new WebSocket(e[0]);a.onopen=()=>{t(a)},a.onerror=e=>{o(e)}})).then((e=>(console.log("连接websocket服务器成功!"),this.initWebsocketCallback(e),console.log("尝试获取扫描设备列表..."),this.loadDevices(),e)),(t=>{if(e.length>1)return this.getConnectedServer(e.slice(1));throw t}))}tryConnect(){this.getConnectedServer(["ws://127.0.0.1:1001","ws://127.0.0.1:2001","ws://127.0.0.1:3001","ws://127.0.0.1:4001","ws://127.0.0.1:5001"])}initWebsocketCallback(e){this.h5socket=e,this.h5socket.onerror=this.onSocketError.bind(this),this.h5socket.onmessage=this.onSocketMessage.bind(this)}onSocketError(e){alert("无法连接扫描服务程序,请检查扫描服务程序是否已经启动!"),console.log("WebSocket error: "+e.data)}isCallbackExist(e){return!(!e||void 0===e||void 0===e)&&"function"==typeof e}onSocketMessage(e){const t=JSON.parse(e.data);switch(t.cmd_type){case"getDevicesList":this.isCallbackExist(this.onGetDevicesListEvent)&&this.onGetDevicesListEvent(t);break;case"scanComplete":this.imageCount=t.imageCount,this.isCallbackExist(this.onScanFinishedEvent)&&this.onScanFinishedEvent(t);break;case"selectScanDevice":this.scaner_work_config.deviceIndex=t.currentIndex,this.scaner_work_config.showDialog=t.showDialog,this.scaner_work_config.autoFeedEnable=t.autoFeedEnable,this.scaner_work_config.autoFeed=t.autoFeed,this.scaner_work_config.dupxMode=t.dupxMode,this.scaner_work_config.autoDeskew=t.autoDeskew,this.scaner_work_config.autoBorderDetection=t.autoBorderDetection,this.isCallbackExist(this.onSelectScanDeviceEvent)&&this.onSelectScanDeviceEvent(t);break;case"getImageCount":this.imageCount=t.imageCount,this.isCallbackExist(this.onGetImageCountEvent)&&this.onGetImageCountEvent(t);break;case"getAllImage":this.imageCount=t.imageCount,this.isCallbackExist(this.onGetAllImageEvent)&&this.onGetAllImageEvent(t);break;case"getImageById":this.imageCount=t.imageCount,this.isCallbackExist(this.onGetImageByIdEvent)&&this.onGetImageByIdEvent(t);break;case"loadImageFromUrl":this.imageCount=t.imageCount,this.isCallbackExist(this.onLoadImageFromUrlEvent)&&this.onLoadImageFromUrlEvent(t);break;case"loadImageFromBase64":this.imageCount=t.imageCount,this.isCallbackExist(this.onLoadImageFromBase64Event)&&this.onLoadImageFromBase64Event(t);break;case"rotateImage":this.imageCount=t.imageCount,this.isCallbackExist(this.onRotateImageEvent)&&this.onRotateImageEvent(t);break;case"getImageSize":this.imageCount=t.imageCount,this.isCallbackExist(this.onGetImageSizeEvent)&&this.onGetImageSizeEvent(t);break;case"uploadAllImageAsPdfToUrl":this.isCallbackExist(this.onUploadAllImageAsPdfToUrlEvent)&&this.onUploadAllImageAsPdfToUrlEvent(t);break;case"uploadAllImageAsTiffToUrl":this.isCallbackExist(this.onUploadAllImageAsTiffToUrlEvent)&&this.onUploadAllImageAsTiffToUrlEvent(t);break;case"uploadJpgImageByIndex":this.isCallbackExist(this.onUploadJpgImageByIndexEvent)&&this.onUploadJpgImageByIndexEvent(t);break;case"upload":this.imageCount=t.imageCount,this.isCallbackExist(this.onUploadEvent)&&this.onUploadEvent(t);break;case"imageEdited":this.isCallbackExist(this.onImageEditedEvent)&&this.onImageEditedEvent(t);break;case"imageDrap":this.isCallbackExist(this.onImageDrapEvent)&&this.onImageDrapEvent(t)}}sendWebSocketCommand(e){try{1===this.h5socket.readyState?this.h5socket.send(JSON.stringify(e)):alert("发送扫描指令失败!请刷新页面或者检查托盘扫描程序是否已经正常运行!")}catch(e){alert("发送扫描指令失败!"+e)}}setLicenseKey(e,t,o,a){const s={cmd_type:"setLicenseKey",licenseMode:e,key1:t,key2:o,url:a};this.sendWebSocketCommand(s)}loadDevices(){this.sendWebSocketCommand({cmd_type:"getDevicesList"})}selectScanDevice(e){const t={cmd_type:"selectScanDevice",deviceIndex:e};this.sendWebSocketCommand(t)}startScan(){const e={cmd_type:"startScan",config:this.scaner_work_config};this.sendWebSocketCommand(e)}clearAll(){this.sendWebSocketCommand({cmd_type:"clearAll"})}getImageCount(){this.sendWebSocketCommand({cmd_type:"getImageCount"})}getAllImage(){this.sendWebSocketCommand({cmd_type:"getAllImage"})}getImageById(e){const t={cmd_type:"getImageById",index:e};this.sendWebSocketCommand(t)}loadImageFromUrl(e,t){if(!t){const o=e.split(".").pop().toLowerCase();t="pdf"===o?"pdf":"tiff"===o||"tif"===o?"tiff":(["jpg","jpeg","png","bmp","gif","webp"].includes(o),"image")}const o={cmd_type:"loadImageFromUrl",url:e,type:t};this.sendWebSocketCommand(o)}loadImageFromBase64(e,t="jpg"){if(e.startsWith("data:")){const o=e.indexOf("base64,");if(-1!==o){const a=e.match(/data:image\/(\w+);/);a&&a[1]&&!t&&(t="jpeg"===a[1]?"jpg":a[1]),e=e.substring(o+7)}}const o={cmd_type:"loadImageFromBase64",base64Data:e,format:t};this.sendWebSocketCommand(o)}rotateImage(e,t){const o={cmd_type:"rotateImage",index:e,angle:t};this.sendWebSocketCommand(o)}getImageSize(e){const t={cmd_type:"getImageSize",index:e};this.sendWebSocketCommand(t)}deleteImageByIndex(e){const t={cmd_type:"deleteImageByIndex",index:e};this.sendWebSocketCommand(t)}uploadAllImageAsPdfToUrl(e,t,o){const a={cmd_type:"uploadAllImageAsPdfToUrl",url:e,id:t,desc:o};this.sendWebSocketCommand(a)}uploadAllImageAsTiffToUrl(e,t,o){const a={cmd_type:"uploadAllImageAsTiffToUrl",url:e,id:t,desc:o};this.sendWebSocketCommand(a)}uploadJpgImageByIndex(e,t,o,a){const s={cmd_type:"uploadJpgImageByIndex",index:a,url:e,id:t,desc:o};this.sendWebSocketCommand(s)}saveAllImageToLocal(e){const t={cmd_type:"saveAllImageToLocal",filename:e};this.sendWebSocketCommand(t)}openClientLocalfile(){this.sendWebSocketCommand({cmd_type:"openClientLocalfile"})}ftpUploadAllImage(e,t,o,a,s,n){const i={cmd_type:"ftpUploadAllImage",serverIp:e,port:t,username:o,password:a,serverPath:s,filename:n};this.sendWebSocketCommand(i)}setUploadButtonVisible(e){const t={cmd_type:"setUploadButtonVisible",visible:e};this.sendWebSocketCommand(t)}setFocus(){this.sendWebSocketCommand({cmd_type:"focus"})}hidden(){this.sendWebSocketCommand({cmd_type:"hidden"})}closeWebSocket(){this.h5socket.close()}loadMultipleImagesFromBase64(e){Array.isArray(e)&&0!==e.length?e.forEach(((e,t)=>{setTimeout((()=>{this.loadImageFromBase64(e.data,e.format||"jpg")}),100*t)})):console.error("loadMultipleImagesFromBase64: 参数必须是非空数组")}loadImageFromCanvas(e,t="jpg",o=.9){if(!(e&&e instanceof HTMLCanvasElement))return void console.error("loadImageFromCanvas: 参数必须是有效的Canvas元素");const a="jpg"===t?"image/jpeg":`image/${t}`,s=e.toDataURL(a,o).split(",")[1];this.loadImageFromBase64(s,t)}loadImageFromFileInput(e){if(!e||!e.files||0===e.files.length)return void console.error("loadImageFromFileInput: 没有选择文件");Array.from(e.files).forEach(((e,t)=>{if(!e.type.startsWith("image/"))return void console.warn(`跳过非图像文件: ${e.name}`);const o=new FileReader;o.onload=o=>{const a=o.target.result,s=e.name.split(".").pop().toLowerCase(),n="jpeg"===s?"jpg":s;setTimeout((()=>{this.loadImageFromBase64(a,n)}),100*t)},o.readAsDataURL(e)}))}}return"undefined"!=typeof module&&module.exports&&(module.exports=e),"undefined"!=typeof window&&(window.ScanOnWeb=e),e}));
|
|
9
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).ScanOnWeb=t()}(this,(function(){"use strict";class e{constructor(){this.scaner_work_config={showUI:!1,dpi_x:300,dpi_y:300,deviceIndex:0,showDialog:!1,autoFeedEnable:!0,autoFeed:!1,dupxMode:!1,autoDeskew:!1,autoBorderDetection:!1,colorMode:"RGB",transMode:"memory"},this.h5socket=null,this.imageCount=0,this.tryConnect()}getConnectedServer(e){return console.log("尝试连接托盘扫描服务websocket服务器..."),new Promise(((t,o)=>{const a=new WebSocket(e[0]);a.onopen=()=>{t(a)},a.onerror=e=>{o(e)}})).then((e=>(console.log("连接websocket服务器成功!"),this.initWebsocketCallback(e),console.log("尝试获取扫描设备列表..."),this.loadDevices(),e)),(t=>{if(e.length>1)return this.getConnectedServer(e.slice(1));throw t}))}tryConnect(){this.getConnectedServer(["ws://127.0.0.1:1001","ws://127.0.0.1:2001","ws://127.0.0.1:3001","ws://127.0.0.1:4001","ws://127.0.0.1:5001"])}initWebsocketCallback(e){this.h5socket=e,this.h5socket.onerror=this.onSocketError.bind(this),this.h5socket.onmessage=this.onSocketMessage.bind(this)}onSocketError(e){alert("无法连接扫描服务程序,请检查扫描服务程序是否已经启动!"),console.log("WebSocket error: "+e.data)}isCallbackExist(e){return!(!e||void 0===e||void 0===e)&&"function"==typeof e}onSocketMessage(e){const t=JSON.parse(e.data);switch(t.cmd_type){case"getDevicesList":this.isCallbackExist(this.onGetDevicesListEvent)&&this.onGetDevicesListEvent(t);break;case"scanComplete":this.imageCount=t.imageCount,this.isCallbackExist(this.onScanFinishedEvent)&&this.onScanFinishedEvent(t);break;case"selectScanDevice":this.scaner_work_config.deviceIndex=t.currentIndex,this.scaner_work_config.showDialog=t.showDialog,this.scaner_work_config.autoFeedEnable=t.autoFeedEnable,this.scaner_work_config.autoFeed=t.autoFeed,this.scaner_work_config.dupxMode=t.dupxMode,this.scaner_work_config.autoDeskew=t.autoDeskew,this.scaner_work_config.autoBorderDetection=t.autoBorderDetection,this.isCallbackExist(this.onSelectScanDeviceEvent)&&this.onSelectScanDeviceEvent(t);break;case"getImageCount":this.imageCount=t.imageCount,this.isCallbackExist(this.onGetImageCountEvent)&&this.onGetImageCountEvent(t);break;case"getAllImage":this.imageCount=t.imageCount,this.isCallbackExist(this.onGetAllImageEvent)&&this.onGetAllImageEvent(t);break;case"getImageById":this.imageCount=t.imageCount,this.isCallbackExist(this.onGetImageByIdEvent)&&this.onGetImageByIdEvent(t);break;case"loadImageFromUrl":this.imageCount=t.imageCount,this.isCallbackExist(this.onLoadImageFromUrlEvent)&&this.onLoadImageFromUrlEvent(t);break;case"loadImageFromBase64":this.imageCount=t.imageCount,this.isCallbackExist(this.onLoadImageFromBase64Event)&&this.onLoadImageFromBase64Event(t);break;case"rotateImage":this.imageCount=t.imageCount,this.isCallbackExist(this.onRotateImageEvent)&&this.onRotateImageEvent(t);break;case"getImageSize":this.imageCount=t.imageCount,this.isCallbackExist(this.onGetImageSizeEvent)&&this.onGetImageSizeEvent(t);break;case"uploadAllImageAsPdfToUrl":this.isCallbackExist(this.onUploadAllImageAsPdfToUrlEvent)&&this.onUploadAllImageAsPdfToUrlEvent(t);break;case"uploadAllImageAsTiffToUrl":this.isCallbackExist(this.onUploadAllImageAsTiffToUrlEvent)&&this.onUploadAllImageAsTiffToUrlEvent(t);break;case"uploadJpgImageByIndex":this.isCallbackExist(this.onUploadJpgImageByIndexEvent)&&this.onUploadJpgImageByIndexEvent(t);break;case"upload":this.imageCount=t.imageCount,this.isCallbackExist(this.onUploadEvent)&&this.onUploadEvent(t);break;case"imageEdited":this.isCallbackExist(this.onImageEditedEvent)&&this.onImageEditedEvent(t);break;case"imageDrap":this.isCallbackExist(this.onImageDrapEvent)&&this.onImageDrapEvent(t)}}sendWebSocketCommand(e){try{1===this.h5socket.readyState?this.h5socket.send(JSON.stringify(e)):alert("发送扫描指令失败!请刷新页面或者检查托盘扫描程序是否已经正常运行!")}catch(e){alert("发送扫描指令失败!"+e)}}setLicenseKey(e,t,o,a){const s={cmd_type:"setLicenseKey",licenseMode:e,key1:t,key2:o,url:a};this.sendWebSocketCommand(s)}loadDevices(){this.sendWebSocketCommand({cmd_type:"getDevicesList"})}selectScanDevice(e){const t={cmd_type:"selectScanDevice",deviceIndex:e};this.sendWebSocketCommand(t)}startScan(){const e={cmd_type:"startScan",config:this.scaner_work_config};this.sendWebSocketCommand(e)}clearAll(){this.sendWebSocketCommand({cmd_type:"clearAll"})}getImageCount(){this.sendWebSocketCommand({cmd_type:"getImageCount"})}getAllImage(){this.sendWebSocketCommand({cmd_type:"getAllImage"})}getImageById(e){const t={cmd_type:"getImageById",index:e};this.sendWebSocketCommand(t)}loadImageFromUrl(e,t){if(!t){const o=e.split(".").pop().toLowerCase();t="pdf"===o?"pdf":"tiff"===o||"tif"===o?"tiff":(["jpg","jpeg","png","bmp","gif","webp"].includes(o),"image")}const o={cmd_type:"loadImageFromUrl",url:e,type:t};this.sendWebSocketCommand(o)}loadImageFromBase64(e,t="jpg"){if(e.startsWith("data:")){const o=e.indexOf("base64,");if(-1!==o){const a=e.match(/data:image\/(\w+);/);a&&a[1]&&!t&&(t="jpeg"===a[1]?"jpg":a[1]),e=e.substring(o+7)}}const o={cmd_type:"loadImageFromBase64",base64Data:e,format:t};this.sendWebSocketCommand(o)}rotateImage(e,t){const o={cmd_type:"rotateImage",index:e,angle:t};this.sendWebSocketCommand(o)}getImageSize(e){const t={cmd_type:"getImageSize",index:e};this.sendWebSocketCommand(t)}deleteImageByIndex(e){const t={cmd_type:"deleteImageByIndex",index:e};this.sendWebSocketCommand(t)}moveImage(e,t){const o={cmd_type:"moveImage",oldIndex:e,newIndex:t};this.sendWebSocketCommand(o)}uploadAllImageAsPdfToUrl(e,t,o){const a={cmd_type:"uploadAllImageAsPdfToUrl",url:e,id:t,desc:o};this.sendWebSocketCommand(a)}uploadAllImageAsTiffToUrl(e,t,o){const a={cmd_type:"uploadAllImageAsTiffToUrl",url:e,id:t,desc:o};this.sendWebSocketCommand(a)}uploadJpgImageByIndex(e,t,o,a){const s={cmd_type:"uploadJpgImageByIndex",index:a,url:e,id:t,desc:o};this.sendWebSocketCommand(s)}saveAllImageToLocal(e){const t={cmd_type:"saveAllImageToLocal",filename:e};this.sendWebSocketCommand(t)}openClientLocalfile(){this.sendWebSocketCommand({cmd_type:"openClientLocalfile"})}ftpUploadAllImage(e,t,o,a,s,n){const i={cmd_type:"ftpUploadAllImage",serverIp:e,port:t,username:o,password:a,serverPath:s,filename:n};this.sendWebSocketCommand(i)}setUploadButtonVisible(e){const t={cmd_type:"setUploadButtonVisible",visible:e};this.sendWebSocketCommand(t)}setFocus(){this.sendWebSocketCommand({cmd_type:"focus"})}hidden(){this.sendWebSocketCommand({cmd_type:"hidden"})}closeWebSocket(){this.h5socket.close()}loadMultipleImagesFromBase64(e){Array.isArray(e)&&0!==e.length?e.forEach(((e,t)=>{setTimeout((()=>{this.loadImageFromBase64(e.data,e.format||"jpg")}),100*t)})):console.error("loadMultipleImagesFromBase64: 参数必须是非空数组")}loadImageFromCanvas(e,t="jpg",o=.9){if(!(e&&e instanceof HTMLCanvasElement))return void console.error("loadImageFromCanvas: 参数必须是有效的Canvas元素");const a="jpg"===t?"image/jpeg":`image/${t}`,s=e.toDataURL(a,o).split(",")[1];this.loadImageFromBase64(s,t)}loadImageFromFileInput(e){if(!e||!e.files||0===e.files.length)return void console.error("loadImageFromFileInput: 没有选择文件");Array.from(e.files).forEach(((e,t)=>{if(!e.type.startsWith("image/"))return void console.warn(`跳过非图像文件: ${e.name}`);const o=new FileReader;o.onload=o=>{const a=o.target.result,s=e.name.split(".").pop().toLowerCase(),n="jpeg"===s?"jpg":s;setTimeout((()=>{this.loadImageFromBase64(a,n)}),100*t)},o.readAsDataURL(e)}))}}return"undefined"!=typeof module&&module.exports&&(module.exports=e),"undefined"!=typeof window&&(window.ScanOnWeb=e),e}));
|
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -196,6 +196,13 @@ export default class ScanOnWeb {
|
|
|
196
196
|
*/
|
|
197
197
|
deleteImageByIndex(index: number): void;
|
|
198
198
|
|
|
199
|
+
/**
|
|
200
|
+
* 前端调整扫描结果图像顺序
|
|
201
|
+
* @param oldIndex 原图像索引
|
|
202
|
+
* @param newIndex 目标图像索引
|
|
203
|
+
*/
|
|
204
|
+
moveImage(oldIndex: number, newIndex: number): void;
|
|
205
|
+
|
|
199
206
|
/**
|
|
200
207
|
* 以pdf格式上传全部图像到服务器端
|
|
201
208
|
* @param url 上传URL
|
package/src/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ScanOnWeb - 扫描控件 JavaScript SDK
|
|
3
3
|
* https://www.brainysoft.cn 扫描控件官方网站,如需更多文档帮助请访问官网
|
|
4
|
-
* @version 1.0.
|
|
4
|
+
* @version 1.0.3
|
|
5
5
|
* @author BrainySoft
|
|
6
6
|
* @license MIT
|
|
7
7
|
*/
|
|
@@ -463,6 +463,20 @@ class ScanOnWeb {
|
|
|
463
463
|
this.sendWebSocketCommand(cmdObj);
|
|
464
464
|
}
|
|
465
465
|
|
|
466
|
+
/**
|
|
467
|
+
* 前端调整扫描结果图像顺序
|
|
468
|
+
* @param {number} oldIndex - 原图像索引
|
|
469
|
+
* @param {number} newIndex - 目标图像索引
|
|
470
|
+
*/
|
|
471
|
+
moveImage(oldIndex, newIndex) {
|
|
472
|
+
const cmdObj = {
|
|
473
|
+
cmd_type: "moveImage",
|
|
474
|
+
oldIndex: oldIndex,
|
|
475
|
+
newIndex: newIndex,
|
|
476
|
+
};
|
|
477
|
+
this.sendWebSocketCommand(cmdObj);
|
|
478
|
+
}
|
|
479
|
+
|
|
466
480
|
/**
|
|
467
481
|
* 以pdf格式上传全部图像到服务器端
|
|
468
482
|
* @param {string} url - 上传URL
|