Node.js+Web TWAIN,实现Web文档扫描和图像上传
来源:互联网 发布:dedecms改cms不变 编辑:程序博客网 时间:2024/05/24 07:10
通过Dynamic Web TWAIN SDK和Node.js的组合,只需要几行代码就可以实现在浏览器中控制扫描仪,获取图像后上传到远程服务器。
原文:Document Imaging and Uploading With Dynamic Web TWAIN and Node.js
下载安装
Dynamic Web TWAIN download
Node.js download
通过Node.js创建server
创建工程目录,打开cmd.exe进入到工程目录,安装下面两个Node.js模块:
1
2
npm install formidable@latest
npm install express
创建server.js,初始化:
1
2
3
4
5
var
formidable = require(
'formidable'
);
var
util = require(
'util'
);
var
express = require(
'express'
);
var
fs = require(
'fs'
);
var
app = express();
把静态资源,比如图片,css等,都加载进来:
1
app.use(express.
static
(__dirname,
'/public'
));
要实现跨域访问,需要在header里添加权限,如果不添加,只能local访问:
1
2
3
4
5
6
7
app.use(
function
(req, res, next) {
res.header(
"Access-Control-Allow-Origin"
,
"*"
);
res.header(
"Access-Control-Allow-Methods"
,
"PUT, POST, GET, DELETE, OPTIONS"
);
res.header(
"Access-Control-Allow-Headers"
,
"X-Requested-With, content-type"
);
res.header(
"Access-Control-Allow-Credentials"
,
true
);
next();
});
在POST请求中通过formidable解析数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
app.post(
'/upload'
,
function
(req, res) {
var
form =
new
formidable.IncomingForm();
form.parse(req,
function
(err, fields, files) {
// console.log(util.inspect({
// fields: fields,
// files: files
// }));
fs.readFile(files.RemoteFile.path,
function
(err, data) {
// save file from temp dir to new dir
var
newPath = __dirname +
"/uploads/"
+ files.RemoteFile.name;
fs.writeFile(newPath, data,
function
(err) {
if
(err)
throw
err;
console.log(
'file saved'
);
res.end();
});
});
});
})
设置好IP和端口:
1
2
3
4
5
var
server = app.listen(2014,
function
() {
var
host = server.address().address;
var
port = server.address().port;
console.log(
'listening at http://%s:%s'
, host, port);
})
通过Dynamic Web TWAIN创建client
创建一个网页,包含一个div和两个button:
1
2
3
4
5
6
7
8
9
10
11
12
<
html
>
<
head
>
<
title
>Document Imaging & Uploading</
title
>
<
script
src
=
"/Resources/dynamsoft.webtwain.initiate.js"
></
script
>
<
script
src
=
"/Resources/dynamsoft.webtwain.config.js"
></
script
>
</
head
>
<
body
>
<
div
id
=
"dwtcontrolContainer"
></
div
>
<
input
type
=
"button"
value
=
"Acquire"
onclick
=
"AcquireImage();"
/>
<
input
id
=
"btnUpload"
type
=
"button"
value
=
"Upload Image"
onclick
=
"btnUpload_onclick()"
>
</
body
>
</
html
>
这里需要把Web TWAIN SDK安装目录下的Resources目录拷贝过来。
加几行代码就可以扫描了:
1
2
3
4
5
6
function
AcquireImage(){
DWObject.IfShowUI =
false
;
DWObject.SelectSource();
DWObject.OpenSource();
DWObject.AcquireImage();
}
到这里可以先测试下扫描能否正常工作。接下来实现远程上传:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function
btnUpload_onclick() {
DWObject.HTTPPort = 2014;
var
CurrentPathName = unescape(location.pathname);
// get current PathName in plain ASCII
var
CurrentPath = CurrentPathName.substring(0, CurrentPathName.lastIndexOf(
"/"
) + 1);
var
strActionPage = CurrentPath +
"upload"
;
var
strHostIP =
"localhost"
;
// modify the IP for cross-domain access
var
sFun =
function
(){
alert(
'successful'
);
}, fFun =
function
(){
alert(
'failed'
);
};
DWObject.HTTPUploadThroughPostEx(
strHostIP,
DWObject.CurrentImageIndexInBuffer,
strActionPage,
"test.jpg"
,
1,
// JPEG
sFun, fFun
);
}
测试下。命令行启动server:
1
node server.js
打开http://localhost:2014就可以玩了。
源码
https://github.com/DynamsoftRD/nodejs-dwt
1
git clone https://github.com/DynamsoftRD/nodejs-dwt.git
0 0
- Node.js+Web TWAIN,实现Web文档扫描和图像上传
- 使用Dynamsoft Twain实现Web 在线扫描上传
- Web扫描识别控件Dynamic Web TWAIN扫描和上传的实例
- Dynamic Web TWAIN扫描识别工具改变缓冲区图像大小
- 扫描识别工具Dynamic Web TWAIN使用教程:图像操作
- 应用于Web的TWAIN扫描识别软件-Dynamic Web TWAIN
- twain图像处理和扫描控件ImagXpress
- 扫描识别工具Dynamic Web TWAIN使用教程:如何使用图像编辑器
- 扫描识别控件Dynamic .NET TWAIN扫描和保存图像
- 分享:Web应用程序的TWAIN扫描识别工具——DYNAMIC WEB TWAIN
- 扫描识别工具Dynamic Web TWAIN使用教程:如何自定义Web TWAIN对象
- js调用扫描仪twain进行网页图像扫描
- 网页扫描识别控件Dynamic Web TWAIN v9.1支持Mac OS X中实现本地扫描
- 扫描识别工具Dynamic Web TWAIN使用教程:如何将本地图像加载到查看器中
- Dynamic Web TWAIN使用教程:如何从Firefox扫描图片
- Dynamic Web TWAIN使用教程:创建网页扫描程序
- 【干货】扫描识别控件Dynamic Web TWAIN在线示例汇总
- TWAIN扫描识别工具Dynamic Web TWAIN发布v13.2,周年限时7折特惠!
- 核桃运算创办人薛文蔚推出即时资料分析引擎
- java.lang.VerifyError错误参考解决办法
- 外媒预测2015年十大最热门工作
- 3招解决ant构建时任务找不到(taskdef cann't be found)的问题
- 强噪声下的语音检测 VAD
- Node.js+Web TWAIN,实现Web文档扫描和图像上传
- Python装饰器与面向切面编程
- typedef
- hbase export 使用小技巧
- ARM amba总线介绍
- 如何阅读SDF文件
- 分享10个实用的jQuery代码开发小技巧
- 【学习OpenCV】CV库的调用机制
- Java编程之代码优化