Bonjour à tous,
Je suis en train de développer un outil permettant de générer du pdf à partir d'un document xsl-fo, en passant par FOP.
J'ai un comportement assez bizarre avec les tableaux, et je n'arrive pas à trouver la faille... Je m'explique...
J'ai d'abord un "static-content" avec pas mal de choses, dont une déclaration pour un tableau. A l'intérieur de ce tableau, je fais appel à des "marqueurs" :
Le vrai code est un peu plus complexe que ça, car il y a 3 languages différents, donc 3x le contenu actuel dans fo:table-body, mais bref...
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
17
18
19
20
21
22
23
24
25
26
27 <fo:block-container absolute-position='absolute' left='37px' top='260px'> <fo:table table-layout='fixed' width='300px' font-size='11px' font-family='Arial'> <fo:table-column column-width='300px'/> <fo:table-body> <fo:table-row height='10px'><fo:table-cell overflow='hidden' font-weight='bold'> <fo:block><fo:retrieve-marker retrieve-class-name='text01fr' retrieve-boundary='page' /></fo:block> </fo:table-cell></fo:table-row> <fo:table-row height='10px'><fo:table-cell overflow='hidden'> <fo:block><fo:retrieve-marker retrieve-class-name='text02fr' retrieve-boundary='page' /></fo:block> </fo:table-cell></fo:table-row> <fo:table-row height='10px'><fo:table-cell overflow='hidden'> <fo:block><fo:retrieve-marker retrieve-class-name='text03fr' retrieve-boundary='page' /></fo:block> </fo:table-cell></fo:table-row> <fo:table-row height='10px'><fo:table-cell overflow='hidden'> <fo:block><fo:retrieve-marker retrieve-class-name='text04fr' retrieve-boundary='page' /></fo:block> </fo:table-cell></fo:table-row> <fo:table-row height='10px'><fo:table-cell overflow='hidden'> <fo:block><fo:retrieve-marker retrieve-class-name='text05fr' retrieve-boundary='page' /></fo:block> </fo:table-cell></fo:table-row> <fo:table-row height='10px'><fo:table-cell overflow='hidden'> <fo:block><fo:retrieve-marker retrieve-class-name='text06fr' retrieve-boundary='page' /></fo:block> </fo:table-cell></fo:table-row> </fo:table-body> </fo:table> </fo:block-container>
Dans mon flow, pour chaque page, j'ai un container avec break-after='page' et dans ce container, différents marqueurs qui sont associés au retrieve-marker du static-content.
Maintenant, je ne sais pas très bien pourquoi, mais dans certains cas, j'ai des espacements horizontaux qui viennent s'ajouter dans le tableau... à la place d'avoir par exemple 4 lignes qui se suivent, j'ai 3 lignes de contenu, puis une ligne vide, puis la dernière ligne de contenu. Ou encore chaque ligne de contenu est suivi d'une ligne vide...
Pour le contenu de mon tableau, je peux par exemple avoir les marqueurs suivants :
(comme vous pouvez le voir, les premiers exemples intègrent un basic-link mais le dernier non, donc ça ne semble pas provenir de là...)
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
17
18
19
20
21
22
23
24
25
26
27
28
29 // exemple qui me mets un espace horizontal entre texte04 et texte 05 <fo:marker marker-class-name='text01fr'>Battue simple</fo:marker> <fo:marker marker-class-name='text02fr'>Modèle carrossable - 10 t</fo:marker> <fo:marker marker-class-name='text03fr'>Pour trafic lent</fo:marker> <fo:marker marker-class-name='text04fr'>Joint néoprène</fo:marker> <fo:marker marker-class-name='text05fr'>Poignée N° <fo:basic-link color='#ff0000' internal-destination='s16_p61'>9111</fo:basic-link></fo:marker> <fo:marker marker-class-name='text06fr'><fo:block /></fo:marker> // exemple qui me mets un espace horizontal entre chaque ligne de texte : <fo:marker marker-class-name='text01fr'>Modèle léger - 1 t</fo:marker> <fo:marker marker-class-name='text02fr'>Pose sur tuyau en béton</fo:marker> <fo:marker marker-class-name='text03fr'>Poignée N° <fo:basic-link color='#ff0000' internal-destination='s16_p60'>9110</fo:basic-link></fo:marker> <fo:marker marker-class-name='text04fr'><fo:block /></fo:marker> <fo:marker marker-class-name='text05fr'><fo:block /></fo:marker> <fo:marker marker-class-name='text06fr'><fo:block /></fo:marker> // exemple ou les 2 premières lignes sont ok, puis les 3 suivantes sont espacées <fo:marker marker-class-name='text01fr'>Eléments de 1 m de longueur</fo:marker> <fo:marker marker-class-name='text02fr'>Liaison longitudinale des grilles entre elles</fo:marker> <fo:marker marker-class-name='text03fr'>Joint néoprène</fo:marker> <fo:marker marker-class-name='text04fr'>Verrouillée</fo:marker> <fo:marker marker-class-name='text05fr'>Ouverture à l'aide d'un pic</fo:marker> <fo:marker marker-class-name='text06fr'><fo:block /></fo:marker>
Mon pdf final possède près de 300 pages... J'ai tenté de supprimer certaines pages s'affichant correctement pour n'avoir que les pages foireuses, et là comme par magie, les pages sont correctes... A n'y rien comprendre...
Si quelqu'un a une piste je suis preneur car de mon côté j'ai tenté différentes possibilités telles que coller toutes les balises plutôt que de les formater avec des retours à la ligne, tester si il n'y a pas des caractères de retour chariot invisible, mais rien n'y fait, quand ça ne veut pas, ça ne veut pas...
D'avance merci pour vos suggestionsJe continue les investigations de mon côté...
Partager