Bonjour bonjour,
J'ai un souci qui semble venir du couple html/css, si quelqu'un peut me donner un avis voire un moyen de contournement j'en serais reconnaissant.
Pour situer un peu le contexte, j'ai un script xsl (version 1.0, ce qui complique déjà pas mal les choses) qui récupère des infos dans un fichier XML et génère via la méthode html un fichier PDF.
Perso, je trouve ça chaotique, mais c'est un ERP bien spécifique qui mouline tout ça, et j'ai (pour cette situation) le malheur d'être plus porté sur l'infra que le développement.
J'en viens donc au body, qui est composé de balises HTML, sinon j'aurais l'impression d'être dans la mauvaise section.
L'affichage est géré dans des balises <p>, par exemple :
Pour gérer les interlignes de TelleClasse, qui étaient un peu trop espacés, j'ai modifié le .css de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <p class="TelleClasse" align="left" valign="center"> instructions XSL </p>
Pour la plupart de mon affichage, c'est OK, mais j'ai une section (toujours dans un <p>) qui semble "manger" les interlignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 font-family: Aptos ; font-size: 9pt; line-height : 0.70em;
Sur les autres parties, j'ai un interligne "constant" d'environ 3mm, et pile sur cette partie j'ai une absence totale d'interligne :o
La différence de cette partie est qu'elle fait appel à un template XSL pour remplacer les retours chariots par des balises <br /> "propres" :
Tel que je le comprends, ce script récursif remplace le caractère ASCII du retour chariot par un <br /> à chaque occurrence de façon récursive (j'ai un peu de restes de mes cours d'algorithme quand même).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <xsl:template name="br-replace"> <xsl:param name="string"/> <xsl:choose> <xsl:when test="contains($string,'
')"> <xsl:value-of select="substring-before($string,'
')"/> <br/> <xsl:call-template name="br-replace"> <xsl:with-param name="string" select="substring-after($string,'
')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$string"/> </xsl:otherwise> </xsl:choose> </xsl:template>
J'ai toujours un doute sur le template XSL en rédigeant ce message, mais je précise que j'avais au départ mis la section posant problème dans une balise <pre> (qui me permettait de l'afficher avec ses retours chariots MAIS toujours avec ce problème d'interligne trop réduit), avec bien sûr les mêmes propriétés pour le <pre> que pour les <p>.
Tel que je le comprends, dans les autres balises <p>, les <br /> sont interprétés correctement et ma hauteur de ligne (line-height) dans le css est respectée.
Mais pour cette partir, alors que le contenu renvoyé par le XSL contient les mêmes balises <br /> et que j'affiche ça dans un <p> tout pareil que les autres, l'interligne est supprimé, comme si une autre directive line-height s'appliquait ou je ne sais quoi.
J'espère que ma façon de présenter mon problème est compréhensible (pour des questions de confidentialité des données, je ne peux pas fournir de scan du rendu PDF, et je doute que mettre des centaines de lignes de code aidera à cibler ce qui cloche.
J'espère également que mon ressenti est bon et que mon post est donc dans la bonne section, si pas j'en présentes mes excuses d'avance.
Et du coup, merci d'avance aux personnes qui liront mon fouillis et qui m'aideront![]()
Partager