最近我的公司购买了一个 Wacom STU-530 签名板,我必须实现一个从中获取客户签名并创建带有签名的 pdf 的程序。我使用 FastReport 实现 PDF,但我需要从 wacom 数位板获取签名。使用 sdk 我实现了以下代码:
procedure TfrmMain.btnFirmaClick(Sender: TObject);
var
objFirma: SigObj;
ctlFirma: TSigCtl;
picFirma: TPicture;
res: CaptureResult;
begin
picFirma := TPicture.Create;
ctlFirma := TSigCtl.Create(Self);
res := ctlFirma.Capture('Firmare per accettazione',
'Formazione del personale in affiancamento');
case res of
CaptureOK: begin
objFirma := SigObj(ctlFirma.Signature);
SetOlePicture(picFirma, objFirma.Picture(300, 300, 'image/bmp', 0.5, $000000,
$ffffff, -1.0, -1.0, RenderOutputPicture or RenderColor32BPP or
RenderEncodeData));
picFirma.SaveToFile('firma.bmp');
end;
end;
ctlFirma.Free;
picFirma.Free;
end;
SigObj 有一个返回 IPictureDisp 的方法,我需要将其转换为 TImage,所以我使用了 SetOlePicture,但是当我保存图像时它是不可读的。如果我尝试保存图片
picFirma.bitmap.SaveToFile('firma.bmp')
生成的位图是无效的。我的代码有什么问题?