1

こんにちは、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

注釈を見つけましたが、署名フィールドかどうかを確認する方法がわかりません。ありがとう

4

3 に答える 3

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;
    }
  }
}
于 2012-06-08T16:01:04.670 に答える
1

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
于 2013-06-21T14:56:35.463 に答える
1

フォームを 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)
于 2013-06-21T14:47:32.550 に答える