Je vous présente cette semaine un dernier plugin que j'ai écrit dans un cadre professionnel, dont le but est d'extraire des métadonnées de fichiers PDF.

Si vous êtes un fidèle lecteur de mon site, vous vous rappelez peut-être que le 4 septembre 2022, j'ai écrit un article intitulé en attendant un plugin d'extraction de métadonnées PDF. Dans cet article, j'explique comment, grâce aux expressions rationnelles, il est possible d'extraire des métadonnées à partir de fichiers PDF. Je ne reviendrai donc pas sur cette manière de faire mais je vous conseille peut-être de relire cet article avant de continuer.
 
Aujourd'hui, ce que j'expliquais dans mon article, dans un plugin Joomla, comment récupérer ses métadonnées et de les afficher à l'utilisateur. Je n'ai pas développé cet outil pour rien, c'est un besoin purement professionnel. Comme d'habitude si vous êtes intéressé, vous pouvez récupérer les sources et les intégrer dans votre Joomla. Et comme d'habitude, si vous apporter une touche infographique, ce sera avec plaisir que je ferai un lien vers vos modifications.
 
Sans rentrer trop dans les détails du code de ce plugin, je vais quand même toutefois vous expliquer dans les grandes lignes comment ce plugin fonctionne.
Il faut savoir que dans un fichier PDF, qui se trouve être un fichier de type binaire, l'ensemble des métadonnées, afin de pouvoir être récupérées, collectées et intégrées par un moteur de recherche par exemple (qu'il soit sur Internet ou sur des réseaux internes), doivent être écrites "en texte brut" dans le fichier PDF qui lui, je le rappelle, est un fichier binaire.
Cela nous arrange donc particulièrement car il nous suffit de lire le fichier PDF comme un fichier texte, pour pouvoir en extraire sa csubstantifique moelle métadonienne de ce fichier. J'ai travaillé ici sur le format de type PDF mais vous pouvez, bien entendu, réexploiter ce code pour l'utilisation de données d'autres types. D'ailleurs, peut-être que de nouveaus plugins sur d'autres formats de fichiers viendront un jour. Je pense notamment à des fichiers .doc ou des fichiers .xls pour démarrer.
Je reviens et j'insiste sur un point qui reste très important sur la récupération de métadonnées : encore une fois, tous les fichiers, qu'ils soient binaires ou non, les métadonnées doivent être au format texte brut. C'est la raison pour laquelle, il est possible, grâce aux expressions rationnelles (regex), d'extraire ces métadonnées qui sont forcément intégrées entre deux chaînes de caractères ou deux caractères spécifiques déterminant une zone dans laquelle ces métadonnées sont présentes.
 
Fonctionnement dans les grandes lignes de mon code
 
Pour mener à bien l'extraction des métadonnées d'un fichier PDF, voici les étapes que j'utilise. Dans un premier temps je recherche dans mon article le shortcode {showpdf(.*)}(.*){/showpdf} afin d'en extraire le contenu qui n'est, ni plus ni moins, que le lien vers le fichier PDF. Remarquez que vous pouvez dans mon plugin passer un paramètre dans le premier paramètre du short code.  
Le fonctionnement est simple, dans le cas où les métadonnées ne sont pas dans votre fichier PDF, il est possible de surcharger ses données en y mettant dans le paramètre du premier short code.
 
Une fois récupéré le chemin vers le fichier, j'attaque plusieurs recherches. Dans un premier temps je récupère depuis cle chamin du fichier, sa taille du fichier grâce à une fonction PHP native qui me renvoie la taille de ce fichier en octet. Je crée quatre groupes particuliers qui permettent de transformer ce nombre retourné en octet dans une valeur plus adaptée, si besoin, comme le mégaoctet, le terraoctet, ou encore le goga octet.
 
À la suite de la recherche de la taille du fichier, je recherche véritablement les informations méta du PDF. On retrouve la version du format de PDF utilisé,
  • l'auteur du fichier PDF,
  • le sujet du fichier PDF,
  • sa date de création,
  • sa date de modification,
  • les mots clés,
  • le titre (attention, ce n'est pas le nom du fichier !),
  • le producteur de fichier,
  • le nombre de pages que contient le fichier PDF,
  • éventuellement le nombre d'images que contient le fichier PDF,
  • et enfin des informations stipulant si ce fichier PDF est protégé par un mot de passe ou non.
Sur l'ensemble des sites sur lesquels je travaille avec Joomla, j'intègre toujours le plugin de regular lab qui permet d'afficher un phylactère. Et donc ici, au cœur de mon plugin, j'utilise les classes CSS de ce phylactère pour générer cette bulle qui contient le contenu des métadonnées du fichier PDF se trouvant au cœur des shortcodes. 
showpdf
 

Mon Github

slhuilli1's GitHub repositories