Как мога да сканирам документ с помощта на ASP.net MVC 5 с помощта на Twain

Моля, помогнете ми, като споделите стъпка по стъпка процедурата за постигане на функционалността за сканиране с помощта на Twain в ASP.Net MVC5. Благодаря ти


person Rahul Sen    schedule 04.08.2016    source източник


Отговори (2)


Решението е тук:

  1. В ASP.Net/Core Project изпращате съобщение за извикване на проект 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 : Form { ImageCodecInfo _tiffCodecInfo; TwainSession _twain; bool _stopScan; bool _loadingCaps; Избройте всички гнезда; WebSocketServer сървър; public 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

Можете да преправите този проект, както искате.

person Aziz Nortojiev    schedule 16.06.2020

В този момент нито един от браузърите не поддържа сканиране от кутията. Трябва да използвате библиотека на трета страна (не е част от основните .NET компоненти на Microsoft). Примерът по-долу използва Scanner.js, който е продукт, предлаган от нашата компания:

Активиране на сканиране от TWAIN скенери към ASP.NET страници: стъпка по стъпка

Стъпките по-долу използват скенер .js като пример; те могат да се различават за други продукти.

1) Включете библиотеката за сканиране във вашия HTML код:

<script type="text/javascript" src="//asprise.azureedge.net/scannerjs/scanner.js"></script>

2) Добавете бутон за задействане на процеса на сканиране:

function scanToJpg() {
   scanner.scan(displayImagesOnPage,
   {
  "twain_cap_setting" : {
    "ICAP_PIXELTYPE" : "TWPT_RGB", // Color
    "ICAP_XRESOLUTION" : "100", // DPI: 100
    "ICAP_YRESOLUTION" : "100",
    "ICAP_SUPPORTEDSIZES" : "TWSS_USLETTER" // Paper size: TWSS_USLETTER, TWSS_A4, ...
  },
      "output_settings" :
      [
         {
            "type" : "return-base64",
            "format" : "jpg"
         }
      ]
   }
   );
}

3) Обработка на резултата от сканирането - показване, качване и т.н.

Кодът по-долу създава елемент img за всяко изображение, сканирано за показване на текущата уеб страница:

/** Processes the scan result */
function displayImagesOnPage(successful, mesg, response) {
   var scannedImages = scanner.getScannedImage(response, true, false); // returns an array of ScannedImage
   for(var i = 0; (scannedImages instanceof Array) && i < scannedImages.length; i++) {
      var scannedImage = scannedImages[i];
      processScannedImage(scannedImage);
   }
}

/** Images scanned so far. */
var imagesScanned = [];

/** Processes a ScannedImage */
function processScannedImage(scannedImage) {
   imagesScanned.push(scannedImage);
   var elementImg = createDomElementFromModel( {
       'name': 'img',
       'attributes': {
           'class': 'scanned',
           'src': scannedImage.src
       }
   });
   document.getElementById('images').appendChild(elementImg);
}

За примери за сканиране в PDF формати и директно качване, моля, посетете хранилището на кодове: https://github.com/Asprise/scannerjs.javascript-scanner-access-in-browsers-chrome-ie.scanner.js

person Scanner.js Receipt Invoice OCR    schedule 08.11.2016
comment
Моля, споменете в отговора, че използвате библиотека на трета страна (която е направена от вашата компания) и не е общо решение за сканиране на документи с помощта на общи библиотеки на ASP.net. - person Salik; 16.03.2018
comment
@Salik Актуализирах отговора според вашето предложение. Благодаря ти. - person Scanner.js Receipt Invoice OCR; 14.05.2018