Je me permet de solliciter votre aide car je n'arrive pas à résoudre une problème d'encodage HTML pour le mettre en PDF.
Je vous explique assez brièvement mon projet. Je réalise un site internet ou des personnes pourront adhéré à des packs. Lors de l'adhésion à ses packs, nous générons un bulletin d'adhésion reprenant l'ensemble des éléments concernant la personne dans la base de données ainsi que l'ensemble des notices afférentes au pack choisi. La notice étant en format html (provenant d'un outil Wysiwig - TinyMCE), je n'arrive pas à l'afficher dans un format lisible sur mon pdf. J'avais trouvé une solution grâce à la concaténétion mais cela me pose un problème car les fichiers comporte après une page par notice + le bulletin ce qui fait un fichier beaucoup trop long.
Je met à disposition le bulletin d'adhésion en format pdf (au format d'impression souhaité) et vous trouverez ci-dessous le code afin de transformer le code html en pdf.
{
//Récupération de l'id souscription pour afficher les champs de la souscription, du type de véhicule et du véhicule
$id=$_GET['id'];
$model = &$this->getModel('souscription');
$souscription = $model->getSouscription($id);
include ('libraries/fpdf/fpdf.php');
include ('libraries/fpdf/fpdi.php');
include ('libraries/html2pdf/html2pdf.class.php');
//include ('libraries/fpdf/htmlParse.php');
ob_end_clean();
//include ('libraries/fpdf/concat_pdf.php');
$pdf= new FPDF();
$eur = mb_convert_encoding('€', 'cp1252','utf-8');
$pdf->AddPage();
$pdf->InFooter=true;
$pdf->FooterSouscription();
$pdf->InFooter=false;
//entête du bulletin d'adhésion
$pdf->Image("libraries/templates/bandeau.png", 10, 22, 190, 15.5);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFont('Helvetica', 'I', 10);
$text="BULLETIN D'ADHÉSION AUX GARANTIES COMPLÉMENTAIRES";
$LongCaract=$pdf->GetStringWidth($text);
$pdf->SetXY((210-$LongCaract)/2, 30);
$pdf->Cell($LongCaract, 0, utf8_decode($text), 0, 'C', false);
//Définition des paramètres du bulletin d'adhésion
$pdf->SetDrawColor(134,131,131);
$pdf->SetFillColor(237,250,221);
$pdf->SetTextColor(51, 51, 51);
$AlignAbs=20;
$AlignOrd=39;
$LargeurTotCell=80;
$HauteurCell=4;
$pdf->SetFont('Helvetica','',8);
//Coutours du Bulletin d'adhésion et ligne au milieu
$pdf->SetLineWidth(0.3);
$pdf->Rect(20,37.75,170,111);
$pdf->Line(103.5,39.25,103.5,109);
//No adhesion
$LargeurCell=27;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Numéro d'adhésion :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->num_souscription),0,0,'L',true);
$AlignOrd+=5.5;
//Nom adherant
$LargeurCell=26;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Nom de l'adhérent :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->nom_locataire),0,0,'L',true);
$AlignOrd+=5.5;
//Prenom adherant
$LargeurCell=30;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Prénom de l'adhérent :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->prenom_locataire),0,0,'L',true);
$AlignOrd+=5.5;
//Societe adherant
$LargeurCell=29;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Société de l'adhérent :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->societe_locataire),0,0,'L',true);
$AlignOrd+=5.5;
//Type vehicule
$LargeurCell=9;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Type :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->libelle_type_vehicule),0,0,'L',true);
$AlignOrd+=5.5;
//Marque
$LargeurCell=12;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Marque :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->marque),0,0,'L',true);
$AlignOrd+=5.5;
//Modele
$LargeurCell=12;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Modèle :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->modele),0,0,'L',true);
$AlignOrd+=5.5;
//No serie ou immat
$LargeurCell=38;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("N° de serie / Immatriculation :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->immatriculation),0,0,'L',true);
$AlignOrd+=5.5;
//Période d'adhesion
$LargeurCell=80;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Période d'adhésion :"));
$AlignOrd+=5.5;
//DU
$LargeurCell=6;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Du :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode(date('d F Y',strtotime($souscription->date_debut)).' '.date('H:i',strtotime($souscription->heure_debut))),0,0,'L',true);
$AlignOrd+=5.5;
//AU
$LargeurCell=6;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Au :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode(date('d F Y',strtotime($souscription->date_fin)).' '.date('H:i',strtotime($souscription->heure_fin))),0,0,'L',true);
$AlignOrd+=5.5;
//Fait à
$LargeurCell=10;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Fait à :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode($souscription->ville_agence),0,0,'L',true);
$AlignOrd+=5.5;
//LE
$LargeurCell=6;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Le :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$pdf->Cell($LargeurTotCell-$LargeurCell,$HauteurCell,utf8_decode(date('d F Y')." à ".date('H:i')),0,0,'L',true);
$AlignOrd+=5.5;
$LargeurCell=6;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->SetFont('Helvetica','I',8);
$pdf->MultiCell(170, 3, utf8_decode('Je reconnais avoir reçu et pris connaissance des conditions générales valant notice d\'information sur les produits d\'assurances en conformité avec l\'article L112-2 du Code des Assurances. Je reconnais être informé qu\'une fausse déclaration lors de l\'adhésion du contrat d\'assurance entraînerait les sanctions prévues par les articles L113-8 et L113-9 du Code des Assurances.'), 0,'L',false);
$AlignOrd+=11;
$pdf->SetFont('Helvetica','',8);
//Signature de l'adhérent
$pdf->SetFont('Helvetica','BUI',8);
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Signature de l'adhérent :"));
$AlignOrd+=5.5;
$pdf->SetFont('Helvetica','',8);
//Cellule couleur de fond signature de l'adhérent
$pdf->SetXY(21,$AlignOrd);
$pdf->Cell(79,20,"",0,0,'L',true);
//2ème colonne du bulletin d'adhésion
$AlignOrd=39;
$AlignAbs=106;
//Pack
$LargeurCell=9;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Pack :"));
$AlignValeurBdd=$AlignAbs+$LargeurCell;
$pdf->SetXY($AlignValeurBdd, $AlignOrd);
$nomDuPack= $model->getPackNameById($souscription->id_pack);
$pdf->Cell($LargeurTotCell-$LargeurCell+1,$HauteurCell,utf8_decode($nomDuPack->libelle_pack),0,0,'L',true);
$AlignOrd+=5.5;
//Extrait les garanties liées à la police et les passe dans un tableau
$garantiesPack=$model->getGaranties($souscription->id_pack);
$pdf->SetXY($AlignAbs, $AlignOrd);
$LargeurCell=30;
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Garantie(s) d'assurance(s) souscrite(s) :"));
$AlignOrd+=5.5;
//Cellule couleur de fond du tableau des garanties
$pdf->SetXY(107, 48);
$pdf->Cell($LargeurTotCell,61,"",0,0,'L',true);
//Affiche les garanties ligne par ligne
foreach($garantiesPack as $garantie)
{
$pdf->SetXY($AlignAbs, $AlignOrd);
$pdf->Cell(0,0," ".chr(187).' '.utf8_decode($garantie->libelle_type_garantie),0,0,'L',true);
$AlignOrd+=4;
}
//Coordonnées du dérogataire
$pdf->SetFont('Helvetica','BUI',8);
$pdf->SetXY($AlignAbs, 121.5);
$pdf->Cell($LargeurCell,$HauteurCell, utf8_decode("Coordonnées du dérogataire :"));
$AlignOrd+=5.5;
$pdf->SetFont('Helvetica','',8);
//Cellule couleur de fond Coordonnées du dérogataire
$pdf->SetXY(107,127);
$pdf->Cell(80,20,"",0,0,'L',true);
//logo loueur
$pdf->Image($souscription->logo_path, 107, 132, 30, 10);
//Coordonnées Dérogataire
$pdf->SetXY(138,129);
$pdf->SetFont('Helvetica','',7);
$pdf->MultiCell(47, 3, utf8_decode($souscription->rs_entite_cli."\n".
$souscription->adresse_agence."\n".
$souscription->cp_agence.' '.$souscription->ville_agence."\n".
"Tel : ".$souscription->tel_agence." - Fax : ".$souscription->fax_agence."\n".
"Email : ".$souscription->email_agence
), 0,'L',false);
//Affichage des notices d'information correspondantes
//aux garanties du pack
$SetY=166;
$pdf->SetMargins(10, 23);
foreach($garantiesPack as $garantie){
//ICI la notice peut être appelée avec $garantie->notice
$pdf->SetY($SetY);
$pdf->SetAutoPageBreak(true,22);
//entête de la notice d'information
$SetYBandeau=$SetY-16.5;
$pdf->Image("libraries/templates/bandeau.png", 10,$SetYBandeau, 190, 15.5);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFont('Helvetica', 'I', 10);
$LibGarantie=$garantie->libelle_type_garantie;
$EnteteNotice=("CONDITIONS GÉNÉRALES D'ASSURANCES VALANT NOTICE D'INFORMATION");
$LongCaract=$pdf->GetStringWidth($EnteteNotice);
$SetYTextBandeau=$SetY-13.5;
$pdf->SetXY((210-$LongCaract)/2, $SetYTextBandeau);
$pdf->MultiCell($LongCaract,4, utf8_decode($LibGarantie."\n".$EnteteNotice), 0, 'C', false);
//Notice d'information
$pdf->SetTextColor(0, 0, 0);
$pdf->SetXY(10,$SetY);
$pdf->SetFont('Helvetica','', 6);
$html2pdf = new HTML2PDF('P','','fr',false, 'ISO-8859-15');
$html2pdf->setDefaultFont('Helvetica');
$html2pdf->pdf->SetDisplayMode('real');
$content=$garantie->notice;
$html2pdf->writeHTML($content);
//var_dump($html2pdf);
//die;
$content_PDF = $html2pdf->Output('', true);
$pdf->MultiCell(0,2,utf8_decode($content_PDF), 0, 'L',true);
//Calcul de l'ordonnée de la postion courante
$Y=$pdf->GetY();
//Si l'ordonnée courante est inférieur à la marge alors
//réinitialiser la marge haute
$SetY = ($Y>275) ? 38.5 : $Y+16.5 ;
$pdf->AliasNbPages();
}
$pdf->InFooter=true;
$pdf->FooterSouscription();
$pdf->InFooter=false;
$pdf->Output($souscription->num_souscription.".pdf","D");
}
Par avance merci de votre aide.
Grégory
Fichier joint :