我有一个ASP.Net C#4.0 Web应用程序
我需要为我的用户添加扫描功能。 这就是我想要实现的目标 在我的网络应用程序
任何人都可以提出实现这一目标的方法。
我读到了这个https://www.leadtools.com/sdk/engine/imaging,不知道这有多少可行。任何人都可以建议一个完成这项工作的最佳方法。
由于
尝试了来自https://www.leadtools.com/support/forum/posts/m28036-Re--Scan-and-Upload-v16--NET-with-Caspol-exe-deployment的引导工具作为LEAD支持建议,但它缺少引用,不确定在何处以及如何获取这些引用
答案 0 :(得分:2)
HABO, 这是LEAD的支持。既然您提到了我们的LEADTOOLS工具包,那么您的问题的答案是肯定的。我们的工具包可用于实现tgolisch提到的两种方法中的任何一种。
对于click-once方法,您只需使用包含Twain支持的Windows窗体控件,并将您的应用程序打包为ClickOnce部署。例如,在此演示项目中完成此操作: LEADTOOLS ClickOnce Demos
对于自定义控件方法,请参阅我们论坛上执行Scan and Upload
的示例代码项目答案 1 :(得分:0)
Web浏览器无权使用此类系统设备(主要安全问题)。有两种常见的解决方法:
这两种方法都会通过网络将数据发送回您的服务器 服务或WCF等。
答案 2 :(得分:0)
解决方案在这里:
在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:表单 { 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
您可以根据需要重新制作该项目。