1

Bonjour,

J'ai du mal à comprendre le système de calcul de largeur totale des cellules d'un tableau

Si j'ai bien compris, c'est la norme CSS: "border + padding + width".
Mais je n'arrive pas à obtenir ce résultat... j'ai l'impression que les border / padding sont toujours doublés.
CF tests dans le document joint (+ pdf généré)

Désolé s'il ne s'agit pas d'un bug... c'est que j'ai mal compris :-)

tromb Fichier joint : test.php
tromb Fichier joint : test.pdf

Merci d'avance, cédric

2

Re,

Je n'ai pas encore pris le temps de tout contrôler, mais pour moi l'addition des "$marge" (correspondant ici à border+padding) à la largeur fait double emploi...
html2pdf.class.php, ligne 4791
				// dimentions de cette case
				$w0 = $this->sub_html->maxX + $marge['l'] + $marge['r'];
				[...]
				// dimensions imposées par le style
				$w2 = $this->style->value['width'] + $marge['l'] + $marge['r'];


les border et padding sont déjà ajoutés au style dans la classe styleHTML.class.php, ligne 969

				if ($this->value['width'])
				{
					if ($this->value['border']['l']['width'])	$this->value['width']	+= $this->value['border']['l']['width'];
					if ($this->value['border']['r']['width'])	$this->value['width']	+= $this->value['border']['r']['width'];
					if ($this->value['padding']['l'])			$this->value['width']	+= $this->value['padding']['l'];
					if ($this->value['padding']['r'])			$this->value['width']	+= $this->value['padding']['r'];
				}


reste un problème lié au calcul de $this->sub_html->maxX lorsque la largeur de la colonne n'est pas fixée et que le texte est trop large (la largeur de la cellule est calculée automatiquement mais visiblement, le calcul ne prend pas en compte les éventuels border+padding => le tableau déborde)


Je regarderai à l'occasion... pour ma part j'ai donc remplacé:

				$w2 = $this->style->value['width'] + $marge['l'] + $marge['r'];
				$h2 = $this->style->value['height'] + $marge['t'] + $marge['b'];


par
				$w2 = $this->style->value['width'];// + $marge['l'] + $marge['r'];
				$h2 = $this->style->value['height'];// + $marge['t'] + $marge['b'];


Ce qui me convient très bien pour l'instant.


Cédric