常见问题
请注意:下文多次提到的 API 参考手册名为 Signature-Components-API.pdf,位于 Windows 版 Signature SDK 下载文件的 "Documentation "文件夹中,可在此处的 "For signature "下找到。
如何更改字体宽度和颜色?
如果要设置颜色,首先请确保您使用的是支持颜色的签名设备。
例如,STU-500 和 STU-430 是单色签名板,不支持彩色。
有四个地方可以定义颜色和墨水宽度:
- 在签名板上显示的图像(文本和按钮等)中
- 在用笔签名时在板子上产生的墨迹
- 在捕获后呈现签名的应用程序中的表单(例如 HTML 画布或 Windows 图像)上
- 在生成并保存到磁盘的图像中
签名设备上显示的图像
1) DTH-1152、DTU-1141B等商业解决方案显示器
这些笔输入设备不支持向导控件,因此字体颜色和宽度的设置仅限于笔书写时签名捕获窗口上的墨迹。
这是通过 sigCtl 属性或注册表条目 CaptureInkWidth 和 CaptureInkColor 完成的。有关详细信息,请参阅下面“正在进行签名时在板子上上墨”部分。
2) STU签名板
- 使用向导控件 (WizCtl):
a) 图像上传:在这种情况下,pad 将简单地渲染从操作系统接收到的图像。如果需要更改字体颜色或大小,则必须通过编辑磁盘上的原始图像来完成。
b) 添加按钮、文本、单选框或复选框等对象:在将对象添加到 WizCtl 之前,通过根据代码中的要求设置字体大小和颜色来控制颜色和字体大小。
-
使用签名控件 (SigCtl):
在 SigCtl(动态捕获)的情况下,只能通过参考手册第 7 节中所述的注册表条目来自定义在键盘上显示的签名捕获。
另请参阅下面下一节中的屏幕截图。
这可以通过 API 参考手册中指定的两个属性 - CaptureInkWidth和CaptureInkColor来控制。以下是 HTML 的示例:
var dc = new ActiveXObject("Florentis.DynamicCapture");
dc.SetProperty("CaptureInkWidth", "5");
dc.SetProperty("CaptureInkColor", "0,0,1");
var rc = dc.Capture(sigCtl, "who", "why");
这些属性也可以在注册表中设置 - 这样做的缺点是它们将成为当前用户的永久值,直到它们被更改或禁用。
但是,可以通过在应用程序中设置相应的属性来覆盖它们,如上所示。如果在 64 位操作系统上使用 32 位 SDK 安装,
注册表设置必须放在HKEY_LOCAL_MACHINE\Software\Florentis\sd或HKEY_LOCAL_MACHINE\Software\WOW6432Node\Florentis\sd中。
以下是注册表设置在 regedit 中的外观示例:
捕获后在应用程序中呈现的签名
签名的墨水宽度和颜色可以通过API 参考手册中定义的 sigCtl 对象的 InkColor 和 InkWidth 属性从应用程序中设置。可以使用相同 sigCtl 的 ForeColor 和 BackColor 属性控制用于捕获签名图像的其他特征的颜色和字体,例如 who、why 和 why 值以及签名行的颜色。
请注意,仅当 BackStyle 设置为0时,SigCtl 的 BackColor 属性才有效。
这是从 HTML 表单中提取的 JavaScript 示例,显示了上面列出的所有类型的字体宽度和颜色:
var sigCtl = document.getElementById("sigCtl1");
sigCtl.Licence = "AgAkAEy2cKydAQVXYWNvbQ1TaWduYXR1cmUgU0RLAgKBAgJkAACIAwEDZQA";
// Set the ink colour and width displayed on the signature control on the HTML form.
sigCtl.InkColor = 0x0000AA;
sigCtl.InkWidth = 1;
sigCtl.BackStyle = 0; // Force the background style to 0 for opaque so that background colour can also be set on the control.
// The next 3 properties indicate that the who, when and why values should be displayed on the signature control along with the signature
sigCtl.ShowWhen = ShowText.TxtShowLeft;
sigCtl.ShowWho = ShowText.TxtShowRight;
sigCtl.ShowWhy = ShowText.TxtShowCenter;
// BackColor and ForeColor set the background colour of the signature control plus the colour of the signature line
// and the who, when and why text (but not the signature itself)
sigCtl.BackColor = 0x00FF00;
sigCtl.ForeColor = 0x0000FF;
var dc = new ActiveXObject("Florentis.DynamicCapture");
// CaptureInkWidth sets the width of the inking on the capture window which appears on the PC monitor but not the width of ink on the signature capture device itself
dc.SetProperty("CaptureInkWidth", "2");
dc.SetProperty("CaptureInkColor", "0,1,0"); // Sets the colour of the ink on the PC monitor as well as on the capture device
var rc = dc.Capture(sigCtl, "who", "why");
保存到磁盘的图像
签名图像使用 API 方法 RenderBitmap() 保存到磁盘。这具有三个与签名墨水相关的参数 - inkWidth、inkColor 和 backgroundColor - 如 API 参考手册中所指定。
inkWidth - 以毫米为单位的值。
inkColor - OLE_COLOR 格式的值,例如0x0000FF是红色,0xFFFFFF是白色
backgroundColor - 如上所述
这是我们的 JavaScript 示例之一的示例:
rc = sigCtl.Signature.RenderBitmap(filename, 300, 150, "image/png", 0.5, 0xff0000, 0xffffff, 0.0, 0.0, flags );