2016-05-26 6 views
0

Недавно моя компания купила подписи подписи Wacom STU-530, и я должен реализовать программу, которая получит от него подпись клиента и создаст pdf-файл с подписью. Я использую FastReport для реализации PDF, но мне нужно приобрести подпись с планшета wacom. С SDK я понял, этот код:Delphi 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') 

полученное растровое изображение недействительно. Что не так в моем коде?

+2

Я думаю, вы должны спросить поставщика об этом. Они должны предоставить вам пример того, как выполнить то, что вы хотите. – RBA

+0

Проблема заключается не в SDK Wacom, а в возврате IPictureDisp. SetOlePicture должен подключать объект IPictureDisp к объекту TPicture, но когда я сохраняю изображение в файле, он нечитабелен или пуст. – Eros

+0

@ Eros RBK может быть прав; В самом деле, не все библиотеки выполняют правильную реализацию iPictureDisp, даже сами Microsoft не реализуют ее правильно - см. Http://stackoverflow.com/a/480350/976391 Спросите продавца, попробуйте получить образец кода от них –

ответ

0

В соответствии с API компонентов подписи, поставляемым с подписью SDK для получения подписи в растровом изображении, вы должны использовать метод RenderBitmap.

RenderBitmap (имя_выходного_файла, dimensionX, dimensionY, тип_mime, inkWidth, nkColor, BackgroundColor, paddingX, paddingY, флаги)
отрисовывает изображение подписи, создание файла образа или возврата двоичные данные. Необязательно кодирует данные 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); 
+1

Некоторый информативный текст был бы приятным, так как ответы только на код часто получают downvote д. –

+1

Благодарим вас за ваше предложение. Ответ отредактирован. –

 Смежные вопросы

  • Нет связанных вопросов^_^