Probleme avec FPDF mise en page

cs_Alpha911 Messages postés 88 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 13 août 2011 - 21 août 2007 à 11:30
cs_bere27 Messages postés 8 Date d'inscription mercredi 27 mai 2009 Statut Membre Dernière intervention 18 février 2010 - 16 févr. 2010 à 10:24
Bonjour,

j'ai fait un petit code qui permet de faire des etiquettes avec generation de code barre en FPDF. Je débute avec cet outil et je souhaite par la suite insérer des données depuis mysql.

J'ai regardé les tuto et le script proposé par FPDF qui ne correspond pas à mes attentes. ici le probleme est que si j'enleve
$pdf->SetAutoPageBreak(0);
$pdf->AcceptPageBreak(false)

je me retrouve avec 10 pages mal cadrés y a t'il un moyen de bien cadrer tout celà pour permettre un affichage sur plusieurs pages bien cadré ?

<?php




define('FPDF_FONTPATH','font/');
require('fpdf.php');
require('code39.php');
$pdf=new PDF_Code39();
$pdf->Open();
$pdf->SetMargins(0,0);
$pdf->AddPage();
$pdf->SetFont('Arial','B',8);
$i = 0;
$mult = (23 - 37.5);


while($i != 10)
{
// generation du tableau
$pas =  (37.8 * $i);
$pas2 = (37.8 * $i);
if($i == $a++) { $y= $pas; $bas = $pas2; $mult = ($mult + 37.5);}
$i = ($i + 1);
$pdf->SetAutoPageBreak(0);
$pdf->AcceptPageBreak(false);

// premiere cellule
$pdf->SetXY(0, $bas);
$pdf->Rect(0, $y, 69, 32);
$pdf->SetFont('Arial','B',8);
$pdf->Cell(65, 4,'H7A3980SV783',0,0,'C');
$pdf->Ln();
$pdf->SetFont('Arial','I',6);
$pdf->Cell(20,0,'Nart : 19',0,0);
$pdf->SetFont('Arial','',9);
$pdf->Cell(8);
$pdf->Cell(15,4 ,'GANTS',0,0);
$pdf->Ln();
$pdf->Cell(15,4,'Taille : T4',0,0);
$pdf->Ln();
$pdf->Cell(15,4,'Couleur : 955',0,0);
$pdf->Ln();
$pdf->Cell(30);
$pdf->SetFont('Arial','I',8);
$pdf->Cell(15,4,'(6559.57 F)',0,0);
$pdf->Cell(1);
$pdf->SetFont('Arial','B',12);
$pdf->Cell(15,4,'1000.00 ?',0,0);
$pdf->Code39(1,$mult,'1028-t4955',1,6);


//seconde cellule
$pdf->SetXY(71, $bas);
$pdf->SetFont('Arial','B',8);
$pdf->Rect(70.5, $y, 69, 32);
$pdf->Cell(33);
$pdf->Cell(1,4,'H7A3980SV783',0,0,'C');
$pdf->Ln();
$pdf->SetFont('Arial','I',6);
$pdf->Cell(71);
$pdf->Cell(10,4,'Nart : 19',0,0);
$pdf->SetFont('Arial','',9);
$pdf->Cell(15);
$pdf->Cell(15,4,'GANTS',0,0);
$pdf->Ln();
$pdf->Cell(71);
$pdf->Cell(71,4,'Taille : T4',0,0);
$pdf->Ln();
$pdf->Cell(71);
$pdf->Cell(71,4,'Couleur : 955',0,0);
$pdf->Ln();
$pdf->Cell(100);
$pdf->SetFont('Arial','I',8);
$pdf->Cell(1,4,'(6559.57 F)',0,0);
$pdf->Cell(15);
$pdf->SetFont('Arial','B',12);
$pdf->Cell(16,4,'1000.00 ?',0,0);
$pdf->Code39(71,$mult,'1028-t4955',1,6);


// Troisieme celule
$pdf->SetXY(141, $bas);
$pdf->SetFont('Arial','B',8);
$pdf->Rect(141.2, $y, 69, 32);
$pdf->Cell(33);
$pdf->Cell(1,4,'H7A3980SV783',0,0,'C');
$pdf->Ln();
$pdf->SetFont('Arial','I',6);
$pdf->SetX(141.5);
$pdf->Cell(0,4,'Nart : 19',0,0);
$pdf->SetFont('Arial','',9);
$pdf->SetX(141.5);
$pdf->Cell(27.1);
$pdf->Cell(30,4,'GANTS',0,0);
$pdf->Ln();
$pdf->SetX(141.5);
$pdf->Cell(71,4,'Taille : T4',0,0);
$pdf->Ln();
$pdf->SetX(141.5);
$pdf->Cell(71,4,'Couleur : 955',0,0);
$pdf->Ln();
$pdf->SetX(141.5);
$pdf->SetFont('Arial','I',8);
$pdf->Cell(30);
$pdf->Cell(1,4,'(6559.57 F)',0,0);
$pdf->SetX(141.2);
$pdf->SetFont('Arial','B',12);
$pdf->Cell(46);
$pdf->Cell(16,4,'1000.00 ?',0,0);
$pdf->Code39(141.5,$mult,'1028-t4955',1,6);
$pdf->Ln();
}

$pdf->Output();
?>

2 réponses

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
21 août 2007 à 12:13
FPDF utilise la notion de cellules pour la mise en page. Le seul moyen que je connaisse pour cadrer ses pages de passer par les fonctions automatiques de la librairie (SetAutoPageBreak...) ou sinon de faire les calculs soit même. Si tu veux que chaque page contienne 5 articles, à toi de te débrouiller pour que la taille des cellules soit adaptées (une taille de police adapté, ...)
Sinon je crois qu'il existe une propriété pour faire passer automatiquement à la page suivante quand une cellule est trop grande...
0
cs_bere27 Messages postés 8 Date d'inscription mercredi 27 mai 2009 Statut Membre Dernière intervention 18 février 2010
16 févr. 2010 à 10:24
J'en profite que vous parlier de la bibliothèque fpdf pour vous signaler un soucis. Car je n'arrive pas à créer un sujet en fait.
Donc en local, mon document pdf se crée bien, cependant en ligne rien ne fonctionne.
J'ai repris mon code pour la création du document pdf et à la suite j'ai intégré une fonction mail php pour envoyé ce document en piece jointe.

Rien ne fonctionne.
J'espere que vous allé pouvoir m'aider.
J'essai de vous retranscrire le code

<?php
include 'connexion.php';
// récupération des champs du formulaire de saisie
$societe = htmlentities($_POST["societe"]);
$ets = htmlentities($_POST["etablissement"]);
$resp = htmlentities($_POST["responsable"]);
$fonction = htmlentities($_POST["fonction"]);
$tel = htmlentities($_POST["telephone"]);
$copie = htmlentities($_POST["telecopie"]);
$mail = htmlentities($_POST["internet"]);
$site = htmlentities($_POST["site"]);
$adrsiege = htmlentities($_POST["siege"]);
$corresp = htmlentities($_POST["corres"]);
$fonctionGirv = htmlentities($_POST["fonctionC"]);
$effets = htmlentities($_POST["effectif"]);
$act = htmlentities($_POST["activite"]);
$code = htmlentities($_POST["code"]);
$dommaine = htmlentities($_POST["domaine"]);
$lieu = htmlentities($_POST["lieu"]);
$le = htmlentities($_POST["datelieu"]);
$cotisation = htmlentities($_POST["cotisation"]);
$cheque = htmlentities($_POST["cheque"]);
$agence=htmlentities($_POST["agence"]);
// requête qui récupére les informations sur la société et l'adhérent
$req="select NomSociete, Adresse1Societe, Adresse2Societe, CPSociete, VilleSociete from societe s, adherent a where a.NumAdherent=s.NumAdherent and LoginPresident <> ' ' and MdpPresident <> ' ' " ;
$exec=mysql_query($req); // exécution de la requête
$ligne=mysql_fetch_array($exec) ; // lecture de la requête

// requête qui recupére les informations statique de la lettre type
$sql="select TitreLT, PhraseAccueil from lettretype";
$exe=mysql_query($sql);
$ligne1=mysql_fetch_array($exe);

// appel du fichier phptoPDF pour générer les documents pdf
include("phpToPDF.php");
// nouveau document pdf
$PDF=new phpToPDF();

// écriture de la fiche de renseignements
$PDF->AddPage();
$PDF->SetFont('Arial','B',16);
$PDF->Image("./images/logo_GIRV_petit.jpg", 10, 10);
$PDF->SetFont('Arial','',8);
$PDF->Write(9,"\n\nSOCIETE");
$PDF->TEXT(60,33.5, "\n\n: " .$societe);
$PDF->Write(7,"\nADRESSE ETABLISSEMENT LOCAL");
$PDF->TEXT(60,39, "\n\n: " .$ets);
$PDF->Write(10,"\nRESPONSABLE LOCAL");
$PDF->TEXT(60,51, "\n\n: " .$resp);
$PDF->Write(7,"\nFONCTION");
$PDF->TEXT(60,56, "\n\n: " .$fonction);
$PDF->Write(5,"\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
$PDF->Write(5,"\nTELEPHONE");
$PDF->TEXT(60,65, "\n\n: " .$tel);
$PDF->Write(7,"\nTELECOPIE");
$PDF->TEXT(60,73, "\n\n: " .$copie);
$PDF->Write(7,"\nADRESSE INTERNET");
$PDF->TEXT(60,80, "\n\n: " .$mail);
$PDF->Write(7,"\nSITE INTERNET");
$PDF->TEXT(60,87, "\n\n: " .$site);
$PDF->Write(5,"\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
$PDF->Write(5,"\nADRESSE SIEGE SOCIAL");
$PDF->TEXT(60,96, "\n\n: " .$adrsiege);
$PDF->Write(4,"\n(si différent)");
$PDF->Write(5,"\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
$PDF->Write(5,"\nCORRESPONDANT GIRV");
$PDF->TEXT(60,110, "\n\n: " .$corresp);
$PDF->Write(7,"\nFONCTON");
$PDF->TEXT(60,118, "\n\n: " .$fonctionGirv);
$PDF->Write(5,"\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
$PDF->Write(5,"\nEFFECTIF ETABLISSEMENT LOCAL");
$PDF->TEXT(60,127, "\n\n: " .$effets);
$PDF->Write(7,"\nACTIVITE");
$PDF->TEXT(60,135, "\n\n: " .$act);
$PDF->Write(7,"\nCODE NAF");
$PDF->TEXT(60,142, "\n\n: " .$code);
$PDF->Write(5,"\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
$PDF->Write(5,"\nDOMAINES D'ACTIVITES : " .$domaine);

// écriture de la lettre type
$PDF->AddPage();
$PDF->SetFont('Arial','',8);
$PDF->TEXT(120,30, "" .$ligne1['TitreLT']);
$PDF->TEXT(120,34, "Chez " .$ligne['NomSociete']);
$PDF->TEXT(120,38, "" .$ligne['Adresse1Societe']." ".$ligne['Adresse2Societe']);
$PDF->TEXT(120,42, "" .$ligne['CPSociete']." ".$ligne['VilleSociete']);
$PDF->TEXT(120,55, "Fait a " .$lieu);
$PDF->TEXT(140,55, ", le " .$le);
$PDF->TEXT(15, 75, "Objet : Candidature GIRV");
$PDF->TEXT(15, 90, "" .$ligne1['TitreLT']);
$PDF->TEXT(45, 90, " ,");
$PDF->TEXT(15, 105, "" .$ligne1['PhraseAccueil']);
$PDF->TEXT(15, 120, "Notre societe est implantee au " .$ets);
$PDF->TEXT(15, 135, "Elle emploie " .$effets);
$PDF->TEXT(40, 135, "personnes pour un CA HT de " .$effets);
$PDF->TEXT(85, 135, " Euros");
$PDF->TEXT(15, 150, "L'activite de notre societe consiste a faire de(s) " .$act);
$PDF->TEXT(15, 165, "Nous vous prions d'agreer, " .$ligne1['TitreLT']);
$PDF->TEXT(80, 165, ", l'expression de nos sentiments respectueux.");

// écriture du bon d'adhésion
$PDF->AddPage();
$PDF->SetFont('Arial','B',14);
$PDF->Cell(190,10,"Bon d'adhesion\n\n\n",0,1,'C');
$PDF->SetFont('Arial','',8);
$PDF->MultiCell(190, 8, "Je soussigne: ".$resp."\nSociete: ".$societe."\ndeclare adherer au GIRV pour 2010 et verse ma cotisation ci-joint cheque n° ".$cheque." Agence de ".$agence."\n Fait a ".$lieu." le ".$le. "\n\n", 1, "", 0);

$PDF->TEXT(20, 70, "\nMerci de retourner le cheque de cotisation a l'adresse suivante: ");
$PDF->TEXT(130,70, "GIRV");
$PDF->TEXT(130,74, "Chez " .$ligne['NomSociete']);
$PDF->TEXT(130,78, "" .$ligne['Adresse1Societe']." ".$ligne['Adresse2Societe']);
$PDF->TEXT(130,82, "" .$ligne['CPSociete']." ".$ligne['VilleSociete']);
$PDF->Cell(190,80,"\nDOCUMENT TENANT LIEU DE PIECE COMPTABLE",0,1,"C");

// enregistrement du document pdf à la racine
$PDF->Output("Documents_adhesion.PDF", "F");

// ************************************************************************************************************************************ GESTION DE L'ENVOI DU MAIL ET DU DOCUMENT EN PJ
// ************************************************************************************************************************************

//DECLARATION DES VARIABLES
//-----------------------------------------------
$destinataire='chaumier.b@hotmail.fr';
//$email_expediteur='chaumier.b@hotmail.fr';
//$email_reply='chaumier.b@hotmail.fr';
$message_texte='Bonjour,'."\n\n".'Voici les documents nécessaire pour l\'adhésion au GIRV';

/*$message_html='<html>
<head>
<title>Adhésion au GIRV</title>
</head>
Documents nécessaire
</html>'; */

//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//-----------------------------------------------

$frontiere = '-----=' . md5(uniqid(mt_rand()));

//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------

//$headers = 'From: "Nom" <'.$email_expediteur.'>'."\n";
//$headers .= 'Return-Path: <'.$email_reply.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';

//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$message = 'This is a multi-part message in MIME format.'."\n\n";

$message .= '--'.$frontiere."\n";
$message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_texte."\n\n";

//-----------------------------------------------
//MESSAGE HTML
//-----------------------------------------------
/*$message .= '--'.$frontiere."\n";

$message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_html."\n\n";

$message .= '--'.$frontiere.'--'."\n"; */

//-----------------------------------------------
//PIECE JOINTE
//-----------------------------------------------

$message .= 'Content-Type: application/pdf; name="Documents_adhesion.pdf"'."\n";
$message .= 'Content-Transfer-Encoding: base64'."\n";
$message .= 'Content-Disposition:attachement; filename="Documents_adhesion.pdf"'."\n\n";

$message .= chunk_split(base64_encode(file_get_contents('Documents_adhesion.pdf')))."\n";

if(mail($destinataire,$message,$headers))
{
echo 'Le mail a été envoyé';
}
else
{
echo 'Le mail n\'a pu être envoyé';
}
?>

n'hésitez pas à me répondre par mp.
Merci
0
Rejoignez-nous