文档章节

JavaScript文档扫描 - 支持Windows, Linux & macOS

yushulx
 yushulx
发布于 2016/09/06 15:08
字数 521
阅读 71
收藏 1

不同的操作系统,底层使用的扫描仪驱动是不同的。Linux上用SANE,Windows上用TWAIN,Mac上用TWAIN或者ICA。不管上层用的是什么高级语言 (Java, Python, JavaScript等等), 一个跨平台的文档扫描SDK或者软件必须支持不同平台的扫描仪访问协议。Dynamic Web TWAIN是目前唯一一个支持Windows, Linux和macOS的文档扫描SDK。这里分享下如何使用Node.js来快速实现一个支持多平台的web文档扫描应用。

参考原文:JavaScript Document Scanning for Windows, Linux and macOS

作者:Xiao Ling

翻译:yushulx

JavaScript多平台文档扫描

1. 安装Node.js.

2. 创建工程document-scanning。初始化:

npm init

3. 通过npm安装ExpressDynamic Web TWAIN

npm install express -–save
npm install dwt --save

4. 创建HTML前端页面。初始Dynamic Web TWAIN化对象:

<script type="text/javascript" src="node_modules/dwt/dist/dynamsoft.webtwain.initiate.js"></script>
<script type="text/javascript" src="node_modules/dwt/dist/dynamsoft.webtwain.config.js"></script>

    打开node_modules/dwt/dist/dynamsoft.webtwain.config.js修改资源路径:

Dynamsoft.WebTwainEnv.ResourcesPath = '<Resource Directory>';

    注册事件监听:

Dynamsoft.WebTwainEnv.RegisterEvent('OnWebTwainReady', Dynamsoft_OnReady);  // Register OnWebTwainReady event. This event fires as soon as Dynamic Web TWAIN is initialized and ready to be used
 
var DWObject;
function Dynamsoft_OnReady() {
            DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');    // Get the Dynamic Web TWAIN object that is embeded in the div with id 'dwtcontrolContainer'
            if (DWObject) {
                if (window.navigator.platform.indexOf("Linux") !== -1) {
                    DWObject.ImageCaptureDriverType = 3;
                }
                     
                var count = DWObject.SourceCount;
                for (var i = 0; i < count; i++)
                    document.getElementById("source").options.add(new Option(DWObject.GetSourceNameItems(i), i)); // Get Data Source names from Data Source Manager and put them in a drop-down box
            }
}

    触发文档扫描:

function AcquireImage() {
            if (DWObject) {
        var OnAcquireImageSuccess, OnAcquireImageFailure;
        OnAcquireImageSuccess = OnAcquireImageFailure = function (){
            DWObject.CloseSource();
        };
                 
                DWObject.SelectSourceByIndex(document.getElementById("source").selectedIndex); //Use method SelectSourceByIndex to avoid the 'Select Source' dialog
                DWObject.OpenSource();
                DWObject.IfDisableSourceAfterAcquire = true;    // Scanner source will be disabled/closed automatically after the scan.
                DWObject.AcquireImage(OnAcquireImageSuccess, OnAcquireImageFailure);
            }
}

    在Linux上需要设定驱动类型:

DWObject.ImageCaptureDriverType = 3;

5. 创建后端的server.js

var express = require('express');
var app = express();
 
app.use(express.static(__dirname));
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();
});
 
var server = app.listen(2016, function() {
    var host = server.address().address;
    var port = server.address().port;
    console.log('listening at http://%s:%s', host, port);
});

6. 启动服务:

node server.js

7. 在浏览器中打开网页http://localhost:2016/helloworld.html。以下是不同平台支持的浏览器:

  • Windows: IE, Edge, Chrome, Firefox
  • Linux: Chrome, Firefox
  • macOS: Chrome, Firefox, Safari

源码

https://github.com/yushulx/document-scanning

 

© 著作权归作者所有

yushulx
粉丝 29
博文 107
码字总数 60955
作品 0
杭州
私信 提问
Mozilla Firefox 3.7 Alpha 3 开发者预览版

Mozilla Firefox是一个自由的,开放源码的浏览器,适用于Windows, Linux 和 MacOS X平台。它 还有其它一些高级特征,如标签式浏览,可以禁止弹出式窗口。内置了钓鱼保护、改变标签浏览行为、...

小编辑
2010/03/18
159
0
Mozilla Firefox 3.7 Alpha 4 发布

Mozilla Firefox是一个自由的,开放源码的浏览器,适用于Windows, Linux 和 MacOS X平台。它还有其它一些高级特征,如标签式浏览,可以禁止弹出式窗口。内置了钓鱼保护、改变标签浏览行为、能...

红薯
2010/04/09
294
0
QuickJS,一个小型并且可嵌入的 Javascript 引擎

QuickJS 是一个小型并且可嵌入的 Javascript 引擎,它支持 ES2019 规范,包括模块,异步生成器和代理器。 它可选支持数学扩展,例如大整数 (BigInt),大浮点数 (BigFloat) 以及运算符重载。 ...

llgoer
07/13
9.3K
17
新的 CSS 攻击会导致 iOS 系统重启或 Mac 冻结

Wire 的安全研究员 Sabri Haddouche 发现了一种新的攻击,只需访问包含某些 CSS 和 HTML 的网页,就会导致 iOS 重新启动以及 macOS 冻结。 Windows 和 Linux 用户不受此错误的影响。 攻击利用...

达尔文
2018/09/17
5.8K
16
Yue v0.2.0 发布,创建本机跨平台 GUI 应用程序的库

Yue v0.2.0 发布了,Yue 是用于创建本机跨平台 GUI 应用程序的库。通过使用其 V8 绑定,您可以轻松地使用 Node.js 构建桌面应用程序。 更新内容: 添加 TextEdit API. 添加 FileDialog API. ...

同一种调调
2017/09/13
1K
9

没有更多内容

加载失败,请刷新页面

加载更多

会用python把linux命令写一遍的人,进大厂有多容易?

看过这篇《2000字谏言,给那些想学Python的人,建议收藏后细看!》的读者应该都对一个命令有点印象吧?没错,就是 linux 中经常会用到的 ls 命令。 文章中我就提到如何提升自己的 python 能力...

上海小胖
21分钟前
6
0
HashMap的特性

一、hashmap数据结构:哈希表结构:数组+链表 hashmap调用默认构造方法会产生一个默认底层是长度为16的Entry数组,首先调用key的hasCode()方法来得到一个整数, int hash = hash(key.hashCode...

GGbird
22分钟前
16
0
第五章 spring-connet之Imports注解来龙去脉

前言 imports是一个在spring体系里非常重要的注解,基本每个Enable开头的注解必然有一个import注解。接下来我们深入研究下import的作用。看小节的同学建议先取看PostProcessorRegistrationDe...

鸟菜啊
25分钟前
4
0
CentOS部署Harbor镜像仓库

关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全、标识、管理等方面做了增强,更适合企业使用; 官方网站:https://goharbor.io/ 官方开源:...

程序员欣宸
30分钟前
5
0
JavaScript调试必会的8个console方法

每个JavaScript开发者都用过console.log()来调试程序,但实际上Console对象还提供了很多其他方法可以提高调试效率。本文将介绍8个有趣的Console方法,即使JavaScript老手也不一定知道! 1、c...

汇智网教程
51分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部