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. #21
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par martimacfly
    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 ?
    Tout à fait. :o

    Citation Envoyé par martimacfly
    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?
    C'est totalement faux.
    L'exemple que je t'ai donné te permet bien de transformer un flux XML (et non un fichier) en un document JDOM (=document XML) puis de transformer ce document en un byte[] (flux PDF). Ensuite ce flux PDF est interprété par la servlet et affiché à l'écran en utilisant le logiciel permettant la lecture des pdf.

    Pourrais tu me copier le lien de ce post, STP. Merci.

    Citation Envoyé par martimacfly
    et sinon comment ferais-tu pr valider ton flux xml ( ou Jdom je c po trop ) avec une dtd si c possible.
    Là, j'avoue que mes connaissances sont plus limitées : le flux XML que j'utilise a déjà été validé avant que je le récupère sous forme d'un simple String. Je me renseigne lundi et je te tiens au courant.

    A+

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Points : 15
    Points
    15

  3. #23
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Salut,

    Ils ne sont pas très catégoriques dans ce post. :o

    L'un se demande ci c'est possible alors que l'autre pense que ça ne l'est pas... Je leur ai envoyé la méthode transformant du JDOM en PDF : je pense que ça va les aider.

    A+

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Points : 15
    Points
    15
    Par défaut g réussi mais...
    ayé j'ai réussi !

    mais g po utilisé mon idée de départ en fait g utilisé itext pour convertir du html en pdf, et ce html est généré par une jsp(en fonctiono d'une requète biensur), enfin bref c po le but de ma question du jour.

    Voila, sur mozilla j'arrive à afficher le pdf sans soucis, mais kan j'arrive sur ie ce fameux ie et bien la tu a pdf qui se lance et puis ............ rien ça s'arrêtte la ça se bloque:
    voila mes source ( po encore nétoyer comme vous pourrez le remarquer):
    web.xml
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
                             "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
        <!-- Faces Servlet -->
        <servlet>
            <servlet-name>impression</servlet-name>
            <servlet-class>com.x.test.web.Imprime</servlet-class>
        </servlet>
        <!-- Faces Servlet Mapping -->
        <servlet-mapping>
            <servlet-name>impression</servlet-name>
            <url-pattern>/imprime.pdf</url-pattern>
        </servlet-mapping>
    </web-app>
    ici une classe ki me sert à intercepter le flux avant kil aille chez le client
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    package com.x.test.web;
     
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletResponseWrapper;
     
     
     
    /**
    * Cette classe encapsule une HttpServletResponse avec un buffered output.
    * You can use this to forward or include a Servlet or JSP page
    * and capture the output from it.
    *
    * Use getOutput to get the output which was written to the response.
    * Only buffers the Writer. Not the OutputStream !!
    *
    * 
    */
    public class BufferedHttpResponseWrapper extends HttpServletResponseWrapper {
     
    	PrintWriter writer = null;
    	ByteArrayOutputStream baos = null;
     
    	/**
    	* Constructor for BufferedHttpResponseWrapper.
    	* Create a new buffered Writer
    	*
    	* @param response The response object to wrap
    	*/
    	public BufferedHttpResponseWrapper(HttpServletResponse response) {
    		super(response);
    		baos = new ByteArrayOutputStream();
    		writer = new PrintWriter(baos);
    	}
     
    	/**
    	* Return the buffered Writer
    	*
    	* @see javax.servlet.ServletResponse#getWriter()
    	*/
    	public PrintWriter getWriter() throws IOException {
    		return writer;
    	}
     
    	/**
    	* Return the output written to the Writer.
    	* To get the output, the Writer must be flushed and closed.
    	* The content is captured by the ByteArrayOutputStream.
    	*
    	* @return
    	*/
    	public String getOutput() {
    		writer.flush();
    		writer.close();
    		return baos.toString();
    	}
     
    	public InputStream getInputStream() {
    		writer.flush();
    		writer.close();
    		return new ByteArrayInputStream(baos.toByteArray());
    	}
    }
    ma classe principale ki converti
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    package com.x.test.web;
     
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.xml.sax.SAXException;
     
    import com.lowagie.text.Document;
    import com.lowagie.text.DocumentException;
    import com.lowagie.text.PageSize;
    import com.lowagie.text.html.SAXmyHtmlHandler;
    import com.lowagie.text.pdf.PdfWriter;
    /**
     * <b>.</b><br>
     * .
     * @author Nicolas Martineau
     * @since 5 juil. 2004
     */
    public class Imprime extends HttpServlet {
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    		throws IOException, ServletException {
    			/* ... do stuff in Servlet */
    			//PrintWriter out = response.getWriter();
    			response.setContentType("application/pdf"); 
    			BufferedHttpResponseWrapper wrapper = new BufferedHttpResponseWrapper(response);
     
    			ServletContext context = request.getSession().getServletContext();
    			String url = response.encodeRedirectURL("/MiseEnPage.jsp");
    			//System.out.println("code html:" + response.getOutputStream()); 
    			RequestDispatcher dispatcher = context.getRequestDispatcher(url);
     
    			/* must use include. With forward the RequestDispatcher seems to hold an
    			internal state
    			which prevents to do a forward after this to return to the webclient
    			*/
    			dispatcher.include(request, wrapper);
     
    			Document document = new Document(PageSize.A4, 80, 50, 30, 65);
    			try {
    				//PdfWriter.getInstance(document, new FileOutputStream("f:/test.pdf"));
    				PdfWriter.getInstance(document, response.getOutputStream());
    				// step 3: we create a parser and set the document handler
    				SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
     
    				// step 4: we parse the document
    				parser.parse(wrapper.getInputStream(), new SAXmyHtmlHandler(document)); 
     
     
    			} catch (FileNotFoundException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (DocumentException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (ParserConfigurationException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (SAXException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (FactoryConfigurationError e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
     
     
     
    	}
    }
    et enfin ma jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%@ page language="java" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Lomboz JSP</title>
    </head>
    <body bgcolor="#FFFFFF">
    <br/>
    <% out.print("Salut Mec"); %>
     
    </body>
    </html>
    voila alors pourquoi ça marche avec mozilla et po avec ie ?

  5. #25
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut

    Alors, avec FOP, tu n'as pas réussi à obtenir ce que tu voulais :
    Ce que je t'avais passé aurait pu te permettre d'arriver à un résultat, non :

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    si si g é c yé avec fop javé ce ke je voulais car il me faisais du pdf mé c po l'ideal car tu doit fer un xsl/fo et kan tu veux le modifier c po top, mais merci kan meme car à la base je savais po lequel j'allais prendre.

    Donc tu voit avec itext c plus simple car le html je code en dur ds une jsp et je met d balise jsp pr les var et c bcp plus simple pr la modif tu vois et ça marche bien.
    Sinon pr le pb d'ie ta po une id?

  7. #27
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par martimacfly
    ...car tu doit fer un xsl/fo et kan tu veux le modifier c po top...
    Justement, c'est l'intérêt du XSL en général mais aussi du XSL-FO, cela fonctionne comme une feuille de style. Si tu as besoin de modifier l'allure de ton pdf, tu as juste à modifier cette "feuille de style". Tu peux donc en créer plusieurs et les appeler en changeant seulement le chemin XslPath...

    Citation Envoyé par martimacfly
    ...car le html je code en dur ds une jsp et je met d balise jsp pr les var
    Voilà, le xsl-fo t'évite de coder en dur. Mais c'est vrai que cela dépend de ce que tu veux faire. :o

    Citation Envoyé par martimacfly
    c bcp plus simple pr la modif tu vois et ça marche bien.
    Dans ces cas là, c'est sûr qu'il ne faut pas se priver.

    Citation Envoyé par martimacfly
    Sinon pr le pb d'ie ta po une id?
    Sous IE, ça marchait avec FOP et une feuille XSL-FO, non :
    Non, non, je plaisante, mais désolé je ne vois pas d'où vient le problème.


    Bon courage.

    A+

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