Я нашел решение. Надеюсь, это может помочь кому-то еще:
1) прежде чем приступить к разработке чего-либо, использующего планшет WACOM, учтите, что процесс захвата подписи может занять очень много времени (по моему опыту, для оцифровки подписи в форме требуется даже 40 секунд);
2) код, предоставленный WACOM, работает (по крайней мере, примеры C # и HTML), просто это заняло так много времени;
3) если вы собираетесь разработать решение для веб-формы, все, что вам нужно, это образец HTML-кода, а также немного JS и немного кода на C# или VB;
4) в 64-битных системах Windows 8.1 (мне все еще нужно проверить на Win 7) во второй раз, когда вы ставите подпись, есть большая вероятность, что планшет WACOM не «покажет» подпись, пока вы ее рисуете ... если вы нажмите OK после слепой подписи, «подпись» все равно будет отправлена клиенту. Единственный способ восстановить систему — отключить и снова подключить ее к USB-порту;
В веб-форме вы должны организовать что-то вроде этого:
HTML:
<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>
Все файлы .js, упомянутые в этом примере, предоставлены в образцах HTML Wacom SDK.
Грязную работу выполняет функция signForm(), которая берет изображение и вставляет его в скрытое поле, позволяя процедуре кода программной части обрабатывать подпись.
Код позади раздела (C# в моем случае) довольно прост. Просто обработайте событие кнопки и декодируйте изображение:
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();
}
}
Учтите, что планшет WACOM не встраивает МЕТАДАННЫЕ в файл изображения, поэтому рекомендуется сделать это в коде.
С уважением, Майк
person
weirdgyn
schedule
14.05.2015