0

最近、私の会社は Wacom STU-530 署名パッドを購入し、そこからクライアントの署名を取得して署名付きの pdf を作成するプログラムを実現する必要がありました。PDFの実現にはFastReportを使用していますが、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 を使用しましたが、Image を保存すると読み取れません。で写真を保存しようとすると

picFirma.bitmap.SaveToFile('firma.bmp')  

結果のビットマップは無効です。私のコードで何が間違っていますか?

4

2 に答える 2