Как я могу отсканировать документ с помощью 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 Project вы сканируете документ и отправляете графические данные обратно в проект Asp.Net/Core:

    общедоступный частичный класс Form1: Form { ImageCodecInfo _tiffCodecInfo; TwainSession _twain; логический _stopScan; логический _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

На данный момент ни один из браузеров не поддерживает сканирование из коробки. Вам необходимо использовать стороннюю библиотеку (не являющуюся частью основных компонентов Microsoft .NET). В приведенном ниже примере используется 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