Nous avons vu il y a déjà quelques mois comment appliquer un filigrane sur toutes les pages d’un fichier PDF (voir liens suivants) :
J’avais utilisé cette astuce provenant d’un utilisateur des forums PC SOFT, afin de pouvoir réimprimer des factures avec un joli « DUPLICATA » affiché en oblique. Mais ce que je n’avais pas pris en compte, ce sont les fichiers auxquels j’avais mis un mot de passe pour bloquer la modification. Ces documents pouvaient être ouverts, imprimés mais leur contenu était verrouillé…
Du coup, lors de l’appel de la procédure qui ajoute le petit filigrane, cela me générait une jolie exception avec l’erreur PdfReader not opened with owner password.
Zut alors ! Mais comment faire pour que ça marche sans pour autant spécifier de mot de passe. En fait j’ai simplement spécifié un paramètre, juste après l’initialisation de ma variable MonFichierPDF de type PdfReader, qui permet d’apporter des modifications au flux chargé.
PdfReader.unethicalreading = true;
Et bim ! Je relance la procédure en passant comme source un fichier protégé par mot de passe (pour la modification) et cette fois ça marche. Super ! Notez enfin que cette syntaxe fonctionne dans la procédure Windev qui avait été détaillée dans les deux articles ci-dessus.