【问题标题】:Document Scanning from ASP.net Web Application从 ASP.net Web 应用程序扫描文档
【发布时间】:2012-08-12 05:11:00
【问题描述】:

我有一个 ASP.Net C# 4.0 Web 应用程序

我需要为我的用户添加扫描功能。 这就是我想要实现的 在我的网络应用程序上

  1. 用户点击按钮
  2. 在连接到客户端系统的扫描设备中打开一个带有文档预览的窗口
  3. 用户确认扫描
  4. 这会将扫描的文档以 jpg/pdf 格式保存在服务器上
  5. 然后对文档进行 OCR

任何人都可以提出一种方法来实现这一点。

我读到了这个https://www.leadtools.com/sdk/engine/imaging 不确定这能起到多大的作用。任何人都可以提出一种最好的方法来完成这项工作。

谢谢

更新

按照 LEAD 支持的建议尝试了来自 https://www.leadtools.com/support/forum/posts/m28036-Re--Scan-and-Upload-v16--NET-with-Caspol-exe-deployment 的 Leadtools,但它缺少参考,不确定在哪里以及如何获得这些参考

【问题讨论】:

  • 你可以使用闪光灯或银光。
  • 您必须使用客户端浏览器插件。您可以控制客户的浏览器吗?
  • @DarinDimitrov 是的。我可以控制我的最终用户浏览器。你能详细说明我该怎么做吗?

标签: asp.net c#-4.0 image-scanner leadtools-sdk


【解决方案1】:

哈博, 这是领导支持。既然您提到了我们的 LEADTOOLS 工具包,那么您的问题的答案是肯定的。我们的工具包可用于实现 tgolisch 提到的两种方法中的任何一种。

对于单击一次方法,您只需使用包含 Twain 支持的 Windows 窗体控件并将您的应用程序打包以进行 ClickOnce 部署。例如,这是在这个演示项目中完成的: LEADTOOLS ClickOnce Demos

有关自定义控制方法,请参阅我们论坛上执行Scan and Upload 的示例代码项目

【讨论】:

  • 感谢您提供的链接,将尝试自定义控件并在此处发布它对我的帮助。我可以在 .Net Framework 4.0 上使用此控件吗?
  • 是的,你可以。我们的大部分 .Net 控件都支持 .Net 框架 4.0,我们也有其他版本的 .Net 框架版本。此外,它们同时支持 32 位和 64 位应用程序。关于缺少引用的问题,要获取 DLL,您应该在您的 PC 上下载我们的工具包并将它们添加为应用程序的引用。您可以使用此页面下载 LEADTOOLS v17.5 的免费评估版:leadtools.com/downloads/evaluationform.htm 如果您还有其他问题,请通过 support@leadtools.com 联系我们的支持团队,我们很乐意为您提供帮助。
  • 这是边界广告。
【解决方案2】:

解决方案在这里:

  1. 在 ASP.Net/Core 项目中,您发送消息以调用 winform 项目:

            var start = function () {
            var i = 0;
            var wsImpl = window.WebSocket || window.MozWebSocket;
            window.ws = new wsImpl('ws://localhost:8181/');
            ws.onmessage = function (e) {
                $('#submit').hide();
                $('#scanBtn').hide();
                $('.loader').show();
                if (typeof e.data === "string") {
                    //IF Received Data is String
                }
                else if (e.data instanceof ArrayBuffer) {
                    //IF Received Data is ArrayBuffer
                }
                else if (e.data instanceof Blob) {
                    i++;
                    var f = e.data;
                    f.name = "File" + i;
                    storedFiles.push(f);
                    formdata.append(f.name, f);
                    var reader = new FileReader();
                    reader.onload = function (e) {
                        var html = "<div class=\"col-sm-2 text-center\" 
                    style=\"border: 1px solid black; margin-left: 2px;\"><img 
                    height=\"200px\" width=\"200px\" src=\"" + e.target.result + "\" 
                    data-file='" + f.name + "' class='selFile' title='Click to 
                    remove'><br/>" + i + "</div>";
                        selDiv.append(html);
                        $('#submit').show();
                        $('#scanBtn').show();
                        $('.loader').hide();
                    }
                    reader.readAsDataURL(f);
                }
            };
            ws.onopen = function () {
                //Do whatever u want when connected succesfully
            };
            ws.onclose = function () {
                $('.dalert').modal('show');
            };
        }
        window.onload = start;
        function scanImage() {
            ws.send("1100");
        };
    

https://javascript.info/websocket

  1. 在 Winforms Project 中扫描文档并将图形数据发送回 Asp.Net/Core 项目:

    公共部分类 Form1 : Form { ImageCodecInfo _tiffCodecInfo; TwainSession _twain; 布尔_stopScan; 布尔 _loadingCaps; 列出所有套接字; WebSocketServer 服务器; 公共表格1() { 初始化组件();

     if (NTwain.PlatformInfo.Current.IsApp64Bit)
    {
        Text = Text + " (64bit)";
    }
    else
    {
        Text = Text + " (32bit)";
    }
    foreach (var enc in ImageCodecInfo.GetImageEncoders())
    {
        if (enc.MimeType == "image/tiff") { _tiffCodecInfo = enc; break; }
    }
    
    this.WindowState = FormWindowState.Minimized;
    this.ShowInTaskbar = false;
    
    allSockets = new List<IWebSocketConnection>();
    server = new WebSocketServer("ws://0.0.0.0:8181");
    server.Start(socket =>
    {
        socket.OnOpen = () =>
        {
            Console.WriteLine("Open!");
            allSockets.Add(socket);
        };
        socket.OnClose = () =>
        {
            Console.WriteLine("Close!");
            allSockets.Remove(socket);
        };
        socket.OnMessage = message =>
        {
            if (message == "1100")
            {
                this.Invoke(new Action(()=> {
                    this.WindowState = FormWindowState.Normal;
                }));
            }
        };
    });
    

    }

项目链接。

https://github.com/mgriit/ScanAppForWeb

您可以根据需要重新制作此项目。

【讨论】:

    【解决方案3】:

    Web 浏览器无权使用此类系统设备(主要安全问题)。有两种常见的解决方法:

    1. 制作自定义控件以在浏览器中运行(flash、silverlight、java 小程序)。
    2. 制作用户从您的页面启动的“单击一次部署应用程序”。

    这两种方法都会通过网络将数据发送回您的服务器 服务或 WCF 等。

    【讨论】:

      猜你喜欢
      • 2016-11-11
      • 2019-02-06
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      相关资源
      最近更新 更多