PC SOFT
DEPOT EN LIGNE
POUR WINDEVWEBDEV ET WINDEV MOBILE

Assinar PDF com certificado digital armazenado em um banco de dados
Publié par Boller
dans la catégorie Outils
Nouveautés



Description
Assinar PDF com certificado digital armazenado em um banco de dados

PROCEDURE AssinarPDF()

MyExtractedCertificate is Certificate

HReset(CERTIFICADO)

IF HReadSeek(CERTIFICADO,AGRONOMO_ID,EDT_AGRONOMO_ID,hIdentical) = True THEN

EDT_CertificadoEncodado = CERTIFICADO.CERTIFICADO_ENCODE

bufSignature is Buffer = Decode(CERTIFICADO.CERTIFICADO_ENCODE,encodeBASE64)

MyExtractedCertificate = CertificateExtract(bufSignature,certificateFromBuffer)

IF MyExtractedCertificate = Null THEN
RESULT False
END

IF MyExtractedCertificate..EndValidityDate<DateSys() THEN
Info("Certificado Vencido")
RESULT False
END

CERTIFICADO is string = MyExtractedCertificate.Name +CR
CERTIFICADO += MyExtractedCertificate.StartValidityDate +CR
CERTIFICADO += MyExtractedCertificate.EndValidityDate +CR
CERTIFICADO += MyExtractedCertificate.ValidForSignature +CR
CERTIFICADO += MyExtractedCertificate.FullIssuer +CR
CERTIFICADO += MyExtractedCertificate.Issuer +CR
CERTIFICADO += MyExtractedCertificate.KeyUsage +CR
CERTIFICADO += MyExtractedCertificate.Reliability +CR
CERTIFICADO += MyExtractedCertificate.SerialNumber +CR
CERTIFICADO += MyExtractedCertificate.Subject

EDT_Certificado = CERTIFICADO

bt_assinar..State = Active

MyAssinatura is pdfSignature
MySignature is pdfSignature
MySignature..Certificate = MyExtractedCertificate
MySignature..Caption = " ASSINADO DIGITALMENTE POR:" + MyExtractedCertificate..Name + " em " + DateToString(DateSys())
MySignature..Height = 264 //xAlturaTexto
MySignature..Width = 167 //xLarguraTexto
MySignature..X = 1 //xPosicaoTextoX
MySignature..Y = 15 //xPosicaoTextoY
MySignature..VerticalAlignment = iBottom
MySignature..HorizontalAlignment= iRight
MyAssinatura = MySignature


sArquivoPDF is string = edt_arquivo_selecionado
pdfdestino is string = sArquivoPDF
pdfdestino = Replace(pdfdestino,"","")
pdfdestino += "-assinado"+".pdf"

IF fFileExist(edt_arquivo_selecionado) = False THEN

Info("Selecione o pdf")
RESULT False

ELSE

IF fCopyFile(sArquivoPDF,pdfdestino)=False THEN
Error(ErrorInfo()+HErrorInfo())
ELSE

//ASSINA O PDF
mRes is boolean = PDFSign(pdfdestino, MyAssinatura)

IF mRes = False OR fFileExist(pdfdestino) = False
Info("PDF Não Assinado ")
RESULT False
ELSE IF fFileExist(pdfdestino) = True AND mRes = True
DocumentReader1 = pdfdestino
Info("Processo Concluído, PDF Assinado")
RESULT True
END

END

END

ELSE
Info("Certificado nao localizado")
END





//----------------------------------------------------------------------------

// Summary: <specify the procedure action>
// Syntax:
// Evento_Encodar_Certificado ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Encodar_Certificado()

SEL is string = fSelect("","","Selecione um Certificado","Todos os Arquivos *.*"+TAB+"*.*"+CR+"PFX"+TAB+"*.PFX","*.PFX")

EDT_PATH = SEL

MyCertificate is Certificate

MyCertificate = CertificateSelect()

IF MyCertificate.Name = "" THEN
RESULT False
END

IF MyCertificate.ValidForSignature = False THEN
Info("The selected certificate cannot be used to generate a signature.")
RESULT False
END

IF MyCertificate..EndValidityDate<DateSys() THEN
Info("Certificado Vencido")
RESULT False
END

IF MyCertificate..Name = "" THEN
Info("Certificado Não Selecionado.")
RESULT False
END

// Retrieve the buffer containing the signature
bufSignature is Buffer = CertificateSignString("Character string to sign", MyCertificate)

EDT_CERTIFICADO_ENCODE = Encode(bufSignature,encodeBASE64) //MEMO


//------------------------------------------------------------------------------------------------------------------------------------------


IF Open(Win_TableForm_Agronomo) = True THEN

HReset(AGRONOMO)
IF HReadSeek(AGRONOMO,AGRONOMO_ID,gn_ID,hIdentical) = True THEN

EDT_AGRONOMO_ID = gn_ID
EDT_NOMEAGRONOMO = AGRONOMO.NOME

END

END
Illustrations, copies d'écran
none
none
Avis des utilisateurs
(Pour noter la ressource, cliquez sur Ecrire un avis)
Aucun avis ou commentaire ? Soyez le premier !