Моля, помогнете ми, като споделите стъпка по стъпка процедурата за постигане на функционалността за сканиране с помощта на Twain в ASP.Net MVC5. Благодаря ти
Как мога да сканирам документ с помощта на ASP.net MVC 5 с помощта на Twain
Отговори (2)
Решението е тук:
В 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
В проекта 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
Можете да преправите този проект, както искате.
В този момент нито един от браузърите не поддържа сканиране от кутията. Трябва да използвате библиотека на трета страна (не е част от основните .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