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

XML/XSL et SOAP Discussion :

meilleur solution pour créer un document imprimable???


Sujet :

XML/XSL et SOAP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut meilleur solution pour créer un document imprimable???
    bonjour je cherche à créer un documentimprimable à partir d'un flux xml. On m'a parlé de xsl fo, qui peut transformer en pdf, mais il ya ptete d'autres chose de mieux? Ou un autre format que pdf?

    alors si quelqu'un pouvait maiguiller
    merci

  2. #2
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Salut,

    A mon avis, il n'y a pas beaucoup mieux que le pdf en format imprimable.
    En plus, tu peux facilement enregistrer le flux qui n'est d'ailleurs pas modifiable avec Acrobate Reader...

    :o

  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 663
    Par défaut
    une autre solution serait de créer un document XHTML en XSL.
    maintenant avec CSS, il est possible de faire des belles présentation mais il est vrai qu'il y a plus de possibilitées avec PDF

  4. #4
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut Re: meilleur solution pour créer un document imprimable???
    Citation Envoyé par martimacfly
    je cherche à créer un documentimprimable à partir d'un flux xml.
    Quel éditeur utilises tu :
    En quoi développes tu :

    A+ :o

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut
    c'est un flux d'information venant de page fait en jsp avec instruction jsf donc en java en gros koi.

  6. #6
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Il est donc clair que tu vas pouvoir utiliser FOP (mais il en existe d'autres) pour générer du pdf (si c'est le format que tu choisis).

    Citation Envoyé par martimacfly
    ... donc en java ...
    Quel EDI utilises tu :

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut
    FOP koikesse?

  8. #8
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Citation Envoyé par martimacfly
    FOP koikesse?
    Je te file l'adresse du site officiel : jettes y un oeil et si tu veux des explications suppémentaires, n'hésite pas.

    http://xml.apache.org/fop/index.html

    A+ 8)

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut
    alors je n'hésite po :-)
    mes questions st:
    c'est apparemment une version béta, alors n'est ce po trop buggué?
    Si on peut le mettre en prod ?
    Et aussi le mode de fonctionnement ( je c ke c expliké sur leur site mais je voudrais savoir étape par étape à partir du serveur appache jusqu'au pdf, et les flux qui circule pdt tout ça )
    Et encore les autres méthodes possibles pour programmer un truc en java qui me ressortirais du pdf . ( style xsl/fo peut-être ).
    merci @+

  10. #10
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Citation Envoyé par martimacfly
    alors je n'hésite po :-)
    T'as raison.

    Citation Envoyé par martimacfly
    c'est apparemment une version béta, alors n'est ce po trop buggué?
    Perso, je n'ai jamais eu aucun bug avec FOP et les résultats obtenus sont excellents. 8)

    Citation Envoyé par martimacfly
    Si on peut le mettre en prod ?
    Oui, d'ailleurs je le mets en prod en octobre.

    Citation Envoyé par martimacfly
    Et aussi le mode de fonctionnement ( je c ke c expliké sur leur site mais je voudrais savoir étape par étape à partir du serveur appache jusqu'au pdf, et les flux qui circule pdt tout ça )
    Tout d'abord, il faut télécharger les classes relatives à FOP et les intégrer à ton projet.
    Ensuite, il te faudra créer une feuille xslt-fo : nécessaire pour passer d'un flux XML à un flux PDF. Tu en trouveras des exemples sur le forum XML/XSL SOAP.
    Puis, il faut connaitre le format de ton flux XML : une simple String ou un fichier :
    Perso, je traite une String donc c'est l'exemple que je vais traiter.
    J'ai créé une méthode "xmlToPdf" qui renvoie un byte[] (indispensable) et qui prend en paramètre un chemin xsl (String) et un document JDOM (flux XML doit être transformer au préalable avec méthode xmlToJdom), que voici :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    /**
     * Retourne un tableau de bytes à partir d'un doc JDOM et d'un fichier xslt
     * 
     * @param xsltPath
     * @param xml
     * @throws FlowException
     */
    public static byte[] xmlToPdf(String xsltPath, Document documentJDOM) throws Exception {
     
    	// Declaration	
    	Transformer transformer;
    	Source src;
    	Result res;
    	ByteArrayOutputStream out;
    	Driver driver;
    	Logger logger;
    	byte[] content;
     
    	// Initialisation
    	transformer = null;
    	src = null;
    	res = null;
    	out = null;
    	driver = null;
    	logger = null;
    	content = null;
     
    	try {
    		out = new ByteArrayOutputStream();
    		driver = new Driver(); 
     
    		// Setup logger
    		logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
    		driver.setLogger(logger);
    		MessageHandler.setScreenLogger(logger);
    		driver.setRenderer(Driver.RENDER_PDF);
    		driver.setOutputStream(out);
     
    		transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(new File(xsltPath))); // Setup input for XSLT transformation	
    		src = new JDOMSource(documentJDOM); 
     
    		//Resulting SAX events (the generated FO) must be piped through to FOP
    		res = new SAXResult(driver.getContentHandler()); 
     
    		//Start XSLT transformation and FOP processing
    		transformer.transform(src, res);
    		content = out.toByteArray();
     
    		return content;
    	} catch (TransformerConfigurationException e) {
    		throw e;
    	} catch (TransformerFactoryConfigurationError e) {
    		throw e;
    	} catch (TransformerException e) {
    		throw e;
    	}
    }
    Méthode "xmlToJdom" :
    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
    30
    31
    32
    33
     
    /**
     * Permet de recuperer un objet JDOM a partir d'un flux XML
     * sous forme de chaine de caractères
     * 
     * @param String strXML
     * 
     * @return org.jdom.Document
     * 
     * @throws Exception
     */
    public static Document stringToJdom(String strXML) throws Exception {
     
    	// Declaration
    	InputSource inputSource;
    	SAXBuilder saxBuilder;
    	Document doc;
     
    	// Initialisation
    	inputSource = null;
    	saxBuilder = null;
    	doc = null;
    	inputSource = new InputSource(new StringReader(strXML));
    	saxBuilder = new SAXBuilder();
    	try {
    		doc = saxBuilder.build(inputSource);
    	} catch (JDOMException e) {
    		throw e;
    	} catch (IOException e) {
    		throw e;
    	}
    	return doc;
    }
    Donc, tu intègres tout ça dans une servlet pour afficher ce flux pdf avec Acrobate reader (par exemple) :
    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
    30
    31
     
    public class RenderPdfServlet extends HttpServlet {
     
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    		// Déclarations
    		String xsltPath = "D:\\ds-fo.xsl";
    		Document docXml = null;
    		byte[] content = null;
     
    		try {
     
    			// Transformation du document jdom en tableau de bytes
    			content = Utilitaire.xmlToPdf(xsltPath, docXml);
     
    			System.out.println("preparation de la reponse");
    			response.setContentType("application/pdf");
    			response.setContentLength(content.length);
    			response.getOutputStream().write(content);
    			System.out.println("avant flush");
    			response.getOutputStream().flush();
    			System.out.println("fin flush");	
     
     
    		} catch (Exception e) {
     
    			throw new ServletException(e);
    		}
    	}
    }
    Si tu travailles sur des pages jsp, tu peux lancer ta servlet dans un html:link (par exemple) avec le href suivant : href="http://localhost:9080/tonProjet/taServlet"

    Citation Envoyé par martimacfly
    Et encore les autres méthodes possibles pour programmer un truc en java qui me ressortirais du pdf . ( style xsl/fo peut-être ).
    Le xsl-fo n'est pas une autre méthode mais une méthode complémentaire à FOP.

    Je ne sais pas si j'ai été très clair (car peu de temps) mais j'eqpère que cela va t'aider à démarrer.
    Encore une fois, n'hésites pas à renvoyer un post si tu veux des précisions.

    Bon courage.

    A+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut

    merci pour tout ça je vé potasser ce ke tu ma donner et je pense kan mm avoir besoin à un moment ou a un autre .

    Sinon ta mise en prod, c une mise en prod pr un projet perso ou pr une société et si une société laquelle ( sans être insdiscret). Car mon truc fo qu'il soit kan meme beton c voué à l'avenir à gérer bcp de truc dc le plantage n'est po permis.


  12. #12
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Citation Envoyé par martimacfly
    Sinon ta mise en prod, c une mise en prod pr un projet perso ou pr une société et si une société laquelle ( sans être insdiscret). Car mon truc fo qu'il soit kan meme beton c voué à l'avenir à gérer bcp de truc dc le plantage n'est po permis.
    C'est pour une société qui fait de l'échange de données informatisées et là aussi, le plantage n'est pas permis.

    A+

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut

    je viens de parcourir ton code et je vé é c yé de récapituler
    dit moa si je me trompe mais ta méthode xmlToJdom ne devrait-elle po ê avant xmlToPdf (je c bien que ça na po d'importance en java mé c juste por comprendre l'ordre logique du truc).
    l'application donnera:

    données (en fait ce sera des set qui contiendront les données dont g besoin)
    -->
    appli java (on utlise sax ou dom ?pr créer un flux xml à partir des données en entrées)
    -->
    ensuite interviendrait ta méthode xmlToJdom (c ça?)
    -->
    enfin c avec xmlToPdf que tu crée un flux pdf que tu envoie ou ke tu veux selon ton traitement ( moi j'utiliserais du jsf)

  14. #14
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Mea culpa, dans l'ordre des choses, j'aurais dû te l'écrire avant. Mais dans l'absolu, tu peux l'appeler après l'avoir déclarer : ça marche quand même.

    En tout cas, je vois que tu as tout compris.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut

    merci merci, mais je ne cris po victoire pr autant car il me reste du boulot (surtout le xsl:fo à mon avis car pour le reste grace à toi je vé é c yé de repiquer un peu de code)

    Donc à très bientôt je pense et encore merci c cool une communauté comme ça

  16. #16
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Te voilà un site qui devrait t'aider pour débuter en xsl-fo :

    http://zvon.org/xxl/xslfoReference/Output/index.html

    Bon courage.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut
    g une autre question :

    tu m'a dit n'avoir po u de pb et kil ne plantait po fop, mais apparemment le projet n'est plus suivi ce ki pose le problème de l'évolutivité futur de cette méthode ça serait dommage de recoder tout ce module si on change de tek.
    Qu'en pense tu?

  18. #18
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Citation Envoyé par martimacfly
    g une autre question :

    tu m'a dit n'avoir po u de pb et kil ne plantait po fop, mais apparemment le projet n'est plus suivi ce ki pose le problème de l'évolutivité futur de cette méthode ça serait dommage de recoder tout ce module si on change de tek.
    Qu'en pense tu?
    merci d'ecrire francais,les regles de ce forum imposent un minimum d'orthographe et l'interdiction d'utiliser un style sms ou s'en approchant

  19. #19
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Par défaut
    Citation Envoyé par martimacfly
    tu m'a dit n'avoir po u de pb et kil ne plantait po fop,
    C'est le cas, ça fait 3 mois que j'ai intégré les classes java relatives à FOP dans mon projet et je n'ai vraiment aucun soucis.
    Les documents pdf que je génèrent non jamais buggués.

    No problem

    Citation Envoyé par martimacfly
    mais apparemment le projet n'est plus suivi
    Qu'est ce que tu entends par "n'est plus suivi" :

    Ces classes, au jour d'aujourd'hui, sont tout à fait utilisables en l'état.
    Mais si demain il existe un autre groupe de classes permettant la génération de pdf, libre à toi de faire évoluer ton projet avec ces nouveaux outils.
    Tout est une question de choix technologique : perso, j'ai choisi FOP et je n'ai pas encore trouvé de raison de m'en plaindre.

    Peut être que d'autres internautes du forum pourraient nous donner leur avis sur le sujet :

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Par défaut
    je voudaris savoir ce ke tu entend par çà : String xsltPath ,c'est une chaine de caractère indiquant l'endroit ou se trouve le xsl/fo ?
    et g aussi lu un post ki disait ke tu pouvait po faire un pdf a partir d'un flux xml mais il fallait un fichier xml?
    et sinon comment ferais-tu pr valider ton flux xml ( ou Jdom je c po trop ) avec une dtd si c possible.

Discussions similaires

  1. Solution pour créer des formulaires imprimables
    Par sinbad007 dans le forum Général Java
    Réponses: 2
    Dernier message: 28/05/2011, 13h05
  2. Solutions pour créer des formulaires imprimables en Java
    Par sinbad007 dans le forum Documents
    Réponses: 1
    Dernier message: 28/05/2011, 09h20
  3. La meilleur solution pour créer un XML
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/12/2007, 21h32
  4. Quelle est la meilleure solution pour créer des Web Services?
    Par Flipmode dans le forum Services Web
    Réponses: 1
    Dernier message: 26/04/2007, 15h12
  5. [Conception] Meilleures solutions pour gérer le multilangage
    Par scorpiwolf dans le forum Général Java
    Réponses: 3
    Dernier message: 06/07/2004, 16h11

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