Bonjour,
Tous d'abord je tiens a féliciter le createur de html2pdf, grace a lui j'arrive avec cette classe a creer un pdf a partir de donnees dynamique recuperer sur une base de donnée.
Par contre je suis confronte a un probleme que je n'arrive pas a resoudre.
J'ai defini les marges de mon document dans les parametres de la fonction HTML2PDF cepandant lorsque j'ai un tableau avec TD qui dispose d'un contenu important le retour a la ligne de ce contenu se fait au moins 20-30 mm de retard, le contenu manquant depasse donc de la page et n'est pas affiché.
Quant j'affiche du texte tous ce passe bien, les marges de la page sont respectées.
Quelqu'un a une solution a ce probleme ?
Spipu Le 08/10/2008 à 18:11 [comme d'habitude : merci de PRECISER version de PHP et de HTML2PDF]
pourrais tu me donner un exemple de code html engendrant ce pb ?
Desoles pour le manque de precision.
PHP 5, HTML2PDF v3.13
J'ai repris les fichier d'origine de la classe pour faire les tests
Voici mon code:
<?php
require_once('html2pdf/html2pdf.class.php'); //Classe de l'author Laurent MINGUET <webmaster@spipu.net>
$pdf = new HTML2PDF('P','A4', 'fr');
ob_start();
$sequence="
<table cellpadding='1' cellspacing='1' border='1'>
<tr>
<td>1 TD olo bolo bolo bolo bolo -- le tableau depasse de la page avec 2 td---lo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bo</td>
<td>2 cellule TD bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo </td>
</tr>
</table>
<br><br>
<table cellpadding='1' cellspacing='1' border='1'>
<tr>
<td>tableau 2 avec un seule TD et un seul TR olo bolo bolo -- le tableau ne depasse pas de la page avec 1 td- par tr-- bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bo
</td>
</tr>
</table>
<br><br>
<table cellpadding='1' cellspacing='1' border='1' >
<tr>
<td >1td 1tr tableau3 olo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bo</td>
</tr>
<tr>
<td >1e td 2tr tableau 3 olo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bo</td>
<td >2e td 2tr cellule tableau 3olo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bo</td>
</tr>
</table>
<br><br>
bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bo
lo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bo
lo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo bolo
";
echo "<page backtop='40mm' backbottom='10mm'>";
echo $sequence;
echo"</page>";
$content = ob_get_clean();
$pdf->WriteHTML($content, isset($_GET['vuehtml']));
$pdf->Output();
mysql_close();
?>
Je continu a cherche de mon coté si vous avez des idées de soluce, elles sont les bienvenue.
merci
Merci de ton analyse et de ta rapidité de reponse en tous cas.
J'avais effectivement remarqué que les width sont systematiques dans les exemples.
Cependant ce qui m'interroge aussi c'est que lorsque aucun width est signalé le retour a la ligne du texte contenu dans un td qui depasse se fait comme meme mais apres avoir depassé le A4 de au moins 40 px.
J'ai essayé de jouer sur les marges, les backright, padding-right sans reussir a determiner quel limitation pour resoudre mon probleme.
En tous cas merci de ton aide
Spipu Le 13/10/2008 à 13:21 En fait, pour déterminer la taille d'un TD, il prend la taille indiqué dans le style (si elle est présente), sinon, il essaye de voir quelle largeur au maximale prend le contenu si on l'affiche sur une page sans marge. Si le TD ne rentre quand même pas dans la largeur si elle est précisée (une grande image par exemple), il prendra la plus grande largeur des deux afin que le contenu rentre toujours dans le TD
Dans ton cas, le texte étant très long, et étant donné qu'aucune largeur n'était précisé pour le RD, il prend toute la largeur de la page (21cm pour du A4) et ceci devient la largeur du TD => étant donné que dans ton document final, tu as une marge à gauche, le td depassera d'autant à droite.
ok ?
ok merci pour ces précisions !
Spipu Le 21/02/2009 à 03:03 il faut préciser la largeur de TOUS les TD. les %, mm, px, pt sont autorisés