Создание экземпляра Adobe PDF с цифровой подписью в VBA из MS Access 2016 - PullRequest
0 голосов
/ 06 марта 2019

У меня есть база данных MS Access, которая собирает информацию о сотруднике и должна создать подписанный PDF-документ на основе информации этого сотрудника в базе данных.

У меня уже есть часть, которая знает, как записывать в поля вPDF, а также сохранение шаблона в качестве нового имени экземпляра, но я бы хотел использовать зарегистрированное в Windows имя пользователя (которое я также знаю, как получить) человека, заполняющего базу данных, и использовать его в качестве цифровой подписи дляPDF.

Это рабочий код для записи в PDF-документ без цифровой подписи: см. AFields (... подпись) .value = rs! UserName

 Sub GeneratePDFInstance(strTemplatePath As String)

        Dim AA As Acrobat.AcroApp 'Object
        Dim ADoc As Acrobat.AcroAVDoc 'Object
        Dim pdDoc As Acrobat.AcroPDDoc


        Dim AForm As Object
        Dim AFields As Object
        Dim fcount As Long
        Dim sFieldName As String

        Dim strInstancePDF As String
        Dim rs As DAO.Recordset


     On Error GoTo Catch_error

        MsgBox strTemplate


        Set AA = CreateObject("AcroExch.App")

        Debug.Print "SELECT * FROM qEmployees WHERE ID=" & Form_frmEmployees!ID

        Set rs = CurrentDb.OpenRecordset("SELECT * FROM qEmployees WHERE ID=" & Form_frmEmployees!ID)


        strInstancePDF = "C:\Users\Public\Documents\ISTools\" & rs![NAME] & ".pdf"


        Set ADoc = CreateObject("AcroExch.AVDoc")

        If ADoc.Open(strTemplatePath, "") Then

              Set pdDoc = ADoc.GetPDDoc  'CreateObject("AcroExch.PDDoc")
              Set AForm = CreateObject("AFormAut.App")
              Set AFields = AForm.Fields


            AFields("topmostSubform[0].Page1[0].Header[0]").Value = rs![Header]
            AFields("topmostSubform[0].Page1[0].SMEmail[0]").Value = rs![SMEmail]
            AFields("topmostSubform[0].Page1[0].SMPhone[0]").Value = rs![SMPhone]
'  ?         AFields("topmostSubform[0].Page1[0].Signature[0]").Value = rs!UserName  

            pdDoc.Save PDSaveCopy, strInstancePDF
            MsgBox "Successfully saved"

            pdDoc.Close
            ADoc.Close True
            AA.Exit


        Else
            MsgBox "Could not write to the PDF"
        End If


    If ADoc.Open(strInstancePDF, "") Then
        AA.Show
    Else
        MsgBox "Couldn't open the generated PDF"
    End If


    GoTo GeneratePDFInstance_Exit

    Catch_error:

    Select Case Err

    Case Else
        MsgBox Err & " - " & Err.Description


    End Select



    GeneratePDFInstance_Exit:


    Set pdDoc = Nothing
    Set AA = Nothing
    Set AForm = Nothing
    Set ADoc = Nothing
    Set AFields = Nothing
    Set rs = Nothing

    End Sub
...