le :
style="max-width:50%"
ne marche pas sur un tableau par exemple.
merci
Ok mais mon problème est que j'ai un tableau avec des cellules trop larges et qui dépasse dès lors de la marge droite de ma page.
Une petite astuce pour pallier à cela ?
merci
Spipu Le 24/02/2009 à 20:49 ben identifier ce qui fait que la celllule est trop large, et modifier en conséquence... ou adapter la largeur des colonnes...
Si c'est trop large sans le style="max-width:50%", c'est donc que tu veux exactement 50% comme largeur (parce que c'est bien ça la largeur que ça va donner si la largeur calculée dépasse 50%), alors autant mettre un bon vieux tag width="50%", n'est-ce pas?
En fait je veux faire tenir un tableau avec un nombre de colonnes variables sur une largeur de page.
J'ai essayé avec "width=100%" mais sans succès non plus.
J'ai essayé de définir les largeurs de chaque colonne mais le problème est que j'ai 8 tableaux de 4 colonnes bien remplies et que le pdf met trop longtemps pour se charger et le délai d'expiration du chargement de ma page est dépassé (30s).
Pendant que j'y suis, lorsque je génére ce même pdf sans définir les colonnes ça prend entre 10 et 12 secondes.
Pour résumé 2 problèmes :
- je ne peux pas définir la largeur de toutes les cellules
- le temps de génération est très très long dans ce cas là
merci
Spipu Le 25/02/2009 à 18:55 il faudrait que tu essayes de prédéterminer la largeur des colonnes en fonction du nombre de colones, et de faire les tests avec un seul tableau dans un premier temps.
ensuite tu généralise aux 7 autres, et tu appeles writeHTML pour chaque sous ensemble
Soit.
Voilà un exemple simple qui illustre bien mon problème je pense :
<table style="width:100%" >
<tr>
<td style="width:50%">
texte trèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèès long
</td>
<td style="width:50%">
ma deuxième cellule qu'on ne verra pas sur le pdf
</td>
</tr>
</table>
Si vous testez vous verrez que, dans la première cellule, le texte trop long ne revient pas à la ligne et que la cellule est, par conséquent , trop large.
Spipu Le 26/02/2009 à 15:01 ca, c'est "normal", ca dépassera aussi en html dans ton navigateur... la preuve ? réduit la largeur de ta fenettre, tu vera que le texte n'est pas coupé et depasse à droite de l'écran...
comme je l'ai dis souvent dans ce forum, HTML2PDF ne sait pas adapter la largeur de toutes les colonnes à cause d'une colonne qui se voit agrandit à cause d'un contenu trop large. Le contenu d'un TD doit tjrs pouvoir rentrer dans la largeur de celui-ci car sinon la mise en page sera mauvaise.
En effet en html sort de la fenêtre si on zoom ...
Ca m'embête vraiment étant donné que je ne peux pas contrôler la largeur du contenu de mes cellules ...
Même avec un max-width en html ça dépasse ....
Je suis consterné, l'html serait mal fait ?
Spipu Le 26/02/2009 à 15:33 non, c'est normal...
il faut pré-découper le contenu quand les mots sont trop long...
Pen^2 Le 26/02/2009 à 16:04 (ou un coup de overflow:hidden si on privilégie la mise en page au contenu)
Est ce que ce serait compliqué de faire fonctionner overflow:hidden avec html2pdf ?
merci
Spipu Le 27/02/2009 à 11:56 ben franchement oui...
pour tes mots trop long, c'est simple, tu les coupes via une expression régulière avec un preg_match_callback
Ce ne sont pas les mots qui sont trop longs mais plutôt les suites de mots.
Mais je ne vois pas trop le rapport avec la fonction "preg_match_callback" (qui n'existe pas soit dit en passant, il y a la fonction preg_replace_callback et la fonction preg_match ).
Ces fonctions permettent de remplacer des éléments dans des chaines de caractères par des autres éléments.
Et comment les afficher dans ma cellule une fois coupés ?
Un petit exemple ? Je pense que ça pourrait vraiment m'éclairer.
Merci beaucoup
Spipu Le 27/02/2009 à 19:47 heu, normalement les suites de mot ne devraient pas poser problème, html2pdf gère le retour à la ligne automatiquement (si la largeur de l'élément contenant est précisée) tu appelles quoi par "suite de mots" ? une phrase classique ? ou autre chose ?
(lol vi pardon, je voulais dire preg_replace_callback, pardon )