LEADTOOLS的HTML5 Web扫描

发布时间:2015/10/23 00:10 发布者:iceman

返回博客中心

在本白皮书中,我们将探索这个创新框架的内部工作情况,以及开发者如何编写短短几行代码来扩展和自定义他们的应用程序。

简介

TWAIN扫描和文档捕获是大多数文档图像应用程序的起点和必不可少的部分。由于TWAIN扫描仪和图像捕捉设备有局部化和依赖硬件的特性,因此对于web开发者来说这个需求非常麻烦。有许多麻烦等着开发者去解决,最后客户还是会遇到很多繁琐,浪费时间。例如,在单独的应用中扫描为客户带来了一个艰难的工作流。浏览器插件与特定的浏览器锁定,限制了应用程序的灵活性。最后,更新和维护多个代码库会将你的基于web的扫描应用程序变为噩梦。

LEADTOOLS已经开发了一个Web扫描SDK,它解决了很多问题,同时提供了一个程序员友好的可定制框架,这个框架可以将TWAIN扫描轻松集成到任意的基于web的文档图像解决方案中。在本白皮书中,我们将探索这个创新框架的内部工作情况,以及开发者如何编写短短几行代码来扩展和自定义他们的应用程序。

LEADTOOLS Web扫描组件和架构

LEADTOOLS Web扫描包括三个主要组件:一个自托管的Web服务,一个由HTML5和JavaScript创建的跨平台web浏览器和一个服务器端的上传Web服务。每个组件的设计都考虑了最大的可扩展性,让创建一个健壮的、具有简单更新程序且考虑到多开发者关注分离的web应用变为可能。

clip_image002

此架构非常灵活,允许开发者在新项目中使用一个或多个组件,还能在已有的web企业级解决方案中添加web扫描功能。

自托管的Web服务

LEADTOOLS Web扫描应用程序的核心是ScanningService,一个自托管的Web服务(SHWS)。由于TWAIN设备驱动只能安装在客户端机器上,因此这个组件必不可少。SHWS通过JavaScript接收REST服务,允许浏览器客户机选择TWAIN源、商议TWAIN能力、获取状态、获取图像到本地缓存,web应用可以通过HRI加载这个缓存。

_scanningService.acquire(true, function (status) {
   for (; _totalScannedPages < status.scandPagesNumber; _ui.lastPageNumber++) {
      _thumbnail.addThumbnail(_ui.lastPageNumber + 1, false);
   }
}

SHWS通过一个自定义的AddIn接口可以实现LEADTOOLS的200多个图像处理函数。ApplyImageProcessingCommand web服务方法会调用类实现IImageProcessingAddIn,然后在图像上应用图像处理函数和参数,最后通过一个客户端可访问的URI返回图像。

AddIn需要的只是一个名为GetIPCommand的方法,这个方法会返回一个CommandCallBack对象。

public CommandCallBack GetIPCommand(string name)
{
   switch (name)
   {
      case "Flip":
         return FlipImage;
      case "Rotate":
         return RotateImage;
      case "Deskew":
         return DeskewImage;
      case "HolePunchRemove":
         return RemoveImageHolePunch;
      case "BorderRemove":
         return RemoveImageBorder;
      default:
         return null;
   }
}//...private void DeskewImage(RasterImage image, string commandParam)
{
   int angleRange = ScanningHelper.JsonStringToInteger(commandParam, "angleRange");
   int angleResolution = ScanningHelper.JsonStringToInteger(commandParam, "angleResolution");
   RasterColor fillColor = ScanningHelper.JsonStringToRasterColor(commandParam, "fillColor");
   int flags = ScanningHelper.JsonStringToInteger(commandParam, "flags");
   DeskewCommand cmd = new DeskewCommand(fillColor, (DeskewCommandFlags)flags);
   cmd.AngleRange = angleRange;
   cmd.AngleResolution = angleResolution;
   cmd.Run(image);
}

然后从客户端JavaScript,调用SHWS只需要短短几行代码:

var commandParam: any = new Object();
commandParam.fillColor = JSON.stringify(fillColor);
commandParam.flags = flags;
commandParam.angleRange = 0;
commandParam.angleResolution = 0;
_scanningService.applyImageProcessingCommand("Deskew", _currentPageNumber, 
    JSON.stringify(commandParam), onSuccess, onFailed); 

HTML5 / JavaScript Web应用程序

客户端驱动着具有健壮web接口的应用程序,这个接口使用了LEADTOOLS HTML5图像查看控件,通过RESTful JavaScript命令与SHWS通信。LEADTOOLS附带的示例包括缩略图浏览器、图像查看器和若干客户端工具,如平移、缩放、适应、拉伸和放大镜。还可以轻松添加其他的功能如注释和标记、拖拽等。最重要的是,由于应用程序使用HTML5和JavaScript 设计,因此它可以在运行SHWS的Windows机器支持的任意浏览器上运行,且无需任何插件。

clip_image004

服务器端上传Web服务

使用HTML5接口和SHWS在客户端扫描和处理文档后,新建的图像可以被上传到服务器端进行其他的操作。在发布的示例应用中, UploadService可以将文件转化为LEADTOOLS支持的150多种文件格式中的任意一种,然后为客户端返回URI以供下载。若想添加新文件格式的支持,找到上传服务中的EndDocument方法,在此方法的一个switch语句里添加几行代码就可以了。

RasterImageFormat saveFormat;switch (mimeType.ToLower())
{
   case "application/pdf":
      documentFullName = Path.Combine(storeFolderPath, name + ".pdf");
      saveFormat = RasterImageFormat.RasPdfJpeg411;
      break;
   case "image/tiff":
      documentFullName = Path.Combine(storeFolderPath, name + ".tif");
      saveFormat = RasterImageFormat.TifJpeg411;
      break;
   default:
      throw new ArgumentException(string.Format("'{0}' not Supported Format", mimeType));
}

我们为您提供了上传服务的源码,如果需要更多高级处理,您可以自定义它。 IUploadService接口为发送自定义的用户数据,实现LEADTOOLS的功能包括OCR、条码、表单识别、保存为SharePoint等奠定了基础。

总结

在跨浏览器的HTML5解决方案种将文档扫描为数字图像格式只是LEADTOOLS诸多实际解决方案中的一个。这个先进的Web扫描SDK让创建用于捕捉文档的创新应用程序变为可能,还提供了一个程序员友好的模块化框架,可以将web扫描功能添加到任何已有的web应用程序或工作流中。它还为扩展基于web的文档图像解决方案打开了一扇大门。LEADTOOLS拥有光栅、文档、医学和多媒体图像的综合工具包,为我们带来了巨大的价值。


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网