2012-06-07 67 views
1

您好我正在寻找一种方法来定位在PDF使用VB.Net或JavaScript和Acrobat签名领域,然后我想检查它是否签署。这是我到目前为止:如何识别签名签名字段在PDF使用VB.Net

 Dim page As Acrobat.CAcroPDPage 
     Dim annot As Acrobat.CAcroPDAnnot 
     page = acroPDDoc.AcquirePage(0) 
     For i = 0 To page.GetNumAnnots - 1 
      annot = page.GetAnnot(i) 
     Next 

我发现了注释,但我不知道如何检查它是否是签名字段。谢谢

回答

2

通过JavaScript使用,您可以使用this.getNthFieldName(i)获取acrobat文档上的所有字段名称。然后您必须使用“field.type.localeCompare(”signature“)== 0”来查找正确的字段,以确保这是您正在查找的字段。之后,通过它来确定是否有签名。

下面是我用来确定是否存在数字签名的一段代码。

for(var i = 0; i < this.numFields; i++) { 
    var a = this.getNthFieldName(i); 
    var field = this.getField(a); 
    if(field.type.localeCompare("signature") == 0) { 
    var s = field.signatureInfo(); 
    if(s.name == null) { 
     console.println("Digital Signature Not Present."); 
     return -1; 
    }else { 
     console.println("Digital Signature Present."); 
     return 0; 
    } 
    } 
} 
1

昏暗theForm作为Acrobat.CAcroPDDoc 昏暗JSO作为对象

theForm = CreateObject("AcroExch.PDDoc") 
    theForm.Open("C:\Temp\Maru\DeclaracionJurada.pdf") 
    jso = theForm.GetJSObject 

    'Verifica que la firma sea valida 

    Dim signatureOne = jso.getField("Signature2") 
    Dim oState = signatureOne.SignatureValidate() 

    Select Case oState 
     Case Is = -1 
      ListBox1.Items.Add("Estado : Sin Firma ") 
     Case Is = 0 
      ListBox1.Items.Add("Estado : Firma en blanco ") 
     Case Is = 1 
      ListBox1.Items.Add("Estado : No conoce el estado de la firma ") 
     Case Is = 2 
      ListBox1.Items.Add("Estado : Firma invalida ") 
     Case Is = 3 
      ListBox1.Items.Add("Estado : La firma es valida, pero la identidad del firmante no se pudo verificar ") 
     Case Is = 4 
      ListBox1.Items.Add("Estado : Firma e identidad son validas ") 

    End Select 

    'Extrae la info del firmante, nombre y fecha de la firma 
    Dim signatureInformation = signatureOne.signatureInfo 

    ListBox1.Items.Add("Firmante " & signatureInformation.name) 
    ListBox1.Items.Add("Fecha " & signatureInformation.Date) 

    'Extrae la info del certificado 
    Dim signatureCertificate = signatureInformation.certificates 
    ListBox1.Items.Add("Emitido a : " & signatureCertificate(0).subjectDN.serialNumber) 
    ListBox1.Items.Add("Numero de Serie : " & signatureCertificate(0).serialNumber) 
    ListBox1.Items.Add("Valido desde : " & signatureCertificate(0).validityStart) 
    ListBox1.Items.Add("Valido hasta : " & signatureCertificate(0).validityEnd) 
    ListBox1.Items.Add("Para : " & signatureCertificate(0).subjectDN.o) 
    ListBox1.Items.Add("Tipo : " & signatureCertificate(0).subjectDN.ou) 
    ListBox1.Items.Add("Emitido Por : " & signatureCertificate(0).issuerDN.cn) 
+0

你能合并的答案PDF标识签签名场? – orique

1

如何使用VB.Net

Dim gApp As Acrobat.CAcroApp 
    Dim gPDDoc As Acrobat.CAcroPDDoc 
    Dim jso As Object 
    Dim fname As String 

    gApp = CreateObject("AcroExch.App") 
    gPDDoc = CreateObject("AcroExch.PDDoc") 

    If gPDDoc.Open("C:\Temp\Solicitud de empleo.pdf") Then 
     jso = gPDDoc.GetJSObject 

     For i = 0 To jso.numFields - 1 
      fname = jso.getNthFieldName(i) 
      ListBox1.Items.Add("Campo : " & fname & " valor: " & jso.getField(fname).value) 

      MessageBox.Show(jso.getField(fname).type) 

     Next 

    End If 
+0

你能合并你的答案吗? – orique