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



     

    目录(?)[+]

    通过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
  • 相关阅读:
    Colocate Join :ClickHouse的一种高性能分布式join查询模型
    Spring Cache设计之美,你品,你细品…
    Java反射机制清空字符串导致业务异常分析
    带你了解TensorFlow pb模型常用处理方法
    代码检查工具 好的程序员都应该进行代码检查
    docker启动consul
    SpringCloud的主要功能
    docker容器相关
    模型函空运左快
    docker使用nacos
  • 原文地址:https://www.cnblogs.com/lcword/p/6902468.html
Copyright © 2020-2023  润新知