Bonjour
je collectionne des cartes postales
j'ai une base de données chez 1&1 et avec les données suivants TITRE - NUMERO PAGES DE RANGEMENT et IMAGE (liens vers ma base de données de type http://****/cp_recette/images/recett...aioli_23_2.jpg.
Je veux via FPDF éditer un pdf avec toute ma BDD.
Si tout fonctionne
J'aimerais dans les colonnes VUE afficher l'image de la carte correspondante.
Je sais qu'il faut utiliser la fonction Image sous fpdf mais je n'y arrive pas. Je suis un petit autoditacte.
Voici la code ma page
-------------------------------
[CODE=PHP]<?php
// Connexion a* la BDD (a* personnaliser)
//$link = mysqli_connect('localhost','login','mot_de_passe','nom_base');
$link = mysqli_connect('xxx','xxx','xxx','xxx');
// Si base de donnaees en UTF-8, utiliser la fonction utf8_decode pour tous les champs de texte a* afficher
// Appel de la librairie FPDF
require("fpdf/fpdf.php");
// Craeation de la class PDF
class PDF extends FPDF {
function placement_nouvelle_page($hauteur) {
if ( $this->AcceptPageBreak()
&& !$this->Header
&& !$this->Footer
// j'ai rajoutae pour entete et modifiae les 2 lignes avant !!
&& !$this->entete_table
&& (($this->y + $hauteur) > $this->PageBreakTrigger)
) {
// Automatic page break
$x2 = $this->x;
$this->AddPage($this->CurOrientation,$this->CurPageSize);
$this->x = $x2;
}
}
// Header
function Header() {
// Logo : 8 >position a* gauche du document (en mm), 2 >position en haut du document, 80 >largeur de l'image en mm). La hauteur est calculaee automatiquement.
//le logo est dans la racine même
$this->Image('logo/logo_CP_cuisine.jpg',15,2);
// Saut de ligne 20 mm
$this->Ln(15);
// Titre gras (B) police Helbetica de 11
$this->SetFont('Helvetica','B',11);
// fond de couleur gris (valeurs en RGB)
$this->setFillColor(230,230,230);
// position du coin supaerieur gauche par rapport a* la marge gauche (mm)
$this->SetX(70);
// Texte : 60 >largeur ligne, 8 >hauteur ligne. Premier 0 >pas de bordure, 1 >retour a* la ligneensuite, C >centrer texte, 1> couleur de fond ok
$this->Cell(120,8,'LES CARTES POSTALES "RECETTES DE CUISINE"',0,1,'C',1);
// Saut de ligne 10 mm
$this->Ln(5);
}
// Footer
function Footer() {
$today = date("j/n/Y");
// Positionnement a* 1,5 cm du bas
$this->SetY(-15);
// Police Arial italique 8
$this->SetFont('Helvetica','I',9);
// Numaero de page, centrae (C)
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
// date d'impression
$this->Cell(0,0,'Imprime le '.$today.' ',1,1,'C');
}
}
// On active la classe une fois pour toutes les pages suivantes
// Format portrait (>P) ou paysage (>L), en mm (ou en points > pts), A4 (ou A5, etc.)
[CODE=PHP]$pdf = new PDF('P','mm', 'a4');
// $pdf = new PDF('L','mm', array (210,297)); cela fonctionne !!
// Nouvelle page A4 (incluant ici logo, titre et pied de page)
$pdf->AddPage();
// Polices par daefaut : Helvetica taille 9
$pdf->SetFont('Helvetica','',7);
// Couleur par daefaut : noir
$pdf->SetTextColor(0);
// Compteur de pages {nb}
$pdf->AliasNbPages();
// Fonction en-tete des tableaux en 4 colonnes de largeurs variables
[CODE=PHP]function entete_table($position_entete) {
global $pdf;
$pdf->SetDrawColor(183); // Couleur du fond RVB
$pdf->SetFillColor(221); // Couleur des filets RVB
$pdf->SetTextColor(0); // Couleur du texte noir
$pdf->SetY($position_entete);
// position de colonne 1 (10mm a* gauche)
$pdf->SetX(10);
$pdf->Cell(95,8,'RECETTE',1,0,'C',1); // 70 >largeur colonne, 8 >hauteur colonne
// position de la colonne 2
$pdf->SetX(95);
$pdf->Cell(20,8,'RANGEMENT',1,0,'C',1); // 70 >largeur colonne, 8 >hauteur colonne
// position de la colonne 3
$pdf->SetX(115);
$pdf->Cell(90,8,'VUE',1,0,'C',1);
$pdf->Ln(); // Retour a* la ligne
}
// AFFICHAGE EN-TaŠTE DU TABLEAU
// Position ordonnaee de l'entete en valeur absolue par rapport au sommet de la page
$position_entete = 40;
// police des caracta¨res
$pdf->SetFont('Helvetica','',7);
$pdf->SetTextColor(0);
// on affiche les en-tetes du tableau
entete_table($position_entete);
$position_detail = 58; // Position ordonnaee = $position_entete+hauteur de la cellule d'en-tete (50+8)
$requete2 = "SELECT * FROM cp_recette ORDER BY titre ASC";
$result2 = mysqli_query($link, $requete2);
$cheminimages = "http://monsite/cp_recette/images/";
while ($data_visit = mysqli_fetch_array($result2))
{
$y_debut_ligne = $pdf->GetY();
if ($y_debut_ligne > $pdf->GetPageHeight() - $position_entete) {
$pdf->AddPage();
entete_table($position_entete);
$y_debut_ligne = $pdf->GetY();
}
$pdf->placement_nouvelle_page(8); // 8 mm = hauteur des cellules
$position_detail = $pdf->GetY();
// position abcisse de la colonne 1 (10mm du bord)
$pdf->SetY($position_detail);
$pdf->SetX(10);
$pdf->MultiCell(85,8,utf8_decode($data_visit['titre']),1,'C');
// position abcisse de la colonne 2 (95 = 10+85)
$pdf->SetY($position_detail);
$pdf->SetX(95);
$pdf->MultiCell(20,8,utf8_decode($data_visit['nmr_page']),1,'C');
// INSERTION IMAGE
// position abcisse de la colonne image
$photorecette = utf8_decode($data_visit['vue']);
$pdf->SetY($position_detail);
$pdf->SetX(115);
$couverturerecette = "$cheminimages$photorecette";
$pdf->MultiCell(90,8, $couverturerecette,1,'C');
// on incraemente la position ordonnaee de la ligne suivante (+8mm = hauteur des cellules)
$position_detail += 8;
}
mysqli_free_result($result2);
$pdf->Output('Les_CP_recettes_de_cuisine_de_Laurent.pdf','I'); // affichage a* l'aecran
// Ou export sur le serveur
// $pdf->Output('F', '../test.pdf');
?>
[CODE=PHP]
-----------------------
Je remercie par avance les personnes pouvant m'aider
Cordialement
Laurent
PS : ma ligne au début "$this->Image('logo/logo_CP_cuisine.jpg',15,2);" fonctionne bien...
Partager