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

Documents Java Discussion :

Quelques réflexions sur un problème technique java/j2ee/FOP


Sujet :

Documents Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 113
    Points : 42
    Points
    42
    Par défaut Quelques réflexions sur un problème technique java/j2ee/FOP
    Bonjour,

    Je dois faire un programme en java qui génère plusieurs modèles d’un pdf, les imprime et les stocke dans un serveur de fichier.
    Après quelques lectures et recherches, j’ai opté pour xml/xsl et FOP.

    Donc j’ai quelques questions qui demandent quelques réflexions.

    A partir de mon programme java, je dois générer un fichier xml, c’est quoi la meilleure façon pour le faire ? Utiliser JDOM ? Le problème à chaque fois je dois créer tous les nœuds et les remplir par les données de la base ? ca ne va pas jouer sur les performances ? J’ai entendu parler de Cactus ? Quelqu’un l’a déjà utilisé ?


    Le même programme doit fonctionner en mode interface web qu’en mode batch, càd traitement de masse (à partir d’un ficher csv ou excel, générer les documents pdf, les imprimer et les stocker dans un serveur de fichier et cela pour toutes les lignes) c’est quoi la meilleur façon pour rendre mon programme générique pour les deux utilisations ?


    Comment je peux créer de pdf en multi-langues, c’est au niveau de mon xml ou xsl que je dois gérer cela ?

    Merci beaucoup pour vos suggestions

  2. #2
    Membre actif Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Points : 272
    Points
    272
    Par défaut
    Le mieux c'est de créer un service (web) qui se chargera de se traitement. Tu passe en paramètre le fichier xml, le doc xsl associé et ce que tu veut en faire (impression, envoi par mail, csv...). Le service se charge alors du traitement fop et des actions d'envois du document. Tu peut éventuellement chercher si un tel projet existe en open source.
    Pour la création du document xml tu peut essayer à partir d'un framework de parsing objet - xml (il y en a chez apache.)

    Enfin pour le le multilangue tu gère cela dans le document xsl comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:variable name="lngcod" select="PERSONNE/LNG_COD"/>
    <xsl:variable name="cpt" select="document('traduction.xml')/noms/nom[@elt='compte']/trad[@lang=$lngcod]"/>
    <xsl:variable name="lang">
    <xsl:choose>
    <xsl:when test="$cpt!=''">
    <xsl:value-of select="PERSONNE/LNG_COD"/>
    </xsl:when>
    <xsl:otherwise>
    <xsl:value-of select="'FR'"/>
    </xsl:otherwise>
    </xsl:choose>
    </xsl:variable>
    Le document traduction.xml contient les traductions et se situe au même endroit que le document xsl.
    Avec lngcod la variable de code langue que tu fourni dans la valeur du document xml (issue des données de la base) envoyé.
    Tu récupère une 1ère traduction dans le documents noms.xml à partir du contenu de lngcod (cpt dans cette exemple).
    Si la traduction récupéré est vide (cas d'une langue non gérée par ex) tu positionne la variable langue (lang) sur une langue de référence (ici 'FR') sinon tu positionne la variable lang sur lngcod.
    Ensuite partout dans le xsl tu fait référence à $lang comme ceci :
    <xsl:value-of select="document('traduction.xml')/noms/nom[@elt='payer']/trad[@lang=$lang]"/>

    Enfin le document traduction.xml est 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <noms>
    	<nom elt="compte">
    		<trad lang="BG"></trad>
    		<trad lang="CS"></trad>
    		<trad lang="DA"></trad>
    		<trad lang="DE"></trad>
    		<trad lang="EL"></trad>
    		<trad lang="EN">account</trad>
    		<trad lang="ES"></trad>
    		<trad lang="ET"></trad>
    		<trad lang="FI"></trad>
    		<trad lang="FR">compte</trad>
    		<trad lang="HU"></trad>
    	</nom>
    	<nom elt="payer">
    		<trad lang="BG"></trad>
    		<trad lang="CS"></trad>
    		<trad lang="DA"></trad>
    		<trad lang="DE"></trad>
    		<trad lang="EL"></trad>
    		<trad lang="EN"></trad>
    		<trad lang="ES"></trad>
    		<trad lang="ET"></trad>
    		<trad lang="FI"></trad>
    		<trad lang="FR">payer</trad>
    		<trad lang="HU"></trad>
    	</nom>
    </noms>
    Cette exemple existe sur internet et doit pouvoir se retrouver.
    En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 113
    Points : 42
    Points
    42
    Par défaut
    Bonjour,
    merci beaucoup pour ta réponse.
    sinon pour le multilangue, j'ai bien compris ta solution et ca fonctionne..
    mais j'ai un petit souci, pour le meme fichier xml, le contenu est different suivant les cas.. donc c'est aps mieux de stocker le tout dans la base de données au lieux du fichier xml, car sinon mon fichier va etre tres tres gros?

  4. #4
    Membre actif Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Points : 272
    Points
    272
    Par défaut
    Effectivement le mieux est de stocker les données dans la base. Ensuite tu récupère ces données dans ton application, tu recompose les données au format xml (dom4j par exemple) et tu envoie le document xml au serveur de document qui lui le parse.
    Sinon pour des documents dont tu ne connait pas la structure le stockage xml directement dans la base peut être une bonne solution. Charge à la partie qui récupère le document de faire la transformation.
    Dernière remarque pour générer des pdf itext s'avère également une solution pure java intéressante (meilleur performance).
    Maintenant il y a également la solution BIRT.
    En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !

Discussions similaires

  1. Test technique JAVA/J2EE
    Par leila92 dans le forum Emploi
    Réponses: 7
    Dernier message: 15/03/2007, 00h13
  2. [Emploi] Les tests techniques Java/J2EE c'est quoi ?
    Par dedeloux dans le forum Emploi
    Réponses: 6
    Dernier message: 27/04/2006, 16h35

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