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

BIRT Discussion :

BIRT API - disparition de div


Sujet :

BIRT

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut BIRT API - disparition de div
    Bonjour à tous,
    Je rencontre un petit souci avec l'api BIRT (version 3.7.2), j'essaye de générer un rapport en format html (avec une tâche RunAndRenderTask) pour pouvoir ensuite l'inclure dans une page de ma webapp et j'ai des div qui n'apparaissent pas (plus précisement la div et tout ce qui doit être à l'intérieur est bien dans le html mais avec une width:0;, ce qui fait que rien à l'intérieur de la div n'apparaît).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <tbody>
    <tr valign="top">
    <td valign="middle">...</td>
    <div class="style_6" style=" text-align:center; overflow:hidden;">Cimetière : Cimetière de Bletterans</div>
    </td>
    <td valign="middle">
    <div style="width:0;">
    <a title="Registre" target="_blank" href="run.do?__report=Registre.rptdesign">
    </div>
    </td>
    </tr>
    </tbody>
    Le rapport fonctionne parfaitement sur le viewer d'exemple disponible sur le site d'Eclipse ainsi que sur le Designer. Je suppose que cela vient d'une config qui n'est pas faite correctement mais impossible de trouver de quoi celà vient, si quelqu'un a une idée, je suis totalement preneur.

    Merci d'avance.
    MattU

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Regarde dans les propriétés de ta div (côté rptdesign) si tu n'as pas un petit width = 0 qui traîne), qui a forcer en auto.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut
    Bonjour,
    Merci pour ta réponse tout d'abord et désolé de ne pas être revenu avant, j'ai eu d'autres priorités. Je n'ai aucune width = 0 nul part et en fait en relisant le post, je me rend compte que j'ai oublié de préciser le principal. Je la refais donc.

    En haut de mon rapport, j'ai 3 images (3 fichiers jpg de 32*32 appelés depuis les ressources partagées) qui permettent normalement à l'utilisateur d'aller sur d'autres rapports.

    Pas de souci, lorsque je teste depuis le designer, il exécute mon rapport avec les 3 images cliquables qui m'emmènent bien sur mes différents rapports. Aucun souci non plus lorsque je teste avec la WebAppExample du package disponible sur le site d'éclipse.

    A côté de tout ça, je suis en train de développer une webapp ressemblant à la WebAppExample, elle permet de la même manière l'affichage d'un rapport en html, pdf, etc. L'exécution d'un rapport sous forme de fichier (pdf, xls, doc) se fait donc par une tâche RunAndRenderTask et les images s'affichent correctement lors d'un export en PDF.

    Pour l'affichage d'un rapport en html, j'utilise deux tâches. L'interêt des 2 tâches est que premièrement, j'utilise une RunTask qui me permet de générer mon rptDocument. De ce rptDocument, j'extrais la table des matières puis je génère le rendu avec une tâche RenderTask.
    Lorsque j'affiche le rendu, récupéré dans un OutputStream, le code html contient bien mes images ainsi que les liens mais il m'a ajouté le fameux width:0; qui cachent ces dernières.

    Le problème est, je pense, purement un problème d'utilisation de l'API BIRT. Il doit y avoir un truc, une option ou je ne sais quoi, que j'oublis d'affecter. Est-ce que cela pourrait venir du ActionHandler que je ne déclare pas ?
    Voilà un exemple du code qui est exécuté :
    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
    try {
        //On ouvre le rptDocument
        final IReportDocument document = this.birtEngine.openReportDocument(documentPath, null);
        //On créé la tâche
        renderTask = this.birtEngine.createRenderTask(document);
     
        //J'affecte la locale fr/FR
        renderTask.setLocale(locale);
        //Une timezone
        renderTask.setTimeZone(tz);
     
        //Création du HTMLRenderOption
        HTMLRenderOption renderOption = new HTMLRenderOption();
        renderOption.setOutputFormat("html");
        renderOption.setEmbeddable(true);
        renderOption.setImageDirectory(imageDirectory);
        renderOption.setBaseImageURL(baseImageUrl);
        renderOption.setImageHandler(new HTMLServerImageHandler());
     
        renderOption.setOutputStream(outputStream);
     
        //Affectation du renderOption
        renderTask.setRenderOption(renderOption);
     
        //J'exécute la tâche
        renderTask.render();
     
    } catch (Exception e) 
    {
        //throw Exception
    }
    Merci à tous ceux qui arriveront au bout du post et des éventuels retours que vous pourriez faire.

    MattU

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Points : 836
    Points
    836
    Par défaut
    Salut,

    Je ne pense pas que le width:0 soit le problème: le webviewer les met aussi quand on ne spécifie pas de largeur, mais il affiche tout de même le contenu quand il y en a un. Dans l'exemple du premier post, ce que je ne comprends pas c'est que l'image devrait apparaitre sous le lien <a>, et en plus ce lien n'a pas de tag de fin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div style="width:0;">
    <a title="Registre" target="_blank" href="run.do?__report=Registre.rptdesign">
    </div>
    On peut donc en conclure que le moteur rencontre une erreur en construisant l'image, où le lien de l'image. Je miserais sur un problème de répertoire "imageDirectory" qui n'existe pas, ou quelquechose comme ça. Quelques questions:
    - Comment est construit le lien "run.do?__report=Registre.rptdesign"? ça ne ressemble pas à un drillthrough traditionnel, c'est un actionHandler spécifique ou une expression que tu construis dans le rptdesign?
    - Quand l'erreur se produit le moteur BIRT a t-il généré les images temporaire dans le répertoire spécifié par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    renderOption.setImageDirectory(imageDirectory);
    Attention ce répertoire ne doit pas représenter l'emplacement source des images, mais une cible temporaire dans laquelle le moteur pourra les stocker en vue d'un rendu HTML.

    - Inspecte le log du Birt engine, il y a certainement un indice sur l'erreur

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut
    Bonjour,
    merci pour ta réponse.

    L'image apparait bien, le code html n'était pas complet dans le 1er post (décidément j'ai vraiment fait n'importe quoi, je m'en excuse, ca n'est pas mon habitude ^^).
    Voilà le code généré et tout est normal (j'ai supprimé l'url du lien pour un souci de place, elle est elle aussi tout à fait normale et fonctionnelle).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <td>
    <div style="width:0;">
    <a target="_blank" href="url">
    <img id="AUTOGENBOOKMARK_5_52596549-1c76-448a-8337-8ff290e4933d" style=" width: 32px;display: block;" alt="" src="/birt-viewer/getImage.do?__imageId=filee3d9d013d8d4a20e46.png">
    </a>
    </div>
    </td>
    Le répertoire du setImageDirectory est bien un répertoire temporaire dans lequel je copie mes images, elles sont bien présentes dans le répertoire lors de la demande de génération et de plus le lien getImage.do les trouves sans aucun souci (Firebug me trouve l'image et me l'affiche lorsque je scanne le code html).

    Ce qui me fait dire que le problème vient du width:0; c'est que toute la partie rouge dans le morceau d'html juste au dessus est bien montré comme invisible par firebug après l'affichage de la page. Par contre si je modifie cette propriété width:0; en width:32px; par exemple pour m'adapter à la largeur de l'image, elle s'affiche correctement.
    Je n'ai absolument aucune exception lors du run ou du render, aucune erreur de rendu, tout se passe correctement.

    Et pour le lien run.do, c'est en effet un ActionHandler spécifique qui me construit un lien de la manière dont je le souhaite. J'ai essayé avec ou sans, cela ne change strictement rien.
    J'avoue que je ne comprends pas de quoi cela peut venir et j'ai à peu près tout essayer ce que l'on peut trouver sur le net.

    En tout cas merci de votre aide à tout les deux. Si vous avez d'autres idées, je suis preneur.

    MattU

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Points : 836
    Points
    836
    Par défaut
    Etrange!

    A priori BIRT génére ce 'width:0' quand un hyperlink est défini sur une image. Apparemment cela a pour effet d'adapter la taille du DIV à son contenu, et ça fonctionne bien avec le viewer eclipse et sur une appli perso, mais dans ton cas pour une raison x le navigateur considère qu'il n'y a pas de contenu.

    En remplaçant le getImage.do par un URI en dur vers une image quelconque ça fait pareil ou ça fonctionne? Sinon je n'ai pas trop d'idée. Peut être une différence de DOCTYPE mais je n'y crois pas vraiment. Essaie en plus de définir la propriété "height" de l'image dans le designer

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut
    Tout d'abord, je tiens à m'excuser de vous avoir mobiliser tout les deux.

    L'erreur vient d'un fichier CSS inclus par mégarde dans la jsp utilisée pour afficher le résultat et qui cachait mon image.

    En tout cas, je préfère ça. Merci à tout les deux.
    MattU.

  8. #8
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Citation Envoyé par _MattU_ Voir le message
    Tout d'abord, je tiens à m'excuser de vous avoir mobiliser tout les deux.

    L'erreur vient d'un fichier CSS inclus par mégarde dans la jsp utilisée pour afficher le résultat et qui cachait mon image.

    En tout cas, je préfère ça. Merci à tout les deux.
    MattU.
    Sinon Firebug ça fonctionne bien

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

Discussions similaires

  1. Birt API 2.6.2 - Verrouillage fichier
    Par dodane dans le forum BIRT
    Réponses: 19
    Dernier message: 22/04/2013, 11h57
  2. Disparition de div
    Par clem166 dans le forum jQuery
    Réponses: 1
    Dernier message: 15/04/2013, 21h32
  3. Exporter via Birt API un report en EXCEL ou CSV
    Par blured dans le forum BIRT
    Réponses: 2
    Dernier message: 08/09/2008, 15h51
  4. [AIDE] Apparition/Disparition de DIV Progressif
    Par will74 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/03/2008, 18h36
  5. [CSS] Disparition de div avec IE
    Par galette dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 11/05/2006, 13h05

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