0

最近我的公司购买了一个 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')  

生成的位图是无效的。我的代码有什么问题?

4

2 回答 2

0

在当前版本的 Wacom 签名 SDK 4.5.6 中,您的代码可以正常工作。

于 2021-09-05T16:18:34.190 回答
0

根据 Signature SDK 提供的 Signature Components API 来获取位图中的签名,您应该使用 RenderBitmap 方法。

RenderBitmap( outputFilename, dimensionX, dimensionY, mimeType, inkWidth, nkColor, backgroundColor, paddingX, paddingY, flags)
渲染签名图像,创建图像文件或返回二进制数据。可选地使用隐写技术对生成的图像中的 SigObj 数据进行编码。

    objFirma:= SigObj(ctlFirma.Signature);
    objFirma.RenderBitmap('firma.bmp', 300, 300, 'image/bmp', 0.5, $000000,
    $ffffff, -1.0, -1.0, RenderOutputFilename or RenderColor32BPP or RenderEncodeData);
于 2016-09-08T07:24:32.953 回答