ASP.NET表单上的Wacom签名
我正在编写一个ASP.NET网络表单应用程序,它应该使用Wacom平板电脑(STU-430)签名来注册应用程序本身生成的文档 ASP.NET应用程序在web服务器上运行,远程客户端(由于使用Wacom对象,目前仅限Internet Explorer)拥有/处理用于签名的平板电脑 webform应该只嵌入用于收集/捕获签名的代码。签名处理应由web服务器远程处理 Wacom HTML示例使用javascript和COM允许客户端HTML页面捕获签名,并将签名“存储”在表单中的元素中。 长话短说,这是“签名”之前的HTML文档结构:ASP.NET表单上的Wacom签名,asp.net,image,dom,electronic-signature,wacom,Asp.net,Image,Dom,Electronic Signature,Wacom,我正在编写一个ASP.NET网络表单应用程序,它应该使用Wacom平板电脑(STU-430)签名来注册应用程序本身生成的文档 ASP.NET应用程序在web服务器上运行,远程客户端(由于使用Wacom对象,目前仅限Internet Explorer)拥有/处理用于签名的平板电脑 webform应该只嵌入用于收集/捕获签名的代码。签名处理应由web服务器远程处理 Wacom HTML示例使用javascript和COM允许客户端HTML页面捕获签名,并将签名“存储”在表单中的元素中。 长话短说,这
<div id="signatureDiv">
Signature image:<br/>
<img id="signatureImage"/>
</div>
签名图像:
COM对象“修改”客户端站点DOM结构,并在img“占位符”内“插入”签名图像的二进制数据
问题是。。。如何在客户端DOM结构中检索元素的数据并将其发布到服务器,以便服务器能够“处理”签名并正确处理/存储它
是否可以将img数据的二进制内容“存储”在隐藏的表单字段中,并将其用作发布数据的网关
致以最良好的祝愿,
米歇尔我找到了解决办法。希望这能帮助其他人:
1)在开始使用WACOM平板电脑之前,请考虑签名捕获过程可能需要一段时间(在我的经验中,它甚至会在40秒内将签名数字化);p> 2) WACOM提供的代码很有效(至少有c#示例和HTML一个可以),它花费了太多的时间
3) 如果你打算开发一个Web表单解决方案,HTML代码示例就是你所需要的,再加上一些JS和一些C#或VB代码 4) 在Windows 8.1 64位系统下(我仍然需要检查Win 7),当您第二次放置签名时,WACOM平板电脑很有可能在您绘制签名时不会“显示”签名。。。如果在盲签名后按OK,则“签名”仍将发送到客户端。恢复系统的唯一方法是拔下插头并将其插回USB端口 在网络表单中,您必须这样安排: HTML:<div id="signatureDiv">
Signature image:<br/>
<img id="signatureImage" src="data:image/jpeg;base64,/9j/....">
</div>
请考虑WACOM平板电脑,它没有在图像文件中嵌入元数据,那么在代码中这样做应该是个好主意。
致以最诚挚的问候,迈克谢谢你的回复,迈克(我会一直告诉迈克,给一个叫米歇尔的家伙打电话对我来说很奇怪:)。请注意,您可以在一段时间后接受自己的答案。请注意,我已经重新标记了您的问题;这个标签是为这个网站上的方法签名保留的。哈罗·马尔滕,米歇尔是意大利的一个男性名字。。米歇尔是个女性名字(但实际上是个法语名字),不管怎样,迈克很好。在意大利也有人叫我迈克!:-)对于任何愿意对此进行进一步调查的人,长延迟取决于此调用:
m_tablet.startCapture(0xc0ffee)方法(demobuttons.js)中的SignatureForm.connect()
中的code>。。。不幸的是,这是一个来自ActiveX对象API的方法。我发现在远程服务器而不是本地计算机上运行相同的代码会导致更短的延迟(大约10秒或更短)。
<link rel="stylesheet" type="text/css" href="Signature.css" />
<script type="text/javascript" src="BigInt.js"></script>
<script type="text/javascript" src="sjcl.js"></script>
<script type="text/javascript" src="Signature_encryption.js"></script>
<script type="text/javascript" src="Signature.js"></script>
<script type="text/javascript">
var _signatureForm = null;
function initDemo() {
if (_signatureForm == null)
{
var _signatureImage = document.getElementById("signatureImage");
_signatureForm = new SignatureForm(_signatureImage);
}
_signatureForm.connect();
return false;
}
function signForm() {
var _signatureImage = document.getElementById("signatureImage");
var _hdnSignature = $("input[id$='_hdnSignature']");
_hdnSignature.value = _signatureImage.src;
return true;
}
</script>
<form id="_frmMain" runat="server">
<div>
<div id="signatureDiv">
Signature image:<br />
<img id="signatureImage" />
</div>
<div>
Actions:<br />
<asp:Button ID="signButton" runat="server" Text="Capture" OnClientClick="javascript: return initDemo();" />
<asp:Button ID="_btnSign" runat="server" Text="Sign" OnClientClick="javascript: return signForm();" OnClick="_btnSign_Click" />
<asp:HiddenField ID="_hdnSignature" runat="server" />
</div>
</div>
<object id="wgssSTU" type="application/x-wgssSTU" ></object>
</form>
protected void _btnSign_Click(object sender, EventArgs e)
{
string _sImage = _hdnSignature.Value.Replace("data:image/jpeg;base64,", "");
byte[] _rgbBytes = Convert.FromBase64String(_sImage);
string _sImageFile = Guid.NewGuid().ToString().Replace("-", string.Empty);
_sImageFile += ".jpg";
using (FileStream imageFile = new FileStream(Server.MapPath("~/" + _sImageFile), FileMode.Create))
{
imageFile.Write(_rgbBytes, 0, _rgbBytes.Length);
imageFile.Flush();
}
}