Paul FLYE SAINTE MARIE

Veuillez patientez jusqu'au chargement complet de la page ...

Un peu de cambouis : HTML2PDF

Le cambouis, le code, c’est une gymnastique nécessaire pour les Chefs de Projet Informatique pour rester à la page !

Bonjour à tous,

Aujourd’hui, je fais un petit article sur un sujet qui m’a pris un petit peu de temps.
Hier, j’ai rédigé un petit projet sur les plugins WordPress que j’ai développés tout au long de ma vie de programmeur, dans mes temps libres.

Pour certain, c’est du travail abrutissant et complexe !
Pour moi, c’est un mini-challenge très intéressant sur des problématiques assez simples. C’est au niveau de la technique que tout de suite, cela ce complique.
Pour moi, cela permet de rester toujours « à la page » sur les technologies Web. Dans mon travail, c’est extrêmement important de comprendre les problématiques des développeurs et de comprendre les réalités des technologies actuelles.

Je fais ce billet sur la librairie PHP HTML2PDF que j’ai utilisé pour le plugin WordPress du projet Syndrome de KiSS pour faire un mini-REX (Retour d’Expérience) sur ce sujet très souvent demandé : La génération à la volet de fichier PDF .


Un programmeur qui « réinvente la roue » est, soit un chercheur, soit un imbécile.
Un programmeur doit utiliser l’existant et l’adapté à ses besoins !

La force des langages Web tel que le JavaScript, le PHP, le Java, c’est qu’il existe sur Internet, une ribambelle de librairies qui existent et qui sont disponibles gratuitement !
Alors, plutôt que d’essayer de refaire un code
pour une problématique spécifique, un vrai développeur doit faire un travail de veille technologique et de recherche pour voir si une librairie peut correspondre aux besoins demandés.

Dans le cas du plugin WordPress demandé par la cliente du projet du Syndrome de KiSS, je devais transformer des fichiers Word  de la suite Office en fichier PDF à la volet avec des paramètres passés via un formulaire HTML via l’interface d’administration du site WordPress.

Veille technologique

En premier lieu, j’ai donc décidé de faire cette étape de veille technologique via un moteur de recherche (Qwant, DuckDuckGo, Google) sur le sujet de transformation de fichier Word en fichier PDF . Bien conscient de la difficulté de la problématique, je me suis vite rendu compte de la problématique. Word  est un format de fichier qui appartient à Microsoft et donc l’exploitation d’un fichier issu de la suite Office est très complexe. Il existe bien des librairies PHP sur cette problématique que j’ai été amené à manipuler :

  1. PHPExcel qui permet de manipuler les fichiers Excel (2003 jusqu’à 2016) et de pouvoir proposer des méthodes pré-faites pour générer à la volet des fichiers Excel .
  2. PHPWord qui permet effectivement de manipuler les fichiers Word (2003 jusqu’à 2016) et de pouvoir proposer des méthodes pré-faites pour générer à la volet des fichiers Word .
  3. HTML2PDF qui permet de créer des fichiers PDF à partir de code HTML.

Une fois la veille technologie faite, il faut voir les points positives & négatives de chaque solution.

  1. PHPExcel est inutile dans notre cas !
  2. PHPWord est une librairies PHP très intéressante, mais il s’agit d’une complexité très forte : elle est lourde, complexe à mettre en place, très consommatrice de ressources niveau serveur. Il faut préparer les fichiers Word à l’insertion d’information saisies par le formulaire HTML.
  3. HTML2PDF est une librairie PHP plutôt simple et donne une nouvelle problématique : On ne travaille plus sur des fichiers Word … mais sur du HTML.
  4. Mais qu’elle est la différence entre un document Word et un document HTML ?

En fait, quand on réfléchit un petit peu… il n’y en a aucune ! On peut faire un document très propre avec du HTML, sauf qu’il est nécessaire de faire du code pour faire un fichier proche d’un document Word . Mais, ça tombe bien … : je suis programmeur Web et je manipule du HTML aisément.

Je suis donc parti sur cette approche !

Développement et utilisation de la librairie PHP HTML2PDF :

Après avoir préparé le formulaire HTML nécessaire pour remplir les documents PDF à la volet, il faut transformer les documents Word en document HTML.
Le logiciel propose déjà de transformer les fichiers Word en fichier HTML, mais laisse des fioritures inutiles !
Certains sites proposent également de faire cela : https://word2cleanhtml.com/.

Une fois que vous avez l’ensemble des fichiers nécessaires :

Vous pouvez vous lancez :

  1. Mettez le HTML qui correspond à votre document Word, dans un fichier PHP à part ! (Nommons le Exemple.php) et en respectant la norme HTML imposée par la librairies PHP HTML2PDF : http://wiki.spipu.net/doku.php?id=html2pdf:en:v4:accueil, chapitre « HTML Tags Explained« .

  2. Lancez votre fichier PHP dans un navigateur (Firefox, Chrome, Edge, Safari, Opera, Autres …)
    1. Modifier l’affichage de votre document en modifiant le code HTML et en ajoutant du style via le langage CSS.
      Conseil : Restez simple dans votre code CSS et utiliser des propriétés issues du CSS 2 !
  3. Insérez dans votre code PHP, les variables qui proviendront de votre formulaire HTML.

Voici donc un fichier Exemple.php basique :

Une fois que vous avez votre document HTML dans votre fichier PHP prêt, il ne reste plus qu’à utiliser un petit peu la librairie HTML2PDF.
Voici donc un fichier Formulaire.php qui contient tout ce dont vous avez besoin pour exploiter correctement cette librairie !


Maintenant, une petite FAQ :

Peut-on mettre des images dans son document ?

Bien sûr, aucun problème !
Vous pouvez utiliser la balise img comme vous le désirez !
Moi, je vous conseille de ne pas utiliser une image d’un site, mais plutôt de l’inclure complétement dans votre document via la technique du Base64 !
Et n’oubliez pas une chose très évidente :
Une image dans un fichier PDF est compressé ! Elle sera donc moins belle, donc n’hésitez pas à prendre des images d’une grande résolution et adapté là avec la balise img !

Exemple de fichier avec une image :

Je ne trouve pas une « police » (font en anglais) que je souhaite voir apparaitre dans mon document PDF final …

Aie, oui ça m’est arrivé également.
Vous devez trouver le fichier TrueType (TTF) qui correspond à votre police. Une fois que vous avez le fichier TTF à votre disposition :

  • Importez le fichier TTF sur le site suivant : http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf.
    Conseil : Nommez votre fichier comme vous le désirez voir apparaitre dans votre document HTML dans votre fichier PHP !
  • Récuperez les 3 fichiers : .afm, .php et .z et ajoutez les dans le répertoire de HTML2PDF : html2pdf/vendor/tecnickcom/tcpdf/fonts
  • Vous pouvez à présent utiliser votre police comme n’importe police déjà présente dans la librairie (voir le code du fichier formExemple.php ci-dessus)

Il existe des exemples de document HTML déjà préparés ?

Oui, le site HTML2PDF vous propose beaucoup d’exemple : Inspirez-vous en !
http://html2pdf.fr/fr/example

En conclusion :

Cette librairie est très bien faite. Elle n’est pas évidente à prendre en main, mais une fois qu’on l’a maitrise : on peut faire quasiment ce que l’on désire très simplement.
Je la conseille à tous ! Elle est gratuite, simple et incroyablement rapide d’exécution !

Voilà, c’était un article un peu technique, mais j’espère qu’il vous a plus !
Je continuerais à en faire prochainement.

Je vous souhaite à tous et à toutes, un très bon week-end.

Paul FLYE SAINTE MARIE.

Catégorie(s) : Technologie - Tag(s) affilié(s) : , , , ,

0 Commentaire(s)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*