1

Bonjour,

Je suis confronté à un nouveau problème. J'ai regardé tous les exemples pour vérifier que je ne pose pas une question déjà résolu. J'espère ne pas être passé à coté de quelque chose.

Je dois généré un document contenant un tableau qui doit faire exactement 225mm x 105 mm, avec des traits de coupe (fichier destiné à un imprimeur).

Voici le code testé :

<table cellpadding="0" cellspacing="0">
<tr >
<td style="vertical-align:bottom;text-align:right;border-right:1px solid #000;border-bottom:1px solid #000;">
<img src="img/blank.gif" style="width:10mm;height:10mm;">
</td>
<td style="border-right:1px dashed #CCC">
<img src="img/blank.gif" style="width:75mm;height:10mm;">
</td>
<td >
<img src="img/blank.gif" style="width:75mm;height:10mm;">
</td>
<td style="border-left:1px dashed #CCC">
<img src="img/blank.gif" style="width:75mm;height:10mm;">
</td>
<td style="vertical-align:bottom;text-align:right;border-left:1px solid #000;border-bottom:1px solid #000;">
<img src="img/blank.gif" style="width:10mm;height:10mm;">
</td>

</tr>
<tr >
<td><img src="img/blank.gif" style="width:10mm;height:105mm"></td>
<td style="width:75mm;vertical-align:top;color:#000;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus et risus. Maecenas non nunc. Proin eleifend viverra sapien. Donec id augue. Duis erat nunc, volutpat a, bibendum quis, placerat vitae, enim. Etiam consectetur, velit in viverra tempus, urna augue sollicitudin tellus, vitae interdum arcu mi at est. Donec ornare, libero vitae facilisis molestie, mi sapien venenatis felis, sed mattis lectus nisi ac massa.
</td>
<td style="width:75mm;vertical-align:top;color:#000;">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus et risus. Maecenas non nunc. Proin eleifend viverra sapien. Donec id augue. Duis erat nunc, volutpat a, bibendum quis, placerat vitae, enim. Etiam consectetur, velit in viverra tempus, urna augue sollicitudin tellus, vitae interdum arcu mi at est. Donec ornare, libero vitae facilisis molestie, mi sapien venenatis felis, sed mattis lectus nisi ac massa.

</td>
<td style="width:75mm;vertical-align:top;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus et risus. Maecenas non nunc. Proin eleifend viverra sapien. Donec id augue. Duis erat nunc, volutpat a, bibendum quis, placerat vitae, enim. Etiam consectetur, velit in viverra tempus, urna augue sollicitudin tellus, vitae interdum arcu mi at est. Donec ornare, libero vitae facilisis molestie, mi sapien venenatis felis, sed mattis lectus nisi ac massa.
</td>
<td><img src="img/blank.gif" style="width:10mm;height:105mm"></td>
</tr>
<tr >
<td style="vertical-align:top;text-align:right;border-right:1px solid #000;border-top:1px solid #000;">
<img src="img/blank.gif" style="width:10mm;height:10mm;">
</td>
<td style="border-right:1px dashed #CCC">
<img src="img/blank.gif" style="width:75mm;height:10mm;">
</td>
<td >
<img src="img/blank.gif" style="width:75mm;height:10mm;">
</td>
<td style="border-left:1px dashed #CCC">
<img src="img/blank.gif" style="width:75mm;height:10mm;">
</td>
<td style="vertical-align:top;text-align:right;border-left:1px solid #000;border-top:1px solid #000;">
<img src="img/blank.gif" style="width:10mm;height:10mm;">
</td>
</tr>
</table>


J'ai mis des blank.gif pour forcer le tableau à avoir les dimensions exactes. J'ai essayé d'attribué des width un peu partout sur mes table,tr,td mais en vain.

Savez-vous d'où pourrait venir le problème ?

Merci d'avance

2

déjà, il faut etre cohérent et mettre toutes les tailles en mm. de plus, il faut retrancher les borders de la largeur des cases les contenant, sinon elles s'ajoutent.

j'ai réussi à obtenir cela :

<?php $b = 0.3; ?>
<style type="text/css">
<!--
	table { padding: 0; margin: 0; border: none;}
	td { padding: 0; margin: 0; border: none;}
	th { padding: 0; margin: 0; border: none;}
-->
</style>
<page format="A4" orientation="L">
	<table cellpadding="0" cellspacing="0">
		<tr >
			<td style="width:<?php echo (10-$b*2); ?>mm;height:<?php echo (10-$b*2); ?>mm; border-right:<?php echo ($b); ?>mm solid #000;border-bottom:<?php echo ($b); ?>mm solid #000;"></td>
			<td style="width:<?php echo (75-$b*2); ?>mm;height:10mm; border-right:<?php echo ($b); ?>mm dashed #CCC;"></td>
			<td style="width:75mm;height:10mm;"></td>
			<td style="width:<?php echo (75-$b*2); ?>mm;height:10mm; border-left:<?php echo ($b); ?>mm dashed #CCC;"></td>
			<td style="width:<?php echo (10-$b*2); ?>mm;height:<?php echo (10-$b*2); ?>mm; border-left:<?php echo ($b); ?>mm solid #000;border-bottom:<?php echo ($b); ?>mm solid #000;"></td>
		</tr>
	</table>
	<table cellpadding="0" cellspacing="0">
		<tr >
			<td style="width:10mm;height:105mm"></td>
			<td style="width:75mm;vertical-align:top;color:#000;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus et risus. Maecenas non nunc. Proin eleifend viverra sapien. Donec id augue. Duis erat nunc, volutpat a, bibendum quis, placerat vitae, enim. Etiam consectetur, velit in viverra tempus, urna augue sollicitudin tellus, vitae interdum arcu mi at est. Donec ornare, libero vitae facilisis molestie, mi sapien venenatis felis, sed mattis lectus nisi ac massa.</td>
			<td style="width:75mm;vertical-align:top;color:#000;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus et risus. Maecenas non nunc. Proin eleifend viverra sapien. Donec id augue. Duis erat nunc, volutpat a, bibendum quis, placerat vitae, enim. Etiam consectetur, velit in viverra tempus, urna augue sollicitudin tellus, vitae interdum arcu mi at est. Donec ornare, libero vitae facilisis molestie, mi sapien venenatis felis, sed mattis lectus nisi ac massa.</td>
			<td style="width:75mm;vertical-align:top;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus et risus. Maecenas non nunc. Proin eleifend viverra sapien. Donec id augue. Duis erat nunc, volutpat a, bibendum quis, placerat vitae, enim. Etiam consectetur, velit in viverra tempus, urna augue sollicitudin tellus, vitae interdum arcu mi at est. Donec ornare, libero vitae facilisis molestie, mi sapien venenatis felis, sed mattis lectus nisi ac massa.</td>
			<td style="width:10mm;height:105mm"></td>
		</tr>
	</table>
	<table cellpadding="0" cellspacing="0">
		<tr >
			<td style="width:<?php echo (10-$b*2); ?>mm;height:<?php echo (10-$b*2); ?>mm; border-right:<?php echo ($b); ?>mm solid #000;border-top:0<?php echo ($b); ?>mm solid #000;"></td>
			<td style="width:<?php echo (75-$b*2); ?>mm;height:10mm;border-right:<?php echo ($b); ?>mm dashed #CCC"></td>
			<td style="width:75mm;height:10mm;"></td>
			<td style="width:<?php echo (75-$b*2); ?>mm;height:10mm;border-left:<?php echo ($b); ?>mm dashed #CCC"></td>
			<td style="width:<?php echo (10-$b*2); ?>mm;height:<?php echo (10-$b*2); ?>mm;border-left:<?php echo ($b); ?>mm solid #000;border-top:<?php echo ($b); ?>mm solid #000;"></td>
		</tr>
	</table>
</page> 
Ancien pseudo : lolo

3

Merci encore de la rapidité et l'intérêt que tu as concernant mon problème.

Seulement j'ai appliqué ton code, imprimé, pris ma règle et mesuré, je n'atteins pas les 22,5 cm désirés. J'ai pourtant viré les bordure de page que j'avais mis, mais rien n'y fait ...

Une petite question, si je dois retiré la largeur de chaque border pour chaque cellule, pourquoi appliquer le calcul (X-$b*2) au lieu de (X-$b) puisque dans mon cas, je n'ai jamais plus d'une bordure d'affichée ...

4

petit point : dans ton viewer PDF, tu as pensé à désactiver la mise à l'echelle ? (Mise à l'echelle : aucune)

sinon, pour le coup du 2*$b, justement je ne sais pas, j'ai l'impression que j'ai une incohérence sur les largeurs des TDs, il faut que je vérifie ca
Ancien pseudo : lolo

5

Génial, ça paraît stupide comme erreur, mais c'était effectivement le problème de mise à l'échelle !! (un peu comme un ; oublié en php ...)

Merci beaucoup !!

Pour info, j'ai imprimé avec le calcul X-$b et non X-$b*2 et j'obtiens bien les dimensions désirées ...

Encore une fois, merci pour ton aide spipu !

6

ah bon ? ca marche avec X-$b et non avec X-$b*2 ??? et quelque soit la taille du $b ?
Ancien pseudo : lolo

7

Malheureusement, j'ai du modifier ton script (j'utilise un fichier xml pour charger le modele de la page qui risquera d'évoluer au fil du temps).

Les valeurs sont donc en dures ...

Mais si tu calcules comme ceci :
largeurCellule + border = largeurTotaleCellule pour chaque cellule, je dois bien appliquer un seul retrait de border ...

Je vais tout de même tester en appliquant X-$b*2 et je te fais un retour

8

Après impression + mesures, les deux calculs semblent agir de la même façon... Pas de changement entre les 2 pages imprimées (j'ai pourtant vidé le cache, rafraichit X fois ma page)

9

houla, zarb ca sad
Ancien pseudo : lolo