Passer au contenu

Offrez à vos internautes un catalogue personnalisé

Au-delà du simple code HTML, PHP sait générer différents types de documents tel que le format d’Adobe, PDF (Portable Document Format). Le serveur d’application joue alors le rôle de pilote, la librairie PDFlib effectuant tout le travail.

Cette mise en ?”uvre explique comment créer dynamiquement un document PDF à partir des données stockées dans la base MySQL. De nombreuses applications sont envisageables, telle la conception de catalogues produits personnalisés pour chaque visiteur de votre site.

1 – Configurez PHP

Livrée par défaut avec PHP 4.0.6, la librairie PDFlib 4.0.1 doit être activée pour en bénéficier. Pour cela, éditez le fichier de configuration “php.ini“, puis reportez-vous à la section “extensions“. Trouvez la ligne contenant “php_ pdf.dll” et supprimez le point virgule situé devant. Arrêtez PHP et relancez-le afin qu’il prenne en compte vos modifications.

2 – Connectez-vous au catalogue

Le catalogue sur lequel vous allez travailler comporte 4 champs : “idproduit“, “libelle“, “prix” et “photo“. Créez une connexion entre la base de données et le serveur d’application à l’aide de l’instruction “mysql_connect()“.Les paramètres passés sont, dans l’ordre, le nom du serveur, le login et le mot de passe de l’administrateur. Positionnez ensuite le curseur sur la bonne base à l’aide de “mysql_select_db()“. Dans cette mise en ?”uvre, la base se nomme “PDF“.

3 – Affichez les produits dans un formulaire

L’internaute doit être en mesure de cocher les produits pour créer son catalogue personnalisé. Utilisez pour cela un simple formulaire. Récupérez la sélection en la stockant dans plusieurs “checkbox” portant la même appellation. Indispensables, les “[]” situées derrière le nom du champ indiquent à PHP qu’il s’agit d’un tableau de variables. Le serveur d’application évite ainsi d’écraser la dernière valeur saisie par la précédente.Profitez de ce formulaire pour récupérer les propriétés du document et pour demander à l’internaute son e-mail, de façon à lui envoyer automatiquement son catalogue dans sa boîte aux lettres.

4 – Créez le document PDF

Ouvrez ensuite un nouveau fichier en mode “append” afin de l’enrichir à l’aide de la commande “fopen()” ; n’oubliez pas de préciser un nom de fichier. Dans le cadre d’un site à fort trafic, vous devrez certainement générer un identifiant unique pour chaque fichier afin de ne pas les écraser involontairement. Dans la foulée, créez un objet PDF à l’aide de l’instruction “pdf_open()” et indiquez qu’il devra être stocké dans le fichier texte que vous venez d’ouvrir.

5 – Définissez les propriétés du document

L’étape suivante consiste à récupérer les informations, qui ont été passées par le formulaire de la page précédente, sur le document. Dans cet exemple, il s’agit du nom de l’auteur, du titre du document PDF, ainsi que du sujet mentionné dans les propriétés du document. L’instruction “pdf_set_info()” requiert trois paramètres : l’objet que vous modifiez, la variable et sa valeur.

6 – N’affichez que la sélection de l’internaute

Maintenant, vous allez générer une page pour chaque produit sélectionné. La boucle “While (list($key, $val) = each($sel))” sert à descendre une à une les lignes du tableau “$sel“. Celui-ci contient les identifiants des produits choisis par l’internaute. Le mécanisme “while” ne disposant pas de compteur, créez-en un. C’est l’objet de la variable “$i” que vous initialiserez à “0“.Sélectionnez ensuite les informations sur le produit directement dans la base de données, en fonction de l’identifiant passé par “$sel[$i]“. Une fois les résultats de la requête SQL stockés dans le tableau de valeurs “$data“, vous pouvez commencer à créer la première page.

7 – Définissez la structure de la page

La création d’un document PDF ressemble à celle d’une image. Une fois le fond conçu, on place dessus les différents éléments à afficher. Les valeurs passées à l’instruction “pdf_begin_ page()” indiquent, dans l’ordre, l’objet à modifier, ainsi que la largeur et la hauteur de la page en pouces.Les valeurs indiquées dans le script correspondent à une page A4 (21 x 29,7 cm). Précisez ensuite la police que vous souhaitez utiliser, sa taille et son type d’encodage.

8 – Affichez la fiche produit

À l’aide de l’instruction “pdf_show_ xy()“, affichez les différentes informations qui constituent la fiche produit. Vous devez préciser les paramètres suivants : l’objet PDF manipulé, le texte à afficher et la position du texte.Contrairement aux standards de l’informatique où le coin en haut à gauche vaut généralement (0,0), ses coordonnées dans un document PDF sont (0,854). Notez également que les éléments ne sont pas nécessairement placés dans un ordre linéaire. Vous pouvez donc positionner un texte en bas de page, revenir en haut de page et placer une image, etc.

9 – Insérez une photo du produit

Une fois les éléments texte placés, occupez-vous des images. Par défaut, la librairie PDFlib prend en compte les formats JPeg et PNG. Dans un premier temps, ouvrez le fichier image qui correspond au produit. Dans cet exemple, les fichiers “1.jpg, 2.jpg, etc.” sont stockés dans le champ “photo” de la base MySQL et placés physiquement dans le même répertoire que le script.Ouvrez ensuite le fichier source de l’image, affectez sa valeur à une variable et placez cette variable comme vous l’avez fait pour les champs texte. Utilisez pour cela l’instruction “pdf_place_image()” en précisant, dans l’ordre, le fichier PDF à modifier, l’image à placer, sa position en abscisse et en ordonnée, ainsi que l’échelle de l’image. Enfin, fermez le fichier source avec l’instruction “pdf_close_image()“.

10 – Soulignez du texte

Enrichissez la “décoration” en soulignant, par exemple, le titre de chaque page. Pour positionner le curseur, vous devez utiliser “pdf_moveto()“. Tracez la ligne à l’aide de l’instruction “pdf_lineto()“. Les valeurs indiquées correspondent ici à la fin de la ligne (ce qui permet de tracer des diagonales). La fin de préemption du curseur s’exécute à l’aide de “pdf_stroke()“.

11 – Fermez le document PDF

Pour finir, indiquez à la librairie que votre page est achevée à l’aide de “pdf_end_page()“. Incrémentez le compteur de 1 et fermez la boucle avec “}“. Si le tableau “$sel” comporte plusieurs produits, la boucle s’exécute à nouveau en créant une nouvelle page. Lorsqu’elle prend définitivement fin, il ne vous reste plus qu’à fermer l’instanciation de l’objet “$pdf” et le fichier texte “$fichier“.La fermeture de ce dernier achève la création du document PDF. Un simple lien hypertexte autorise l’internaute à appeler le fichier. Le lecteur Acrobat Reader ouvre alors le fichier dans le navigateur ou dans une fenêtre séparée, selon votre configuration.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Frédéric Bordage