【问题标题】:How to Identify Signed Signature Field In PDF using VB.Net如何使用 VB.Net 识别 PDF 中的签名签名字段
【发布时间】:2012-06-07 16:53:04
【问题描述】:

您好,我正在寻找一种使用 VB.Net 或 JavaScript 和 Acrobat 在 PDF 上定位签名字段的方法,然后我想检查它是否已签名。这是我目前所拥有的:

        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

我正在查找注释,但我不知道如何检查它是否是签名字段。谢谢

【问题讨论】:

    标签: javascript vb.net acrobat


    【解决方案1】:

    通过 JavaScript 使用,您可以使用 this.getNthFieldName(i) 来获取 acrobat 文档上的所有字段名。然后,您必须使用“field.type.localeCompare("signature") == 0”找到正确的字段,以确保这是您要查找的字段。之后,只需对其进行处理以确定是否有签名。

    下面是我用来确定是否存在数字签名的 sn-p 代码。

    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;
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      将表单调暗为 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)
      

      【讨论】:

      • 你能合并你的答案吗?
      【解决方案3】:

      如何使用 VB.Net 识别 PDF 中的签名签名字段

          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
      

      【讨论】:

      • 你能合并你的答案吗?
      猜你喜欢
      • 2022-07-25
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多