Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Comment signer des fichiers PDF ?

0000002361     -      17/11/2016

Mercator 8.5 ou ultérieur permet de signer des fichiers PDF. Cette fonctionnalité peut être activée automatiquement lors de la génération d'un fichier PDF par Mercator, ou manuellement, pour apposer une signature a posteriori. Elle fait partie de l'option "PDF".

La signature est effectuée sur base d'un certificat qui doit être disponible (et qui n'est pas fourni par Mercator). Ce certificat est délivré par une société agissant en qualité d'autorité de certification. Les certificats peuvent être :

  • soit contenus dans le magasin de certificats du système (les certifiicats visibles dans les propriétés d'Internet Explorer)
  • soit encapsulés dans un fichier *.PFX. (Un fichier PFX peut, par exemple, être produit au départ d'un certificat de type "code signing").

Le système a été testé avec ces certificats :

  • eID : carte d'identité électronique belge
  • Isabel
  • Luxtrust
  • certificat de test de 90 jours pour la signature des PDF émis par GlobalSign
  • fichier PFX produit au départ d'un certificat "code signing" émis par Thawte.

 

Pour activer la signature d'un PDF lorsqu'il est généré par Mercator, il faut modifier les propriétés CodeSigning dans l'éditeur de rapports, au niveau du noeud Report.

 

SignatureBehavior doit être d'abord fixé à :

  • Optional : la signature du PDF est optionnelle
  • Mandatory : la signature du PDF est obligatoire. Si le PDF n'est pas correctement signé, il sera détruit.

Ensuite, l'option CertificateFromStore permet de déterminer si :

  • False : le certificat vient d'un fichier PFX, qui peut être sur disque ou dans la base de données SQL. On peut compléter :
    • CertificateFile : le chemin vers le certificat
    • CertificatePassword : le mot de passe associé
    • HideInterfaceIfFile peut être mis à true si les deux paramètres ci-dessus sont complétés et si on souhaite une signature sans affichage de l'interface
  • True : le certificat à utiliser est installé dans le magasin système. Dans ce cas, l'interface est toujours affichée pour permettre la sélection du certificat.

La propriété SignatureVisible permet de déterminer si la signature doit être visible dans le PDF dans la partie supérieure droite du document. (Même si cette propriété est à false, une signature sera apposée dans le fichier PDF)

Ce système fonctionne lorsque, lors de la prévisualisation, l'utilisateur enregistre le document au format "Adobe Acrobat". L'impression du document vers une imprimante PDF "externe" à Mercator (ex : CutePDF, ...) ne permet pas la signature du PDF lors de sa génération.

 

Pour signer un PDF a posteriori, il suffit de sélectionner le fichier PDF au départ du menu "Gestion / Signer PDF". Ceci permet notamment d'apposer une signature supplémentaire dans un PDF déjà signé.

 

Pour signer un PDF par code, on peut s'inspirer des exemples ci-dessous :

Signature sans valeur par défaut :

Zoom
string pdfFile = "...";
MercatorUi.Reporting.ReportingStatic.Reporting.SignPdf(pdfFile);

 

Signature selon des options choisies (signature entièrement automatique avec un fichier PFX) :

Zoom
string pdfFile = "...";
FastReport.PdfSigning pdfSigning = new FastReport.PdfSigning();
pdfSigning.SignatureBehavior = MercatorUi.SignatureBehaviorEnum.Optional;
pdfSigning.CertificateFile = @"<MainDir\MyPFX.pfx";
pdfSigning.CertificateFilePassword = "1234";
pdfSigning.HideInterfaceIfFile = true;
MercatorUi.Reporting.ReportingStatic.Reporting.SignPdf(pdfFile, pdfSigning);

FastReport.PdfSigning requiert une référence vers MercatorReporting.dll


Remarques :

La signature au départ d'un certificat présent dans le magasin système est tributaire du middleware associé à ce certificat (Isabel, Luxtrust, eID, ...) Il convient de tester la validité de l'installation de ce middleware en dehors de Mercator. (Mercator n'apporte aucun support par rapport à ces différents middlewares)

 

Certains middlewares sont uniquement disponibles en version 32 bits. Dans ce cas, il faut utiliser une version de Mercator bridée à 32 bits. (Une erreur 8219 peut être rencontrée en pareille circonstance)

 

Si le certificat n'apparaît pas dans le déroulant, il est peut-être nécessaire de l'installer. Pour cela, il faut utiliser le certificat à partir d'une autre application (par exemple, composant de test du middleware). Une fois la fenêtre de sélection du certificat affichée, cliquez sur "Afficher les propriétés"

ensuite, cliquez sur "Installer le certificat" et acceptez les valeurs par défaut.

 

Dans le fichier PDF signé, il est possible que ce message soit affiché :

Si le message est "L'identité du signataire est inconnue, car elle n'a pas été ajoutée à la liste d'identités approuvées", cela ne signifie pas que le PDF n'a pas été correctement signé. Cela indique seulement qu'il est signé avec un certificat attribué à une personne ou une organisation qui n'est pas encore reprise dans la liste d'identités approuvées présente dans la configuration locale de l'Acrobat Reader qui lit le PDF signé. Pour ajouter l'émetteur du PDF à cette liste, il suffit de :

  • cliquer droit sur "Rév. 1 Signé par ..." et choisir dans le menu contextuel "Valider la Signature"
  • cliquer sur le bouton "Propriétés de la signature"
  • cliquer sur le bouton "Certificat"
  • dans l'onglet "Approbation", cliquer sur "Ajouter aux identités approuvées"
  • accepter l'avertissement en cliquant sur "OK".