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]Affichage d'une image à partir d'un blob


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut [xsl-fo]Affichage d'une image à partir d'un blob
    Bonjour à tous !

    Je voulais savoir comment faire pour afficher une image à partir d'un blob.

    Lorsque l'image est disponible dans le dossier src, on peut l'afficher de cette façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <fo:external-graphic src=\"file:src/test.jpg\"/>
    Par contre, dans mon cas, je récupère un blob à partir d'une base de données.

    J'aimerais savoir ce que je dois mettre dans le src pour pouvoir l'afficher.

    Merci d'avance !

  2. #2
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Bonjour,

    Vous pouvez déjà regarder ce lien ci...

    Bon courage

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    Désolé mais ça ne m'aide pas du tout...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ben il faut que tu rende possible l'acces à ton image avec une URL pour que fop puisse y accéder (avec une petite servlet avec jdbc par exemple).
    Si ça avait été du svg, tu aurais pu l'inclure dans le xml avec un fo:instream-foreign-object.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    Pourrais-tu donner un exemple ?

    J'ai essayé avec ce code mais ça ne passe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <fo:instream-foreign-object content-type="image/jpg" height="50%" width="50%">
    <xsl:value-of select="FILE_DATA"/>
    </fo:instream-foreign-object>
    Pour 'image/jpg', il me dit 'illegal character'.

    Je ne comprend pas ce qu'il y a d'illégal !

    Help !

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Un code Xsl-fo lui tout seul ne peut se connecter à un base de donnée, il faut que tu utilises un programme pour extraire ton image de ta base dynamiquement et la rendre accessible via une URL.
    Ensuite ton xsl-fo pourra pointer cette URL.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    En fait, je suis dans un fichier java qui contient une fonction genereFOStringBuffer. A l'intérieur de cette fonction, je déclare la variable : StringBuffer fo = new StringBuffer();

    Ensuite j'utilise la syntaxe suivante :
    C'est donc en java que je récupère mon blob. Ensuite je voudrais utiliser une balise fo permettant d'afficher mon blob.

    Si cela n'est pas possible directement, je voudrais savoir comment faire à l'aide d'une servlet.

    Merci d'avance !

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ben pour faire simple tu peux extraire, via jdbc, le blob, le sauvegarder dans un fichier temporaire, et puisque tu en connaitras le nom et le chemin tu pourras y faire référence dans le xsl-fo.
    Si tu veux de l'aide en jdbc poste un message dans le forum approprié.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    J'arrive à extraire mon blob. Mais que doit faire exactement la servlet ?

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    La servlet c'est plus propre mais pas obligatoire dans ton cas, car tu peux passer par un fichier dynamique avant chaque rendering de xsl-fo.

    La servlet aurait eu pour role de rendre accessible en tant qu'image le contenu de ton blog via une URL.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    Quand tu parles de fichier dynamique, tu veux dire créer un fichier temporaire ?

    Dans mon cas, j'aimerais afficher mon image sans passer par un fichier.

    En gros, j'ai un blob que je veux placer dans une balise du style fo:external-graphic afin de l'afficher. Ce blob peut au préalable être converti en byte [] si nécessaire.

    Il y a bien une solution !

  12. #12
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    J'ai essayé de passer par une servlet.

    Je l'appelle grâce au code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <fo:external-graphic src="http://localhost:8080/test/ImgServlet">
    A l'exécution, je récupère l'erreur suivante :

    No ImageReader for this type of image (http://localhost:8080/test/ImgServlet).

    Comment puis-je faire pour résoudre ce problème ?

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Sans le code de la servlet je risque pas de pouvoir t'aider.

    Et pour répondre à ta précédente question, non tu ne peux pas passer depuis java un tableau de bytes à ton processeur xsl-fo.
    Ce dernier n'est pas sensé dépendre du contexte de son exécution, il faut lui donner acces au ressources via des url ou fichiers auquels il a acces.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    Sinon j'ai trouvé un truc pas mal.
    J'ai converti mon blob en byte [] puis en base 64. Je l'ai stocké dans la variable 'truc'.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <fo:external-graphic src="url('data:image/jpeg;base64,truc')"/>
    J'ai vu des sites où ce procédé est utilisé et cela fonctionne.

    Par contre, j'obtiens l'erreur suivante : "Error with image URL".

    Je pense que ça pourrait fonctionner.

    As-tu des infos sur cette méthode ?

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    En tout cas la norme xsl-fo ne definie que les graphiques SVG (car eux-même en xml) pouvant être inclu dans le document. Peut être que certain processeurs xsl-fo on leur mécanique propre, mais je ne la connais pas.
    Si tu trouve ça m'intéresse .

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/11/2014, 21h58
  2. Affichage d'une image à partir d'une autre
    Par Abc0123 dans le forum MATLAB
    Réponses: 4
    Dernier message: 30/09/2013, 15h50
  3. Affichage d'une image à partir d'un click
    Par za_za dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/11/2009, 15h45
  4. Réponses: 1
    Dernier message: 19/01/2006, 19h36
  5. Affichage d'une image à partir d'un client
    Par Aldur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2006, 10h44

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