
Je souhaite convertir une page html générée en php (avec récupération de contenu dans la base de données etc..).
Après pas mal d'essais infructueux avec divers outils, j'ai essayé html2pdf.
J'ai donc récupéré le contenu html de ma page :
<?php ob_start() <!-- Tout le contenu de la page en php/html --> $content = ob_get_clean(); require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php'); $html2pdf = new HTML2PDF('P','A4','fr'); $html2pdf->setTestTdInOnePage(false); $html2pdf->WriteHTML($content, isset($_GET['vuehtml'])); $Fichierpdf = $html2pdf->Output('', true); file_put_contents("./CompteRendu.pdf", $Fichierpdf); ?>
Avec ceci en bas de page, j'ai bien un fichier 'CompteRendu.pdf' qui est créé, avec tout mon contenu à l'intérieur, mais.. j'ai l'impression que le résultat est zoomé ^^'
J'ai utilisé un css pour dimensionner ma page et faire en sorte qu'elle rentre dans une feuille format A4 avec les marges de chaque côté, mais la plupart de mes blocs sont coupé sur la droite, voyez plutôt :
Aperçu du pdf
Mon tableau en haut est sensé être centré (les blocs rouges sont des logos), et les bordures du tableau ne devraient pas être si épaisses (1px dans mon css), là on dirait qu'elle sont zoomées, le contour est flou ^^'
Le titre ('Entreprise Test') devraient être plu gros et centré (mais vu que la page déborde sur la droite, il doit être centré quand même).
Le bloc en gris est bon si ce n'est qu'il dépasse sur la droite (il devrait y avoir la même marge à gauche et à droite), et autre problème plus loin dans le document, d'autre blocs avec le même style ne veulent pas s'afficher en gris (même 'class' dans le css pourtant)...
Voila le code & le css de la partie affichée si ça peut vous aider :
<table class="CRhead"> <tr> <td class="tdBord"><img src="..." alt="logo" title="logo" /></td> <td class="tdCentre"> <img src="..." alt="logo2" title="logo2'" /> <?php echo $annee; /* Correspond à l'année en cours */ ?> </td> <td class="tdBord"> <img src="..." alt="logo3" title="logo3" /> <img src="..." alt="logo3" title="logo3" /> </td> </tr> </table> <div class="nomEtp"> <?php echo $NomEtpAE; /* Correspond au nom de l'entreprise :) */ ?> </div> <div class="donneesEtp"> <table> <tr><td colspan="2" class="sousTitreDonnee">Fiche signalétique de l'entreprise<br /><br /></td></tr> <?php /* Boucle qui parcourt un array contenant les intitulés de chaque ligne ($FSEtp) et affiche leur valeur correspondante dans un 2e array ($FSEtpDonnees) */ for($i=0;$i<sizeof($FSEtp);$i++){ echo "<tr><td>".$FSEtp[$i]." :</td>"; echo "<td class='valeurDonnee'>".$FSEtpDonnees[$i]."</td></tr>"; } ?> <tr><td colspan="2" class="sousTitreDonnee"><br/><br/>Données relatives à l'entretien<br /><br /></td></tr> <?php /* Même chose que la boucle précédente ^^ */ for($i=0;$i<sizeof($DonneesEntretien);$i++){ echo "<tr><td>".$DonneesEntretien[$i]." :</td>"; echo "<td class='valeurDonnee'>".$DonneesEntretienVal[$i]."</td></tr>"; } ?> </table> </div>
// Tableau (entête de la première page) .CRhead { margin-top:15px; margin-left:auto; margin-right:auto; height:50px; width:750px; border:1px black solid; } // Style qui s'applique aux 3 cellules du tableau .CRhead td{ vertical-align:middle; text-align:center; border:1px black solid; font-weight:bold; } // Style qui s'applique aux cellules gauche et droite du tableau .tdBord { width:25%; } // Div qui contient le nom de l'entreprise .nomEtp { margin-bottom:60px; margin-top:60px; text-align:center; font-size:3em; font-weight:bold; text-decoration:underline; } // Div qui contient un tableau dans lequel sont affichées des informations (fond en gris) .donneesEtp { margin-top:50px; margin-left:auto; margin-right:auto; background-color:#C1C1C1; width:100%; } // Sous titre dans la partie grise .sousTitreDonnee { text-transform:uppercase; font-weight:bold; letter-spacing:1px; padding-left:50px; } // Valeur de droite (floutées) dans la partie grise .valeurDonnee{ font-style:italic; font-weight:bold; }
Voila, j'avoue avoir perdu les 3/4 de mes neurones avant même d'utiliser html2pdf, alors un peu d'aide serait la bienvenue

C'est peut être une erreur toute bête, mais là je sèche ^^'
Si jamais vous avez besoin d'autre chose pour pouvoir me répondre, hésitez pas à demander
