Infopath vers WordML, probleme d'image - InfoPath Dev
in

InfoPath Dev

Infopath vers WordML, probleme d'image

Last post 11-01-2006 01:23 AM by Christian. 2 replies.
Page 1 of 1 (3 items)
Sort Posts: Previous Next
  • 10-30-2006 06:46 AM

    Infopath vers WordML, probleme d'image

    Bonjour,
    J'aimerais faire une transformation d'un XML venant d'InfoPath vers du WordML. Cependant je suis confronté à un problème avec les images venant des champs de type XHTML.

    Plus précisément, j'arrive à récupérer les images et à les afficher avec ce code (qui vient du site:http://blogs.3sharp.com/Blog/davidg/):

    <xsl:template match="xhtml:img">
    <w:r>
    <w:pict>
    <w:binData>
    <xsl:attribute name="w:name">wordml://<xsl:value-of select="@src"/></xsl:attribute>
    <xsl:value-of select="@xd:inline"/>
    </w:binData>
    <v:shape id="_x0000_i1025" type="#_x0000_t75">
    <xsl:attribute name="style"><xsl:value-of select="@style"/></xsl:attribute>
    <v:imagedata>
    <xsl:attribute name="src">wordml://<xsl:value-of select="@src"/></xsl:attribute>
    </v:imagedata>
    </v:shape>
    </w:pict>
    </w:r>
    </xsl:template>


    Le problème ce pose pour les images venant du champ XHTML qui sont "flotante" (dans infopath, format de l'image: habillage du texte/gauche ou droite). En effet, je n'arrive pas à les transformer en WordML en les gardant cette mise en page ou l'image est intégrée au texte (dans word, format de l'image: habillage/encadré).
    Voilà ce que j'ai modifié dans mon code, afin d'essayer de résoudre ce problème:


    <xsl:template match="xhtml:img">
    <w:r>
    <w:pict>
    <w:binData>
    <xsl:attribute name="w:name">wordml://<xsl:value-of select="@src"/></xsl:attribute>
    <xsl:value-of select="@xd:inline"/>
    </w:binData>
    <xsl:choose>
    <!-- Gestion des images flotantes -->
    <xsl:when test="contains(@style, 'FLOAT') and not(contains(@style, 'none'))">
    <v:shape id="_x0000_i1025" type="#_x0000_t75">
    <!-- fonction pour récupérer le Width ou le Height dans l'attribut @style: -->
    <xsl:attribute name="style">position:absolute;margin-left:0;margin-top:0;width:
    <xsl:value-of select="substring-before(substring(normalize-space(translate(@style,'leftrightFLOATWIDTHHEIGHTpx:',' ')),2),';')"/>px;height:
    <xsl:value-of select="substring-after(substring(normalize-space(translate(@style,'leftrightFLOATWIDTHHEIGHTpx:',' ')),2),';')"/>px;
    z-index:1;mso-position-horizontal:left;mso-position-horizontal-relative:text;mso-position-vertical-relative:text</xsl:attribute>
    <v:imagedata>
    <xsl:attribute name="src">wordml://<xsl:value-of select="@src"/></xsl:attribute>
    </v:imagedata>
    <w10:wrap type="square"/>
    </v:shape>
    </xsl:when>
    <xsl:otherwise>
    <v:shape id="_x0000_i1025" type="#_x0000_t75">
    <xsl:attribute name="style"><xsl:value-of select="@style"/></xsl:attribute>
    <v:imagedata>
    <xsl:attribute name="src">wordml://<xsl:value-of select="@src"/></xsl:attribute>
    </v:imagedata>
    </v:shape>
    </xsl:otherwise>
    </xsl:choose>
    </w:pict>
    </w:r>
    </xsl:template>


    Dans ce code, le problème est qu'il faudrait donner la valeur de "margin-top" afin d'avoir l'image à la bonne hauteur dans le paragraphe Word. Cependant, je ne vois pas comment trouver cette valeur dans le XML d'infoPath.

    Si qqun à une idée c'est volontiers. Merci d'avance!

    Christian
  • 10-31-2006 01:46 AM In reply to

    Re: Infopath vers WordML, probleme d'image

    Salut,

    Tu dois indiqué la taille en point (ca je pense que tu le savais).

    Vu qu'a voir tu utilise C# (d'ailleurs sympa l'adresse du blog :) ) il faut que tu regarde dans le framework si il n'y a pas un moyen de calculer la hauteur et la largeur de ton image en base 64 ou déjà transformé. Sinon il faut rechercher sur code project ou csharp.fr s'il n'y pas quelquechose de déjà developpé...

    Car dans Infopath vu que le controle RichTextBox ne contiendra surement pas que ca et donc tu ne peux même pas récupérer la grandeur du carré de ta RTB (maintenant je peux me tromper j'ai jamais essayé j'ai la chance que toute mes image soit de la même grandeur)!

    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 11-01-2006 01:23 AM In reply to

    Re: Infopath vers WordML, probleme d'image

    Salut Virgul,

    Merci pour ta réponse.
    Cependant, ce n'est pas la hauteur/largeur de l'image que je recherche, car j'arrive à la trouver avec cette expression XPath:
    substring-before(substring(normalize-space(translate(@style,'leftrightFLOATWIDTHHEIGHTpx:',' ')),2),';'). C'est un peu du bidouillage :) mais ça marche ! En gros je change toutes les lettres de l'attribut @style en espace sauf un caractère de séparation ";". Ensuite je normalize-space, puis j'enlève le premier ";" et ensuite je récupère before ou after le ";" et j'ai width/height.

    En faite mon problème c'est pour placer l'image verticalement dans le paragraphe. Vu que le style est: position:absolue; il faut indiquer un margin-top:XXX; et l'image sera placée dans le paragraphe à XXX point de hauteur depuis le début du paragraphe. Et c'est cette hauteur que je souhaite trouver... mais où et comment... là je ne sais pas trop.

    Voilà, si t'as une idée, c'est pas de refus!
    a+


    PS: Switzerland! Moi je viens de Lausanne.
Page 1 of 1 (3 items)
Copyright © 2003-2019 Qdabra Software. All rights reserved.
View our Terms of Use.