目录(?)[+]

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

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

下载安装

通过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

Node.js+Web TWAIN,实现Web文档扫描和图像上传的更多相关文章

  1. Node.js 从零开发 web server博客项目[安全]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  2. ASP.NET Core 中文文档 第二章 指南 (09) 使用 Swagger 生成 ASP.NET Web API 在线帮助测试文档

    原文:ASP.NET Web API Help Pages using Swagger 作者:Shayne Boyer 翻译:谢炀(kiler) 翻译:许登洋(Seay) 对于开发人员来说,构建一个消 ...

  3. WEB前端开发规范文档(转)

    http://codeguide.bootcss.com/  编写灵活.稳定.高质量的 HTML 和 CSS 代码的规范上面的文档 再结合下面的规范: 无论是从技术角度还是开发视角,对于web前端开发 ...

  4. 网站开发进阶(三十八)Web前端开发规范文档你需要知道的事

    Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...

  5. node.js之十大Web框架

    之前接触过Node.js是因为好奇大前端越来越能干了,连我后台的饭碗都要抢了,太嚣张了,于是我想打压打压它,然后就这样接触它了.再到后来是因为Settings-Sync插件二次开发,我需要用node. ...

  6. Web前端开发规范文档你需要知道的事

    Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...

  7. WEB前端开发规范文档[转]

    为新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益的. 本文档由本人编写, 部分意见来源于网络, 以此感谢, ...

  8. Fenix – 基于 Node.js 的桌面静态 Web 服务器

    Fenix 是一个提供给开发人员使用的简单的桌面静态 Web 服务器,基于 Node.js 开发.您可以同时在上面运行任意数量的项目,特别适合前端开发人员使用. 您可以通过免费的 Node.js 控制 ...

  9. 关于ASP.NET Web Api的HelpPage文档注释问题

    关于ASP.NET Web Api的HelpPage文档注释问题 以前我用微软的HelpPage来自动生成的webAPI帮助文档.在使用了一段时间后发现只能显示Controller上面写的注释文档内容 ...

随机推荐

  1. (转)配置Spring管理的bean的作用域

    http://blog.csdn.net/yerenyuan_pku/article/details/52833477 Spring管理的bean的作用域有: singleton 在每个Spring ...

  2. liunx+mysql数据库管理

    源码安装 查询是否安装:  rpm -aq |grep mysql 1.下载yum 源            wget 'https://dev.mysql.com/get/mysql57-commu ...

  3. uva11925 Generating Permutations

    逆序做,逆序输出 紫书上的描述有点问题 感觉很经典 ans.push_back(2); a.insert(a.begin(),a[n-1]); a.erase(a.end()-1); a.push_b ...

  4. 把txt格式数据制作成xml数据

    txt格式数据: 代码: s1=""" <object> <name>{0}</name> <pose>Unspecifi ...

  5. Java BufferedReader文件读取 带缓冲区的字符流

    package org.jimmy.autosearch2019.test; import java.io.BufferedReader; import java.io.FileInputStream ...

  6. No-5.远程管理常用命令

    远程管理常用命令 目标 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh scp 01. 关机/重启 序号 命令 对应英文 作用 01 shut ...

  7. C++ 给自己的扫盲笔记

    1.运算符new分配内存的格式: 指针变量名 = new 类型: 如分配一个20字节的name变量    :name = new char[20]; 2.strlen(s);函数: 返回字符串s的长度 ...

  8. [LOJ] 分块九题 7

    区间加法,区间乘法,单点查询. 洛谷线段树2 屡清加法乘法的关系,定义答案为 a*mut+add 对于整块: 新的乘w,mut和add都要乘w 新的加w,add加w //Stay foolish,st ...

  9. 深入Linux内核架构——进程管理和调度(下)

    五.调度器的实现 调度器的任务是在程序之间共享CPU时间,创造并行执行的错觉.该任务可分为调度策略和上下文切换两个不同部分. 1.概观 暂时不考虑实时进程,只考虑CFS调度器.经典的调度器对系统中的进 ...

  10. 解决sqlplus无法退格问题

      # wget http://download.openpkg.org/components/cache/rlwrap/rlwrap-0.42.tar.gz # tar -zxf rlwrap-0. ...