1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
| <?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.)
$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
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-TaTE 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');
?> |
Partager