1

Edit : arg j'ai oublié de spécifier la version, 4.00 et 4.01 j'ai tenté les 2, j'ai le même résultat.

Bonjour,

Tout d'abord, un grand merci pour cette classe que j'utilise très fréquemment. Elle fonctionne vraiment bien pour générer des pages de type factures.

Par contre, j'ai voulu l'utiliser pour générer des fichiers d'impression. Des PDF très grand donc avec des formats bien spécifiques. J'ai rencontré des problèmes.

Je vais tenter de résumer tous mes soucis :
1) la taille de la page
2) la taille des marges
3) des td vides qui n'ont pas la bonne hauteur.


mon code est très simple
$content='
<table>
<tr><td colspan=6 style="height:'.$MargeHaut.'px">&nbps;</td></tr>
<tr>
<td style="width:'.$MargeGauche.'px">&nbps;</td>
<td><img en png></td>
<td><img en png></td>
<td><img en png></td>
<td><img en png></td>
<td style="width:'.$MargeDroite.'px">&nbps;</td>
</tr>
<tr><td colspan=6 style="height:'.$Espacement.'px"></td></tr>
<tr>
<td style="width:'.$MargeGauche.'px">&nbps;</td>
<td><img en png></td>
<td><img en png></td>
<td><img en png></td>
<td><img en png></td>
</tr>
<td style="width:'.$MargeDroite.'px">&nbps;</td>
<tr><td colspan=6 style="height:'.$MargeBas.'px">&nbps;</td></tr>
</table>';


$html2pdf = new HTML2PDF('P',array(3392,1295),'fr', false, 'ISO-8859-15');
$html2pdf->writeHTML($content);
$html2pdf->Output();



1) la taille de la page.
J'ai bien compris qu'il fallait mettre array(width,height) lors de l'appel du constructeur dans la variable $format.

Soucis : on ne peut pas spécifier l'unité. J'ai du changer sa valeur par défaut dans le constructeur de FPDF. Car travaillant pour l'impression. Toutes mes mesures sont en pixels et non en 'mm' comme l'est configuré par défaut la classe.

Sauf que j'ai beau mettre array(3392,1295) je me retrouve avec un PDF qui fait 1196 sur 456 millimètres !!! Je ne comprends pas, et je ne trouve pas dans la classe comment j'arrive à ce miracle.

Si je veux mettre des dimensions en pixels, comment puis je faire pour retrouver un PDF de la même taille que celle spécifiée dans le $format ?



2) taille des marges
Je pense que le soucis est similaire. Mes marges ne sont pas correctement pris en compte. Voir pas du tout. Mon tableau est collé en haut de page et j'ai un grand espace vide en dessous. Mes marges droite et gauche sont identiques alors que j'ai spécifié des valeurs différentes. Est ce parce que je travaille en px ?
J'ai voulu utiliser l'array dans le constructeur pour spécifier les marges mais y mettre des valeurs en pixel n'a pas du tout arrangé mes affaires.
Ma question est donc similaire, comment puis je spécifier des marges en pixel et non en mm ?



3) des td vides qui n'ont pas la bonne hauteur.
Dans mon code, j'ai un tr td de séparation faisait une certaine hauteur. Dans le PDF de sortie, cette espace est hyper réduit et ne varie pas quelque soit la valeur que je peux mettre dans $Espacement.
Comment puis-je écarter mes 2 lignes d'images pour que le PDF de sortie conservent la valeur en pixel (toujours) que je lui ai indiqué ?




Pour info, l'idée est d'avoir un planche pour imprimer des PNG avec des écartements bien spécifiques et des marges bien précises car les imprimants sont faites exprès pour. Il FAUT que je génère un PDF d'une taille bien précise avec des éléments positionnés au pixel près. Comme c'est de l'impression, je n'ai que des tailles en pixel avec un résolution de 300 DPI. Chaque image fait 600*600pixel et j'ai des écartements de 300 pixels à respecter (en moyenne).
J'ai beau construire un table en fixant toutes les width/height de chaque td. Mes valeurs en pixels sont corrects sauf que html2pdf me sort un PDF 4 fois trop grand. Si je l'ouvre dans Photoshop, il fait dans les 18000 pixels de large au lieu de 3000 au départ.

J'aimerais vraiment comprendre comment se fait les conversions des formats, je pourrais peut être anticiper les changements et prévoir des valeurs pré calculées.


Merci d'avance pour toute info relative smile

2

html2pdf faisant des PDFs, il travaille intégralement avec des mm, et il est impossible de changer cela... un PDF c'est en unité réelle (mm, pouce, ..) que ca se fait, pas en pixel (qui est une unité virtuelle en soit)...

donc il faut convertir tous les px en mm. 600px en 300dpi => combien ca fait de mm ?
et bien préciser cette largeur et cette hauteur sur les images.

ensuite, vu ce que tu veux faire, vu que tu utilises des tables assez compliqués avec des td d'espacement et autre, il faut bien nettoyer le tableau pt de vue des margin, paddin, cellspacing, cellpadding, borders, border-collapse pour être sur que ca ne perturbe pas les dimensions.
Ancien pseudo : lolo

3

Petit retour rapide. Suite à ton conseils, j'ai tout passé en mm. En effet, ca fonctionne un peu mieux ^^ Je me bats encore avec des marges dans les td mais c'est deja plus proche de ce que je dois obtenir smile


Thx

4

pour les marges, essaye avec border-collapse: collapse, et en mettant bien les paddings et margin à 0
Ancien pseudo : lolo

5

C'est ce que j'ai fait, et effectivement ca a bien cleané mes erreurs de marge. Thx a lot, j'y suis arrivé smile


(PS : par contre mettre un border 1px solid sur mes TD pour voir mon tableau créé des petits décalages de marges, ca créé d'ailleurs une ligne très épaisse, plus que 1px wink)