IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSL-FO] comportement bizarre avec tableau


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Par défaut [XSL-FO] comportement bizarre avec tableau
    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" :

    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>
    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...


    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 :

    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>
    (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à...)

    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 suggestions Je continue les investigations de mon côté...

  2. #2
    Membre chevronné Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Par défaut
    Bon, après quelques tests, j'ai trouvé une solution satisfaisante :

    A la place de déclarer mon tableau dans la partie statique et de multiples "retrieve-marker", j'ai placé un seul "retrieve-marker" qui va récupérer tout le contenu du tableau, block-container y compris, et c'est dans le flow que j'ai un marqueur qui contient toute la déclaration : block-container, table, et les différentes lignes...

    ça alourdi un peu mon fichier .fo final (0.3 Mo en +) mais ça a le mérite de ne plus poser de problèmes d'espacements horizontaux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comportement bizarre avec js
    Par Gr@nd@x dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/01/2011, 16h36
  2. Comportement bizarre avec un pointeur
    Par esteban dans le forum Langage
    Réponses: 7
    Dernier message: 15/07/2010, 14h05
  3. [A-07] Comportement bizarre avec Jointure
    Par mayekeul dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 06/02/2009, 12h48
  4. Comportement bizarre avec le SQL a la carte
    Par fatatov dans le forum Deski
    Réponses: 2
    Dernier message: 11/07/2008, 16h47
  5. [TRANSAQ SQL] INSERT comportement bizarre avec les REAL
    Par argyronet dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/12/2005, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo