创建Web应用程序以扫描文档

问题描述 投票:2回答:4

asp.net 08 C#上的工作。我想开发一个Web应用程序,将文档扫描为以下格式(pdf,tiff,jpg,gif.etc。我的扫描图像/文件将在客户端计算机上。

asp.net javascript asp.net-3.5
4个回答
5
投票

您是否尝试过使用LeadTools之类的第三方扫描控件?我过去曾经使用过这些控件,并且表现出色。


2
投票

通过浏览器在扫描的文档中进行着色超出了浏览器的基本功能。

如果您必须坚持使用ASP.NET,则可以考虑编写一个ActiveX控件(我认为仅是IE),该控件可以处理扫描并与您的网页进行交互。

您也可以考虑使用Silverlight。尽管我认为它不能直接处理扫描,但是您应该能够与系统上安装的COM组件进行接口以处理扫描的流。


1
投票

措词有点含糊。扫描仪是在您一边还是在客户一边?我了解到扫描的结果保存在您客户的那一边。


我认为扫描仪在客户方...

您无法通过标准JavaScript访问外围设备[即扫描仪] ...您只能使用ActiveX for IE。

为什么不用C#编写一个小的Winforms应用程序,而让您的客户端下载呢?

顺便说一句,如果客户端有扫描仪,则该扫描仪可能会附带用于操纵扫描仪的软件...


-1
投票

解决方案在这里:

  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项目中,您扫描文档并将图形数据发送回Asp.Net/Core项目:

    公共局部类Form1:表单 { ImageCodecInfo _tiffCodecInfo; TwainSession _twain; bool _stopScan; bool _loadingCaps; 列出所有套接字; WebSocketServer服务器; 公共Form1() { InitializeComponent();

     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

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

© www.soinside.com 2019 - 2024. All rights reserved.