如何在Twain的帮助下使用ASP.net MVC 5扫描文档
本文关键字:net ASP MVC 文档 扫描 Twain 帮助 | 更新日期: 2023-09-27 18:00:12
请帮助我分享在ASP.Net MVC5中使用Twain实现扫描功能的分步过程。感谢
解决方案在这里:
-
在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
-
在Winforms项目中,您扫描文档并将图形数据发送回Asp.Net/Core项目:
公共分部类Form1:Form{ImageCodecInfo_tiffCodecInfo;TwainSession _twain;bool停止扫描;bool_loadingCaps;列出所有套接字;WebSocketServer服务器;公共窗体1(){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
你可以根据自己的意愿重新制作这个项目。
目前,没有一个浏览器支持开箱即用的扫描。您需要使用第三方库(不是Microsoft.NET核心组件的一部分)。以下示例使用Scanner.js,这是我们公司提供的产品:
启用从TWAIN扫描仪到ASP.NET页面的扫描:循序渐进
以下步骤使用Scanner.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