Menu
picture of tbs certificates
picture of tbs certificates
Les produits
Notre gamme
Partenaires
Support
Numéro vert
Focus


Utiliser PDF Signer Server de manière automatisée

Le logiciel PDF Signer Server permet d'automatiser les taches de signatures (sans aucune intervention de l'utilisateur). Cela est possible via la ligne de commande, avec un script Powershell ou en .NET.
Dans la page ci-dessous, nous traiterons un exemple en ligne de commande et en script Powershell

En ligne de commmande

Pour automatiser en ligne de commande la signature de documents, voici les paramètres à renseigné :

PDF Signer Server.exe <fichier | dossier source> <fichier | dossier destination> [<fichier de configuration XML>]
  • PDF Signer Server.exe : indique le chemin où se trouve l'exécutable de PDF Signer Server. Par défaut, le chemin est : C:\Program Files\Secure Soft\PDF Signer Server\PDF Signer Server.exe

  • <fichier | dossier source> : indiquer ici le fichier à signer ou le dossier contenant les documents à signé.

  • <fichier | dossier destination> : renseignez le chemin de destination du fichier signé ou du dossier qui contiendra les documents signés.

  • [<fichier de configuration XML>] : ceci est un paramètre optionnel où vous pouvez indiquer un fichier de configuration XML.

Attention : il faut cependant configurer le logiciel une première fois via l'interface graphique afin de choisir un certificat. Sinon vous obtiendrez l'erreur suivante :

An error has occured : Digital signature certificate is not set.

Voici un exemple de ligne de commande à taper pour automatiser la signature de tous les documents d'un dossier

"c:\Program Files\Secure Soft\PDF Signer Server\PDF Signer Server.exe" c:\dossier_non_signé c:\dossier_signé

Vous pouvez enregistrer cette commande dans un fichier .bat qu'il suffira de lancer pour automatiser la signature.

Utilisation d'un fichier de configuration personnalisé XML

il vous sera peut-etre nécessaire d'avoir une configuration différente en fonction des documents à signer (certificat différent, emplacement de signature et apparence, ...). Pour cela, lancer le logiciel PDF Signer Server et préparer votre configuration. Une fois terminé, cliquez sur File et Save configuration As... pour sauvegarder votre configuration au format XML.

Vous pouvez ensuite utiliser ce fichier dans la ligne de commande. Voici un exemple :

c:\Program Files\Secure Soft\PDF Signer Server\PDF Signer Server.exe" c:\dossier_non_signé c:\dossier_signé c:\config_perso.xml

Avec un script Powershell

Dans un premier temps, télécharger la librairie a cette adresse : SignatureLibrary.zip

Dans le dossier "PowerShell Scripts", vous trouverez plusieurs exemples de script permettant de signer les documents (PDF ou Office). Voici en exemple un script Powershell qui utilise un certificat présent dans un token cryptographique, avec enregistrement du code PIN.

    #Ce script est configuré pour utiliser un certificat provenant du magasin de Windows (y compris celui d'un token).
    if ($args.Length -eq 0)
    {
        #Message si aucun argument n'est renseigné
        echo "Usage: signpdf.ps1 <fichier | dossier source> <fichier | dossier destination>"
    }
    else
    {
        #Chargement des DLL
        $DllPath = 'C:\Users\Administrateur\Desktop\test_powershell\SignLib.dll'
        [System.Reflection.Assembly]::LoadFrom($DllPath)
        $DllPathITextSharp = 'C:\Users\Administrateur\Desktop\test_powershell\iTextSharp-4.1.6.dll'
        [System.Reflection.Assembly]::LoadFrom($DllPathITextSharp)


        #Lecture du fichier PDF source
        $sign = new-object -typeName SignLib.Pdf.PdfSignature("serial number")
        $sign.LoadPdfDocument([System.IO.File]::ReadAllBytes($args[0]))
    

        #Pour automatiser la signature du document, il faut indiquer un critere de selection "unique" au script (email, thumprint, numero de serie,... )
        $critere = "EmailE" #type de critere de recherche (EmailE = email, CommonNameCN = CN, SerialNumber = numero de serie,...)
        $valeurCritere = "john.doe@tbs-certificats.com"

        #Pour bypasser la demande du code PIN
        [SignLib.Certificates.DigitalCertificate]::SmartCardPin = "123456";
    
        #Récupération du certificat concerné présent dans la MMC de Windows
        $sign.DigitalSignatureCertificate = [SignLib.Certificates.DigitalCertificate]::LoadCertificate("validOnly", $critere, $valeurCritere)

        #Pour le TimeStamp
        $sign.TimeStamping.ServerUrl = "http://ca.signfiles.com/TSAServer.aspx"

        #Si besoin d'authentification
        #$sign.TimeStamping.UserName = "username"
        #$sign.TimeStamping.Password = "password"

        #inclusion du LTV
        $sign.PadesLtvLevel = "IncludeCrlAndOcsp" #CRL et OCSP
        $sign.MaxCrlSize = 2048 * 1024 #taille maximum de la CRL
        $sign.SignatureStandard = "Cades"

    
        #Personnalisation de la signature
        $sign.SigningReason = "J'approuve ce document "
        $sign.SigningLocation = "TBS Certificats - 22 rue de Bretagne 14000 CAEN"
        $sign.SignaturePage = 1
        $sign.SignaturePosition = [SignLib.Pdf.SignaturePosition]::TopRight

        echo "Signature en cours..."
        [System.IO.File]::WriteAllBytes($args[1], $sign.ApplyDigitalSignature())
    }

Voici une explication sur le fonctionnement du script :

  • On renseigne les DLL nécessaire au bon fonctionnement du script
  • Le script lit le fichier fourni en argument "source"
  • On indique quel certificat prendre en compte pour la signature avec un critère spécifique de recherche
  • On renseigne le code PIN du token (si nécessaire)
  • Possibilité de renseigner le serveur de TimeStamp ainsi que le LTV (Long Term Validation)
  • Indication de différentes valeurs pour la signature (message personnalisé, emplacement, sur quelle page,...)
  • Le script signe le document et l'enregistre à l'emplacement fourni en argument "destination"

Liens utiles