基于 JSON 数据交换的全新 Web 文档扫描方法
在本篇文章中,我们将讨论如何使用 JSON 对象轻松高效地控制扫描仪和获取的图像。本文也是为初学者入门 Dynamic Web TWAIN 编程的指南。
在过去十年中,Dynamsoft 一直致力于文档扫描和管理市场。我们不断改进和完善 Dynamic Web TWAIN — — 这是一个企业级 Web 文档扫描和图像处理 SDK。在最新版本的 Dynamic Web TWAIN 中,Dynamsoft 引入了一套基于 JSON 数据互传的新 API,旨在简化编程难度。
在本篇文章中,我们将讨论如何使用 JSON 对象轻松高效地控制扫描仪和获取的图像。本文也是为初学者入门 Dynamic Web TWAIN 编程的指南。
什么是 Dynamic Web TWAIN?
Dynamic Web TWAIN 是一个基于浏览器的文档扫描 SDK,专为 Web 应用程序设计。它是一个跨平台 SDK,支持 Windows、Linux 和 macOS。
该 SDK 最初是为 TWAIN 兼容设备设计的。这就是产品名称中包含“TWAIN”的原因。如今,Dynamic Web TWAIN 支持的扫描协议还包括 SANE 和 ICA,这使得在 Linux 和 macOS 中可以访问和操作扫描仪。
只需几行 JavaScript 代码,开发人员就可以轻松地将强大的文档扫描功能集成到 Web 应用程序中。除了文档扫描,Dynamic Web TWAIN 还具有图像编辑、保存、上传等功能。
Dynamic Web TWAIN SDK
许可证
获取 免费 30 天试用许可证。
开发者指南
https://www.dynamsoft.com/docs/dwt/index.html
API 文档
https://www.dynamsoft.com/docs/dwt/API/API-Index.html
代码库
https://www.dynamsoft.com/Downloads/WebTWAIN-Sample-Download.aspx
构建一个“Hello World”Web 扫描程序
让我们尝试使用功能齐全的 Dynamic Web TWAIN Windows 版本。
首先,下载 Dynamic Web TWAIN SDK 并按照提示完成安装过程。
在安装 SDK 的同时,您还可以包含一些附加组件,例如 条形码读取器、OCR Basic、OCR Pro、PDF 光栅化器、移动摄像头捕获 和 网络摄像头捕获,以进一步增强您的应用程序。
Windows 安装程序已包含所有平台的扫描服务。您可以在 <Dynamic Web TWAIN>\Resources\dist 目录下找到 .deb、.msi、.pkg 和 .rpm 安装程序。
只需一份代码库,您的 Web 文档扫描应用程序就可以在 Windows、Linux 和 macOS 上运行,前提是已为特定平台安装了相应的 Dynamsoft 服务。
<Dynamic Web TWAIN>\Samples 目录中包含许多有用的示例,您可以对其进行修改和部署。
您可以双击 Getting Started\HelloWorld.html 来运行一个简单的文档扫描应用程序。如果您没有连接扫描仪,可以下载 虚拟扫描仪。
HelloWorld.html:
这是源代码
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js"></script>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js"></script>
</head>
<body>
<div id="dwtcontrolContainer"></div>
<input type="button" value="Scan" onclick="AcquireImage();" />
<script type="text/javascript">
function AcquireImage() {
var DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
if (DWObject) {
DWObject.SelectSource(function () {
var OnAcquireImageSuccess, OnAcquireImageFailure;
OnAcquireImageSuccess = OnAcquireImageFailure = function () {
DWObject.CloseSource();
};
DWObject.OpenSource();
DWObject.IfShowUI = false;
DWObject.Resolution = 300;
DWObject.PixelType = EnumDWT_PixelType.TWPT_GRAY;
DWObject.AcquireImage(OnAcquireImageSuccess, OnAcquireImageFailure);
}, function () {
console.log('SelectSource failed!');
});
}
}
</script>
</body>
</html>
要实现一个简单的文档扫描 Web 应用程序,请遵循以下基本步骤:
- 实例化 Dynamic Web TWAIN 对象
- 选择扫描设备
- 打开扫描仪源
- 从扫描仪获取图像
用 JSON 对象替换 JavaScript 代码
使用最新的 Dynamic Web TWAIN SDK 时,开发人员无需编写太多 JavaScript 代码。相反,Dynamsoft 服务和 Web 客户端之间通信的新方式是将扫描操作和命令打包到 JSON 对象中。
将上面的 JavaScript 代码转换为 JSON 对象,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.initiate.js"></script>
<script type="text/javascript" src="Resources/dynamsoft.webtwain.config.js"></script>
</head>
<body>
<div id="dwtcontrolContainer"></div>
<input type="button" value="Scan" onclick="AcquireImage();" />
<script type="text/javascript">
function AcquireImage() {
var DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');
if (DWObject) {
DWObject.startScan({
exception: "fail",
ui: { bShowUI: false },
settings: {
Resolution: 300,
IfDisableSourceAfterAcquire: true,
pixelType: EnumDWT_PixelType.TWPT_GRAY
}
}).then(function(settings){
}).catch(function(err){
alert(JSON.stringify(err));
});
}
}
</script>
</body>
</html>
为了调试目的,让我们尝试触发一个异常,将 像素类型 更改为 17(一个不支持的值)。
settings: { Resolution: 300, IfDisableSourceAfterAcquire: true, pixelType: 17 }
有关 JSON 对象属性的更多信息,请参阅 <Dynamic Web TWAIN >\ Documents\Dynamic Web TWAIN Developer's Guide.pdf。
使用 JSON 对象有什么好处?
由于 Dynamsoft 服务支持 JSON 数据互传,因此 JavaScript 不再是构建文档扫描应用程序的唯一编程语言。新的通信模型允许开发人员发送扫描请求并接收编码为 base64 字符串的扫描文档。在不久的将来,您可以使用 Java、Python 或其他高级编程语言在任何操作系统中创建文档扫描和管理应用程序。 订阅我们的新闻通讯,并在有可用信息时立即收到通知。
技术支持
如果您对 Dynamic Web TWAIN SDK 有任何疑问,请随时联系 support@dynamsoft.com。
发布历史
- V14.3.1, 2019年1月15日
新建
- [ActiveX] 添加了方法
GetImagePartURL
以与条形码读取器配合使用。 - [HTML5] 添加了几个全局设置,可以加快 SDK 的初始化过程。这些设置是
IfCheckDCP
,IfCheckDWT
,IfDisableDefaultSettings
和IsLicensePromptFriendl
。
改进
- [HTML5 | Windows] 改进了 JPEG 压缩算法,当设置为 JPEG 时,最终文件大小显著减小。
- [ActiveX & HTML5 | Windows] 在服务安装程序中包含了网络摄像头和条形码读取器库,以便于分发。
- [HTML5] 改进了内置图像查看器,使其在导航图像时响应更灵敏。