Spipu Le 06/11/2008 à 10:05 ben le problème, c'est qu'il n'est pas fait pour pouvoir découper les cases, pour des raisons d'alignement et de calcul des tailles des différentes cellules du tableau
Excel fait exactement la même chose quand tu veux imprimer quelque chose : il fait un saut de page quand une cellule ne rentre pas
donc y a pas vraiment de solution . Le plus simple serait que tu change ton code html pour découper en lignes
Pourquoi la librairie ne pourrait-elle pas faire ce travail toute seule ?
je m'explique: Erreur 7: TD trop grande
on test le nombre de ligne que l'on peut mettre sur le restant de la page on les met sur la première page.
Sur la seconde page, on crée une nouvelle ligne (tr) avec les mêmes caractéristiques et on ajoute la suite du texte. On effectue la même opération si le texte ne tient toujours pas sur 2 pages.
Ce n'est pas envisageable ?
Spipu Le 05/12/2008 à 07:44 et si t'as plusieurs colonnes par tr ? il faut qu'ils aient tous la même auteur... et c'est bien là le problème... il faudrait commencer par remplir ce qui rentre du premier TD dans la premiere page, puis remplir ce qui rentre du 2e td dans la 1premire page, et ainsi de suite pour toutes les colonnes, puis sauter une page, revenir au premier td, et recommencer...
si il y a un seul TD, ca marche déjà (cf la méthode setTestTdInOnePage), mais si il y en a plus, non...
Ce serait trop gourmand en ressource ou c'est trop compliqué à coder ?
Si c'est possible pour 1 TD, ne pourrait-on pas généraliser et permettre cette possibilité si les hauteurs des différentes colonnes de la ligne sont identiques, plutôt que d'afficher le message d'erreur ?
Bonjour à tous,
je génère dynamiquement des tableaux avec des données issues d'une base de données (remplie par l'utilisateur) et j'ai vite rencontré l'erreur n°7. Je voudrais donc voir avec vous comment je pourrais faire pour calculer le nombre de lignes et donc le nombre de caractères maximum que peut contenir une cellule? Ainsi je pourrais limiter le nombre de caractère par champ pour l'utilisateur.
Merci d'avance,
Spipu Le 10/05/2010 à 13:20 tu utilises quelle version de HTML2PDF ? car il y avait des erreurs à ce niveau là dans les anciennes versions...
merci pour la réactivité :-)
J'utilise la version HTML2PDF v4.00.
Existe t il une fonction dans la librairie me permettant de connaitre le nombre de caractère dans la cellule?
Spipu Le 10/05/2010 à 15:31 non, aucune, mais essayes avec la version 4.01, car il y avait un bug dans la 4.00
J'ai dl la version 4.1. Le résultat est bien plus joli avec des données qui fonctionnent : merci!
En revanche, il y a toujours un nombre limité de caractères par cellule. A ce propos, voici le texte d'erreur que j'obtiens :
"Fatal error: Uncaught <span style="color: #AA0000; font-weight: bold;">ERREUR n°7</span><br>Fichier : /opt/lampp/htdocs/CI_DATABASE/lib/html2pdf/html2pdf.class.php<br>Ligne : 4785<br><br>le contenu d'une balise TD ne rentre pas sur une seule page thrown in /opt/lampp/htdocs/CI_DATABASE/lib/html2pdf/html2pdf.class.php on line 4785"
Comme il n'y a pas de fonction existante, quelqu'un aurait il une idée de la mnière de faire pour compter le nombre de caractères par cellule?
Merci d'avance.
Spipu Le 10/05/2010 à 19:07 le problème est que c'est impossible : ca dépend de la largeur de ta case, de la taille de ton texte, de sa fonte, si il y a du gras, des imagees, et autres... donc c'est à toi de faire des essais pour voir en fonction de ta mise en page ce que tu peux autoriser à l'utilisateur
Je pense qu'il y a problème de clonage....
Le numéro de page ne semble pas se ré-initaliser lorsque après le clone.
Essayer ceci cela fonctionne pour moi :
Ajouter la ligne ci-dessous au html2pdf.class.php :
HTML2PDF::$SUBOBJ->pdf->getPage();
juste avant celle-ci (ligne 763 pour la version 4.01) :
$sub_html = clone HTML2PDF::$SUBOBJ;
Bon courage
C'est marrant, Spipu, je suis tombé sur la même conclusion que toi !
Après un echo de getPage() pour tracker je me suis aperçu que cela fonctionnait.
A+
Tout d'abord bonjour, et merci pour cette librairie,
J'ai le même problème que pas mal de monde, j'ai valider mon code , mais j'ai toujours le problème en 4.01 (php5) , en 3.31 (donc php4) tout fonctionne
donc j'ai bien mon pdf généré avec la 3.31 , mais l'erreur du TD trop grande en 4.01. comment faire ?
j'ai fait ceci, code géré avec un print_r($content);
noté que les br que j'avais formaté de cette façon <br /> se sont transformés en <br>
[code]
<page><table width="90%" style="text-align: left;">
<thead>
<tr><th colspan="7"> <i>Commande du : </i>18-03-2011 19:03</th></tr>
<tr><th colspan="7"><i>societe : </i>test</th></tr>
<tr><th colspan="7"><i>nom : </i>test<br></th></tr>
<tr><th colspan="7"><i>adresse : </i>test<br>test<br>test<br></th></tr>
<tr><th colspan="7"><i>pays : </i>test</th></tr>
<tr><th colspan="7"><i>telephone : </i>test</th></tr>
<tr><th colspan="7"><i>email : </i>test@test.Fr</th></tr>
<tr> <th colspan="7"><i>vat : </i>12132</th></tr>
<tr><th>n°</th><th>reference</th><th>designation</th><th>colisage</th><th>quantite</th><th>prix</th><th>prix total</th></tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">BOT06</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">bottes matelassées moutarde motifs éléphants indiens noirs </td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">lot de 2 pièces3-9 mois</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">4</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">23</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">92</td>
</tr>
<tr>
<td>2</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">CV45</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">couverture paon </td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;"></td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">4</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">29.00</td>
<td style="border: 1px solid; font-weight: normal; padding: 0.5mm; text-align: center;">116</td>
</tr>
</tbody></table>
</page>
[/code]
Effectivement ! plus d'erreurs ! et je ne suis pas chez free pourtant. mais sur une config perso.
PHP Version 5.2.0-8+etch16
merci bien spipu ! (d'ailleurs, je sais pas si ça un rapport, mais je met en place html2pdf sur un spip là )