IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Insertion automatique d'une signature numérique dans un fichier PDF


Sujet :

Contribuez

  1. #1
    Membre à l'essai
    Homme Profil pro
    Professeur
    Inscrit en
    Août 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Professeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Insertion automatique d'une signature numérique dans un fichier PDF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    sub SignPDF()
    1
    On Error Resume Next
     
    Dim Acro_App As Acrobat.AcroApp
    Dim Acro_PDdoc As Acrobat.AcroPDDoc
    Dim oJS As Object
    Dim SGH_Ppklite As Object
     
    Dim Signature_Coord() As Variant
    Dim SignField As Object
     
    Dim ppklite_login As Boolean
     
    Dim Getsignfield As Object
    Dim OinforArray() As String
     
    Dim Signdone As Boolean
     
    Const strFichier = "Spécifier l'emplacement du fichier PDF à signer"
    Const strFichierout = "Spécifier l'emplacement du fichier pdf signé"
    Const strSignFName = "spécifier l'emplacement du certificat au format pfx"
    Const pass = "mot de passe du certificat"
     
     
    Signature_Coord = Array(0, 0, 0, 0) 'Emplacement de la signature, au cas d'espèce, la signature est invisible car Array(0, 0, 0, 0)
     
    Set Acro_App = New Acrobat.AcroApp
    Set Acro_PDdoc = New Acrobat.AcroPDDoc
     
    If Acro_PDdoc.Open(strFichier) Then
        Set oJS = Acro_PDdoc.GetJSObject
        Set SGH_Ppklite = oJS.security.getHandler("Adobe.PPKLite", True)
        Set SignField = oJS.AddField("MysignField", "signature", 0, Signature_Coord)
        ppklite_login = SGH_Ppklite.login(pass, strSignFName)
        If ppklite_login = False Then GoTo 2 'si le mot de passe est invalide alors la valeur renvoyée est fausse
     
     
        'SGH_Ppklite.setPasswordTimeout pass, 300 'délai d'attente nécessaire pour l'intégration du mot de passe mais n'a aucun effet sur mon PC
     
        Set Getsignfield = oJS.GetField("MysignField")
        OinforArray = VBA.Split("", ",")
        Signdone = Getsignfield.signatureSign(SGH_Ppklite, OinforArray, strFichierout) 'Valeur de type type booléen, doit renvoyer impérativement la valeur vrai pour insérer automatique la signature numérique
        If Signdone = False Then GoTo 1 'reboucle car la valeur renvoyée est fausse
     
        a.logout
     
    End If
     
    Set z = Nothing
    Set a = Nothing
    Set si = Nothing
    Set f = Nothing
    Exit Sub
    2
    MsgBox "Le mot de passe que vous avez saisi n'est pas valide.", vbCritical, "Mot de passe valide requis" '
            Exit Sub
     
    End Sub
    Remarque
    Ce code nécessite impérativement pour son bon fonctionnement :
    • Adobe version professionnelle
    • il est nécessaire de cocher dans les références VBA project, la référence 'Adobe Acrobat XX.Type Library
    • il est également nécessaire de disposer du certificat au format pfx



    'Pouvez vous tester ce code et me faire part de votre retour d'expérience

    'Merci

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Erreur 1001 - signature adobe PDF via VBA
    Bonjour je fais suite à cette discussion car je viens de faire le tour sur internet et je suis buté;

    lorsque j'implémente la solution ou n'importe quelle autre d'ailleurs, j'ai le même problème une erreur : erreur exécution '1001' Generalerror: the opération failed
    sur la ligne Signdone = Getsignfield.signatureSign(SGH_Ppklite, OinforArray, strFichierout)

    voici le code: je l'ai en plusieurs version

    Sub CreateDigitalSignature()


    Dim Acro_App As Acrobat.AcroApp
    Dim Acro_PDdoc As Acrobat.AcroPDDoc
    Dim Ojs As Object
    Dim SGH_Ppklite As Object
    Dim Signature_Coord() As Variant
    Dim SignField As Object
    Dim ppklite_login
    Dim Getsignfield As Object
    Dim OinforArray() As String
    Dim Signdone As Boolean

    Const Bottom_Left_x = 100
    Const Bottom_Left_y = 100
    Const Wdth = 100
    Const Hght = 60

    Signature_Coord = Array(Bottom_Left_x, Bottom_Left_y + Hght, Bottom_Left_x + Wdth, Bottom_Left_y)

    Set Acro_App = New Acrobat.AcroApp
    Set Acro_PDdoc = New Acrobat.AcroPDDoc

    If Acro_PDdoc.Open("C:\Users\ngahatcr\Downloads\macro\Nouvelle lettre att adm test signature.pdf") Then

    Set Ojs = Acro_PDdoc.GetJSObject

    Set SGH_Ppklite = Ojs.security.getHandler("Adobe.PPKLite")

    Set SignField = Ojs.addfield("MysignField", "signature", 0, Signature_Coord)

    'Lets Login
    ppklite_login = SGH_Ppklite.login("signmarietest", "C:\Users\ngahatcr\Downloads\macro\clé signature adobe\P.OMarie-andre.pfx")

    'Mention time out

    SGH_Ppklite.setpasswordtimeout "signmarietest", 60 ' if 200 erreur execution '1001' Generalerror: the operation failed

    ' Get signature field reference

    Set Getsignfield = Ojs.getfield("MysignField")

    OinforArray = VBA.Split("", ",")

    'Sign the signature Field

    Signdone = Getsignfield.signaturesign(SGH_Ppklite, OinforArray, "C:\Users\ngahatcr\Downloads\macro\signe\SignTest.pdf")

    'Last Step Logout

    SGH_Ppklite.logout

    End If


    End Sub

    Est-ce que je pourrais avoir de l'aide svp?

Discussions similaires

  1. [Python 3.X] Modification automatique d'une chaîne hexadécimale dans un fichier
    Par jondra dans le forum Général Python
    Réponses: 16
    Dernier message: 25/07/2021, 17h33
  2. Réponses: 0
    Dernier message: 08/03/2018, 06h07
  3. [Python 3.X] Hash MD5 pour créer une signature numérique pour un fichier
    Par chacalitox dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 30/06/2014, 16h38
  4. Comment lire une image contenue dans un fichier PDF
    Par colorid dans le forum Langage
    Réponses: 1
    Dernier message: 15/05/2009, 19h59
  5. Manipuler une zone numérique dans un fichier plat
    Par desbrandesq dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 31/05/2007, 21h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo