[RESOLU] Générer un pdf personnalisable dynamiquement

Eléphanteau du PHP | 14 Messages

29 janv. 2016, 15:03

Bonjour à tous. Je travaille sur une application qui devra permettre d'editer dynamiquement certains documents pdf. Dans mes recherhes je suis tombé sur la magnifique librairie fpdf. J'arrive donc à générer un .pdf à partir des informations contenues dans ma BD(sous mysql).

je souhaite maintenant pouvoir générer un contrat (document existant déjà en pdf) personnalisé pour chaque client enregistré depuis un formulaire. Le contrat dont je dispose, comprend des espaces reservés aux différentes valeurs du formulaire.

Je prie toute personne de bien vouloir me guider dans ce sens.

Avatar du membre
Mammouth du PHP | 1609 Messages

29 janv. 2016, 15:05

Bonjour, tu peux en faire une image que tu mettras en fond de page et tu écriras les blocs textes aux bons emplacements.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 14 Messages

29 janv. 2016, 15:12

Bonjour, tu peux en faire une image que tu mettras en fond de page et tu écriras les blocs textes aux bons emplacements.
Au fait je ne souhaite pas editer le document depuis une page. A la soumission du formulaire de création d'un client(par exemple), le document pdf(le contrat) devra être généré, mais à partir d'un modèle de contrat qui existe deja et dont j'ai copie. Mon script devra uniquement renseigner certaines zones du contrat avec les informations du client.

Avatar du membre
Mammouth du PHP | 1609 Messages

29 janv. 2016, 15:16

J'ai pas dû être assez clair. Tu fais une image du modèle que tu vas mettre en fond de page avec fpdf et tu écris les blocs texte par dessus aux bons emplacements.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 14 Messages

29 janv. 2016, 15:58

J'ai pas dû être assez clair. Tu fais une image du modèle que tu vas mettre en fond de page avec fpdf et tu écris les blocs texte par dessus aux bons emplacements.
Ah ok je comprends mieux votre proposition. cependant une interrogation :?: serait-il possible de spécifier un fond de page précis à chaque page d'un meme document avec fpdf. Je m'interroge ainsi car mon modèle de contrat fait 4 pages donc avec votre proposition ceci reviendrait à fonds de pages :?: :?:

Avatar du membre
Mammouth du PHP | 1609 Messages

29 janv. 2016, 16:03

Oui, il suffit que tu colles une image différente à chaque page.

En gros ça donne quelque chose comme ça (pour un format A4) :
$pdf = new FPDF();
$pdf->AddPage();
$pdf->Image('modele-p1.jpg', 0, 0, 210, 297);
$pdf->Text(5, 25, 'Du texte');
$pdf->AddPage();
$pdf->Image('modele-p2.jpg', 0, 0, 210, 297);
$pdf->Text(5, 25, 'Du texte');
// etc
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 14 Messages

29 janv. 2016, 19:28

Oui, il suffit que tu colles une image différente à chaque page.

En gros ça donne quelque chose comme ça (pour un format A4) :
$pdf = new FPDF();
$pdf->AddPage();
$pdf->Image('modele-p1.jpg', 0, 0, 210, 297);
$pdf->Text(5, 25, 'Du texte');
$pdf->AddPage();
$pdf->Image('modele-p2.jpg', 0, 0, 210, 297);
$pdf->Text(5, 25, 'Du texte');
// etc
Oui, il suffit que tu colles une image différente à chaque page.

En gros ça donne quelque chose comme ça (pour un format A4) :
$pdf = new FPDF();
$pdf->AddPage();
$pdf->Image('modele-p1.jpg', 0, 0, 210, 297);
$pdf->Text(5, 25, 'Du texte');
$pdf->AddPage();
$pdf->Image('modele-p2.jpg', 0, 0, 210, 297);
$pdf->Text(5, 25, 'Du texte');
// etc
Merci infiniment Saian pour votre attention si particulière. J'ai eu connaissance de la librairie FPDI qui fonctionne très bien avec fpdf. Cette librairie permet de générer un document pdf, à partir d'une source pdf existante. :wink: Exactement ce qui me faut.

Après installation des différentes dependances, j'obtiens ceci:

Code : Tout sélectionner

<?php require_once('../fpdf.php'); //Chemin d'accès au fichier selon mon repertoire. require_once('../fpdi.php'); //Chemin d'accès au fichier selon mon repertoire. $PDF = new FPDI(); $pagecount = $PDF->setSourceFile('modeles/ModeleContratClassique.pdf'); $tplidx = $PDF->importPage(1, '/MediaBox'); $PDF->addPage(); $PDF->useTemplate($tplidx, 0, 0, 210); $dom='MIRASSOU'; $type='SARL'; $teldom='22 52 78 78'; $respo=utf8_decode('Elysee KOUASSI'); $fonction='DIRECTEUR'; $moisCourant=date('m'); $anneeCourante=date('y'); $titre=utf8_decode('CONTRAT DE DOMICILIATION N°').$anneeCourante.'/'.$moisCourant.'-'; /* code pour rajouter tout ce qu'on a à rajouter */ $PDF->Output(); ?>
Merci et j'espère que ça pourra aider.

Avatar du membre
Mammouth du PHP | 1609 Messages

29 janv. 2016, 19:40

Merci pour le partage briced. :)
Développeur web depuis + de 20 ans