2012-06-07 103 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