Comment compléter un formulaire PDF avec PHP ?

En Suisse lors de la souscription à un service, l’utilisateur doit souvent imprimer et envoyer à sa banque une autorisation de « LSV » ou « Débit Direct ». Pour générer ce document pré-rempli il est possible de créer une page HTML que l’utilisateur va imprimer mais une autre solution peut être de compléter un formulaire PDF en PHP pour le proposer au téléchargement.

Nous allons donc voir comment créer un formulaire PDF en utilisant « Master PDF Editor 4 », puis le compléter en PHP en utilisant la librairie « FPDF ». Tous ces outils sont gratuits ou open-source.

Créer un formulaire PDF (facultatif)

Dans cet article, nous utilisons le logiciel Master PDF Editor 4 disponible à l’adresse suivante : https://code-industry.net/masterpdfeditor/

Nous allons créer un formulaire d’inscription simple contenant un nom, un prénom et une date. Vous pouvez bien entendu partir de n’importe quel formulaire PDF pré-existant et le modifier avec les outils indiqué ici.

Il faut tout d’abord créer un PDF vide. Pour cela cliquer sur File > New > Blank PDF.

Puis nous utilisons l’outil « Insert text » pour créer nos labels et l’outil « Line » pour symboliser les lignes à compléter.

Nous créons ensuite, trois champs de formulaire de type « Text field ».

Dans l’onglet Général, dans le panneau latéral droit, vous pouvez changer le nom du champ. C’est ce nom qui sera utilisé pour compléter le formulaire en PHP. Voici donc le formulaire PDF final :

Remplir un formulaire PDF avec PHP

Pour remplir notre formulaire d’inscription en PHP, nous allons utiliser la bibliothèque FPDF (http://www.fpdf.org/) et en particulier le script FPDM disponible à l’adresse suivante : http://www.fpdf.org/en/script/script93.php

Dans notre exemple nous allons utiliser un tableau pour compléter notre formulaire.

Le code PHP est le suivant :

[pastacode lang= »php » manual= »%3C%3Fphp%0Arequire(‘fpdm.php’)%3B%0A%0A%2F%2FTableau%20contenant%20les%20param%C3%A8tres%20%C3%A0%20passer%20au%20PDF%0A%24fields%20%3D%20array(%0A’nom’%20%3D%3E%20’Doe’%2C%0A’prenom’%20%3D%3E%20’John’%2C%0A’date’%20%3D%3E%20date(‘d%2Fm%2FY’)%2C%0A)%3B%0A%0A%2F%2FLe%20param%C3%A8tre%20correspond%20au%20chemin%20vers%20le%20formulaire%20PDF%0A%24pdf%20%3D%20new%20FPDM(‘example_formulaire.pdf’)%3B%0A%24pdf-%3ELoad(%24fields%2C%20false)%3B%20%2F%2F%20le%20second%20param%C3%A8tre%20vaut%20false%20si%20les%20valeurs%20sont%20en%20ISO-8859-1%2C%20vrai%20si%20UTF-8%0A%24pdf-%3EMerge()%3B%0A%0A%2F*%0ALe%20premier%20param%C3%A8tre%20peut%20prendre%204%20valeurs%C2%A0%3A%0AD%20pour%20que%20l%E2%80%99utilisateur%20soit%20oblig%C3%A9%20de%20t%C3%A9l%C3%A9charger%20le%20fichier%0AI%20pour%20afficher%20le%20fichier%20dans%20le%20navigateur%0AF%20pour%20sauvegarder%20le%20document%20en%20local%0AS%20pour%20retourner%20le%20document%20en%20tant%20que%20chaine%20de%20caract%C3%A8re.%0ALe%20deuxi%C3%A8me%20param%C3%A8tre%20est%20le%20nom%20du%20fichier%0A*%2F%0A%24pdf-%3EOutput(%22D%22%2C%20%22example_formulaire.pdf%22)%3B » message= » » highlight= » » provider= »manual »/]

Je recommande d’utiliser le paramètre « D » car la plupart des lecteurs PDF intégrés dans les navigateurs ne gèrent par les formulaires PDF.

Lors de la première tentative de faire fonctionner ce script vous aurez probablement l’erreur suivante :

FPDF-Merge Error: field nom not found

Le PDF n’est pas compatible avec le script FPDM. Pour le rendre compatible, vous pouvez utiliser l’outil « PDFtk » disponible à l’adresse https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/. Une fois cette outil installé, il suffit de lancer la commande suivante pour générer notre PDF compatible avec FPDM :

[pastacode lang= »bash » manual= »pdftk%20example_formulaire.pdf%20output%20example_formulaire_compatible.pdf » message= » » highlight= » » provider= »manual »/]

Nous pouvons maintenant modifier le code pour prendre le nouveau formulaire PDF :

[pastacode lang= »php » manual= »%24pdf%20%3D%20new%20FPDM(‘example_formulaire_compatible.pdf’)%3B » message= » » highlight= » » provider= »manual »/]

L’utilisateur peut à présent télécharger le formulaire PDF pré-complété :

0 réponses

Laisser un commentaire

Participez-vous à la discussion?
N'hésitez pas à contribuer!

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.