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] impression d'étiquettes avec FOP


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 84
    Par défaut [XSL-FO] impression d'étiquettes avec FOP
    Bonjour,

    Au départ d'un fichier xml de la forme
    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
     
    <adresses>
     <etiquette id="1">
       <genreNom>M Dupond</genreNom>
       <institution>BLA</institution>
       <adresse>Avenue de la révolution 3</adresse>
       <cpVille>59635</cpVille>
     </etiquette>
     
     <etiquette id="2">
       <genreNom>M Durand</genreNom>
       <institution>BLABLA</institution>
       <adresse>Avenue de la révolution 5</adresse>
       <cpVille>59635</cpVille>
     </etiquette>
    </adresses>
    J'aimerais bien imprimer ce fichier dans un pdf avec FOP, ce fichier pdf serait au format A4 portrait. La page A4 est divisées en 21 étiquettes de 70mm sur 42mm, donc 3 colonnes de 7 étiquettes.

    J'ai essayé de faire un tableau à trois colonnes et de remplir automatiquement ce tableau dans le fichier xsl et pour le moment, je ne remplis que ce tableau sur la première colonne.
    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
     
    <fo:table-body>
     <fo:table-row>	
      <xsl:for-each select="etiquette">		
       <fo:table-cell>				
        <fo:block height="4.2cm" padding="2px">
         <xsl:value-of select="genreNom" /><fo:block />
         <xsl:value-of select="institution" /><fo:block />
         <xsl:value-of select="adresse" /><fo:block />
         <xsl:value-of select="cpVille" /><fo:block />
        </fo:block>				
       </fo:table-cell>
      </xsl:for-each>
     </fo:table-row>					
    </fo:table-body>
    Je sais que je dois encore ajouter deux cellules par ligne, mais comment faire pour que le remplissage du tableau se fasse de gauche à droite puis de bas en haut ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    row veut dire rangée, dans le cas présent, "ligne."

    Les table-cell qui sont sur la même ligne doivent être dans le même table-row. Ceux qui ne doivent pas être sur la même ligne doivent être dans des table-row différents.
    Oui, c'est chiant.

    Un truc genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!-- Pour chaque étiquette qui se trouvera en première colonne -->
    <xsl:for-each select="etiquette[position() mod 3 = 1]">
      <fo:table-row>
         <fo:table-cell/>
         <xsl:for-each select="following-sibling::etiquette[3 > position()]">
           <fo:table-cell/>
         </xsl:for-each>
      </fo:table-row>
    </xsl:for-each>
    Il y a d'autres manières de le poser, mais c'est toujours assez casse-bonbon.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 84
    Par défaut
    J'ai contourné le problème.

    Je définis directement le format étiquette dans le fichier XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <fo:simple-page-master master-name="adresses" page-height="42mm" page-width="70mm" margin="1mm">
    Au final, j'ai donc une étiquette par page du fichier pdf qui est généré par FOP.

    Lorsque je veux imprimer ce fichier pdf sur la feuille A4 avec les étiquettes, dans la boîte de dialogue de l'imprimante, il ne me reste qu'à sélectionner les options d'impression suivantes :
    Gestion de la page >
    Mise à l'échelle : plusieurs pages par feuilles
    Pages par feuille : personnaliser 3 par 7 (par exemple)
    J'ai donc bien mes 21 étiquettes par page, réparties en 3 colonnes de 7.

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

Discussions similaires

  1. [JAVA][XSL-FO] Mise en forme avec FOP
    Par toMuch dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 08/09/2010, 13h18
  2. [XSL-FO]Probleme avec FOP
    Par clairepar dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 26/02/2008, 21h54
  3. page xsl avec FOP a partir d un xml
    Par fife59 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/06/2006, 10h03
  4. [XSL] liste à puces avec FOP ?
    Par Amerok dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/12/2005, 11h29
  5. [XML][XSL][FOP] transformation xml avec fop
    Par Le Marlou dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 05/12/2003, 16h58

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