文档章节

Node.js+Web TWAIN,实现Web文档扫描和图像上传

yushulx
 yushulx
发布于 2014/12/03 10:00
字数 520
阅读 2842
收藏 10

通过Dynamic Web TWAIN SDKNode.js的组合,只需要几行代码就可以实现在浏览器中控制扫描仪,获取图像后上传到远程服务器。

原文:Document Imaging and Uploading With Dynamic Web TWAIN and Node.js

下载安装

通过Node.js创建server

创建工程目录,打开cmd.exe进入到工程目录,安装下面两个Node.js模块:

npm install formidable@latest
npm install express

创建server.js,初始化:

var formidable = require('formidable');
var util = require('util');
var express = require('express');
var fs = require('fs');
var app = express();

把静态资源,比如图片,css等,都加载进来:

app.use(express.static(__dirname, '/public'));

要实现跨域访问,需要在header里添加权限,如果不添加,只能local访问:

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解析数据:

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和端口:

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:

<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目录拷贝过来。

加几行代码就可以扫描了:

function AcquireImage(){
     DWObject.IfShowUI = false;
     DWObject.SelectSource();
     DWObject.OpenSource();
     DWObject.AcquireImage();
}

到这里可以先测试下扫描能否正常工作。接下来实现远程上传:

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:

node server.js

打开http://localhost:2014就可以玩了。

源码

https://github.com/DynamsoftRD/nodejs-dwt

git clone https://github.com/DynamsoftRD/nodejs-dwt.git


本文转载自:http://www.codepool.biz/twain/document-imaging-and-uploading-with-dynamic-web-twain-and-node-js.html

yushulx
粉丝 28
博文 106
码字总数 60640
作品 0
杭州
私信 提问
加载中

评论(3)

qdi5
qdi5

引用来自“yushulx”的评论

引用来自“wz128520”的评论

楼主用的啥扫描仪,为啥我用的scansnap s1300i扫描仪连接不了

回复@wz128520 : 驱动不支持。我用的是支持TWAIN的扫描仪。
噢噢,谢谢楼主了!
yushulx
yushulx

引用来自“wz128520”的评论

楼主用的啥扫描仪,为啥我用的scansnap s1300i扫描仪连接不了

回复@wz128520 : 驱动不支持。我用的是支持TWAIN的扫描仪。
qdi5
qdi5
楼主用的啥扫描仪,为啥我用的scansnap s1300i扫描仪连接不了
【干货】扫描识别控件Dynamic Web TWAIN在线示例汇总

Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并...

Harriet666
2017/10/27
0
0
TWAIN扫描识别工具Dynamic Web TWAIN发布v13.2,周年限时7折特惠!

Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并...

Harriet666
2017/11/02
0
0
TWAIN扫描识别工具Dynamic Web TWAIN的常见问题FAQ合集

Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件,本文给大家分享几个有关Dynamic Web TWAIN的常见问题,欢迎收藏! Dynamic Web TWAIN中文介绍丨免费下载丨资源教程丨示例D...

Harriet666
2017/11/07
0
0
Dynamic Web TWAIN和ImageCapture成功运用于新一代富士放射管理解决方案

Dynamsoft公司旗下的图像捕获软件开发包ImageCapture Suite成功用于富士医疗系统公司的新版Synapse®RIS放射科管理软件的图像捕捉功能。ImageCapture为新版Synapse®RIS放射科管理软件提供了...

lanmeimei
2014/03/03
0
0
如何在Linux环境中运行Dynamic Web TWAIN的文件扫描上传示例

Dynamic Web TWAIN示例代码中,文件扫描上传只提供了ASP.NET的实现。要在Linux中运行.NET Framework的代码需要用Mono。 Ubuntu中安装Mono 通过命令行查看下系统版本: 下载对应的Mono。 安装...

yushulx
02/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决vim打开之后乱码的问题

在Windows中的文档,传输到Linux系统中(使用rz命令),出现乱码 root@localhost ~]# rpm -qf `which iconv` glibc-common-2.17-105.el7.x86_64 [root@localhost ~]# rpm -ihv /mnt/Packages......

寰宇01
21分钟前
0
0
aldi 2017年1月记录

../../tools/CBLAS/lib/cblas_LINUX.a ../../tools/lapack-3.4.2/liblapacke.a \../../tools/lapack-3.4.2/librefblas.a -lgfortran \../../tools/lapack-3.4.2/liblapack.a \../../......

MtrS
23分钟前
0
0
Choerodon如何进行日志收集与告警

作者:董文启 应用程序日志是由软件应用程序记录的事件文件, 它一般包含错误,信息事件和警告。一个良好的日志系统有助于快速发现问题,定位问题,同时也为业务分析起到一定的作用。 传统E...

Choerodon
34分钟前
1
0
js二维码生成插件“jquery.qrcode.min.js”

<!doctype html> <html> <head> <meta charset="utf-8" /> <title>生成二维码</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></scri......

泉天下
38分钟前
0
0
Spring AOP之同一个对象方法内部自调用导致事务失效问题

对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不...

xiaomin0322
44分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部