在处理webapp的典型文档中考虑以下扫描程序:
这个过程非常复杂,我想减少步骤数,以使流程更加用户友好/万无一失。在理想情况下,上述步骤将仅被替换为一个步骤,其中该过程启动文档扫描,完成文档扫描并且在点击说“扫描并上载”时从webapp自动触发上载结果图像。不幸的是,“网络/扫描仪集成”的状态似乎很差,所以这可能是乌托邦。
你会如何解决这个问题?更具体地说,您将如何减少所描述的用例中涉及的数量步骤?
答案 0 :(得分:13)
嗯,两年过去了,所以这里有一些关于加入我们的人的最新技术。
Dynamsoft和Atalasoft都有多浏览器网络扫描工具包,可与任何服务器端堆栈兼容。两者都要求用户安装ActiveX(在IE中)或NPAPI插件(Chrome,Firefox等)以通过TWAIN API访问扫描仪。
显然,如果你有时间或有限的预算,你可以创建自己的插件。我衷心推荐FireBreath plugin framework和任何 TWAIN库,而不是编写自己的TWAIN代码。
安装ActiveX或插件后,剩下的工作就是javascript和amp;客户端上的HTML,以及服务器上用于接受和处理传入图像的某种处理程序,可以使其看起来就像带有附加文件的多部分表单一样。
我建议使用AJAX在javascript中进行图像上传,因为它是与网页相同的浏览器“会话”的一部分,并且它继承了浏览器的代理设置,会话cookie和服务器端身份验证。我不知道Dynamsoft的控制,Atalasoft工具包包括这样的AJAX上传。图像作为base64编码的字符串从插件传递到javascript,因此实际上没有创建本地文件。
免责声明:我使用的是Atalasoft的WingScan网络扫描工具包。
答案 1 :(得分:7)
如果您的目标受众群体正在运行Windows和IE,并且您不介意花费几美元,那么Atalasoft会有一些组件可以满足您的需求。
答案 2 :(得分:1)
我实际上看到银行的某个人在设置我的帐户时这样做,我非常惊讶。有问题的银行正在使用Windows和IE,我假设您处于同样受控制的环境中。我认为该银行使用了自定义/可预测扫描程序驱动程序和ActiveX控件的组合。
加载的页面上写着“打开扫描仪”,工作人员弹出文档并点击网页上的“扫描”,然后页面改为“扫描”,然后在网页上显示扫描文档,供工作人员使用批准。我只能假设扫描仪驱动程序将图像发送到某个位置,并且活动X控件正在轮询它出现,一旦它出现它在屏幕上显示图像,一旦工作人员批准它,活动x上传它的背景。她打开了下一页并继续完成剩下的工作。
上帝知道他们如何使所有技术工作,但它可以做到。
答案 3 :(得分:1)
Silverlight 4即将推出。它应该能够与用户计算机上的COM对象进行交互(前提是它们运行的是Windows)。理论上,您可以从Silverlight网页调用WIA方法。
答案 4 :(得分:1)
我们实施了一个为银行实施远程存款的解决方案。它仅适用于IE。创建了一个与LeadTools TWAIN dll接口的winforms dll。 Leadtools TWAIN dll抽象所有TWAIN minutae。这种方法比使用ActiveX控件要好得多。客户端需要.NET Framework。扫描的图像将回发到页面上的隐藏变量,并在服务器上进行处理。
答案 5 :(得分:0)
如果目标是“自动执行扫描和上传过程”而不是“编写Web应用程序”,我会编写一个AutoIt脚本来控制现有的扫描仪软件和一个简单的ftp程序。
答案 6 :(得分:0)
最有可能删除大多数步骤的选项可能是编写一个用户可以在本地计算机上下载并运行的自定义扫描实用程序。
SANE或TWAIN将处理获取扫描图像。 cURL可以处理将图像上传到您的网络应用程序。为了让最终用户更容易,我会使用类似Comet连接的东西来在文件可用时更新网页。
如果这不是一个选项,您可能会考虑使用扫描仪软件查看用户可能拥有的选项。我相信很多程序现在支持扫描到电子邮件或ftp。
我用于Intranet应用程序的解决方案是使用多功能扫描仪/复印机扫描到Web服务器可以访问的SMB共享。用户只需前往复印机扫描到共享,当他们回到他们的办公桌时,他们会转到新的扫描页面,其中显示了所有新的未处理文件的列表。
答案 7 :(得分:0)
由于您的受众是受控环境,因此您可以根据执行扫描的WIA / TWAIN编写自己的浏览器扩展程序/程序。如果选择BHO / ActiveX / XPCOM等浏览器扩展,则需要获得用户的许可才能安装扩展。如果您选择编写程序,则可能需要从Web上启动ClickOnce或Java Web Start等Web部署技术。
连接TWAIN对Windows来说是一种痛苦。除了复杂性之外,您还必须显示由不同扫描仪驱动程序开发人员编写的GUI。它可能是支持旧扫描仪或未通过其他接口曝光的功能的唯一方法,例如来自文档进纸器的全速多页扫描。
使用脚本对象模型,Microsoft的WIA可以更轻松地与扫描仪连接,但是扫描仪特定的功能不可用,而且一些旧的扫描仪不支持该接口。
扫描完成后,您可以调用Web服务通知服务器,网页可以定期刷新以检查新图像。
答案 8 :(得分:0)
我们做了类似的事情。我们使用了命令行TWAIN程序(http://www.burrotech.com/quickscan.php)。 $$ $ 49
1)我们开发了一个小型.Net应用程序来运行QuickScan程序作为shell命令
2)该命令已分配给扫描按钮
3)一旦用户按下扫描按钮,将出现提示输入文件名。用户将事务ID保存为文件名
4)另一个.Net应用程序(或者之前提到的相同)将读取此文件并将其上传到数据库中,因为文件名是事务ID。
像黄油一样温暖的刀子!
您可以尝试在IE中显示交易ID,用户选择ID然后按扫描。您的应用程序将读取SELECTED文本并使用SELECTED文本作为文件名保存文件。我们没有尝试过,但它应该有用。
答案 9 :(得分:-2)
如果您认为Web应用程序仅限于Web浏览器,那只是乌托邦,事实上,除了HTML和Javascript之外,Web应用程序还可以包含许多不同的技术。
解决这个问题的很酷的方法 - 事实上,我已经将它用于某些usbserial设备 - 是使用SOAP + XMPP实现你的应用程序。你可以使用XML :: CompileX :: Transport :: SOAPXMPP,Catalyst :: Engine :: XMPP2,Catalyst :: Controller :: SOAP和Catalyst :: Model :: SOAP在Perl中完成。
使用XMPP的有趣之处在于它简化了寻址管理,因为您使用JID(Jabber ID)来查找软件代理,而不是某些主机+端口寻址模式。使用XMPP的第二个有趣的部分是更容易支持服务器将信息推送到客户端。
但是如果你不想处理XMPP,你仍然可以使用轻量级的嵌入式http服务器 - 在Perl中的HTTP :: Server :: Simple - 做同样的事情 - 并以某种方式在服务器中注册当前的扫描程序地址所以它可以回电。
最后一个选项,不是那么可爱,是让软件代理轮询服务器,看看该特定机器何时有“扫描文档和上传”订单,并在存在时实现该操作。 / p>
总之,让本地软件代理与本地硬件交互不会使您的webapp变得不那么“web”,只要您使用Web标准(如XML,SOAP和其他)来执行该通信。
答案 10 :(得分:-3)
您可以在您的网站中放置一个Java小程序。这可以访问扫描仪并通过REST将数据发送到您的Web服务器。