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 :

XSLT PDF base64


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut XSLT PDF base64
    Bonjour,

    Je souhaiterais intégrer un code EAN13 base64 dans un PDF.
    Le XML qui contient les informations sont comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Column width="10" Type="56" ApiName="TSAGenTest" >
    <Name >GenTest</Name>
    <Value ><div><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAQAAAP8AAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAak4DA7VAmk0AAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAUUoCA+juoggAAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAABAAAAAAAAAP8AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAbjUDAlvFFR8AAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAAAAAAA/wAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAASVICA62zYxMAAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAAAAAAAAQAAAAAAAAD/AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAajUDAt82atYAAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAATUoCA+Jw8kAAAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAQAAAP8AAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAak4DA7VAmk0AAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAAAAAAAAAAAAP8AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAARTkCAqx1lb4AAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAABAAAA/wAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAckoDA0TA9lYAAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAABAAAA/wAAAAEAAAD/AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAizUEAhrxcbgAAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAAAAAAA/wAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAASU4CA+16cNAAAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAQAAAAAAAAD/AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAZjkDAtle3bIAAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAAAAAAA/wAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAASU4CA+16cNAAAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAUUYCA7QBErsAAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAABAAAA/wAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAck4DAxY8F10AAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAAAAAAEAAAD/AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAZjUDAmZGozoAAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAATTECAq7UnEMAAAAASUVORK5CYII=" width="4" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAATTECAq7UnEMAAAAASUVORK5CYII=" width="4" height="40"><img
    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAQAAAP8AAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAak4DA7VAmk0AAAAASUVORK5CYII=" width="4" height="40"></div><div>54114681234633</div></Value>
    </Column>
    Nom : GenError.png
Affichages : 239
Taille : 120,0 Ko

    Et actuellement je récupère tout ce qui ce trouve à l'intérieur de "Value" mais il faudrait que cela s'affiche en image réelle.
    Comment puis-je faire ?

    Merci d'avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    je doute qu'on puisse aider de toute façon, mais tu dois bien te douter que tu dois commencer par nous montrer comment tu essaies de transformer ce XML en PDF.

    Au passage, les data-url sont erronées. Il faut que ça commence par data:image/png;base64,

    Ce & #894; n'a rien à faire là. Il ressemble à un point-virgule, mais ce n'en est pas un (c'est un point d'interrogation grec.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour et merci de m'avoir répondu.

    Voici le bout de code qui permet de récupérer l'information :

    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
     
    <xsl:choose>					
     
    <xsl:when test="$Type = 20">
                          <xsl:attribute name="style">
                            max-width:<xsl:value-of select="(./@width div $totalWidth) * 100" />%;
                          </xsl:attribute>
                          <xsl:variable name="imgUrl">
                            <xsl:call-template name="setImgUrlDimensions">
                              <xsl:with-param name="url" select="Value"/>
                            </xsl:call-template>
                          </xsl:variable>
    											<img class="cartImg" data="w={(./@width div $totalWidth) * 100}">
    												<xsl:attribute name="src"><xsl:value-of select="$imgUrl"/></xsl:attribute>												
    											</img>
                        <xsl:otherwise>
                  <xsl:value-of select="$Value" /> <xsl:text> </xsl:text>
              </xsl:otherwise>
    </xsl:choose>
    Et cela est le code qui me permet de générer le code EAN13, qui est fonctionnel dans une page web mais non récupéré par le XSLT :

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    var array5bit_A = new Array ( 'f//AAAAAAAAAAAAAAAAAAAA', 'f//AAAAAAAAAAAAAAAAAAAB', 'f//AAAAAAAAAAAAAAEAAAD/',
     'f//AAAAAAAAAAAAAAEAAAAA', 'f//AAAAAAAAAQAAAP8AAAAA', 'f//AAAAAAAAAQAAAP8AAAAB', 'f//AAAAAAAAAQAAAAAAAAD/',
     'f//AAAAAAAAAQAAAAAAAAAA', 'f//AAABAAAA/wAAAAAAAAAA', 'f//AAABAAAA/wAAAAAAAAAB', 'f//AAABAAAA/wAAAAEAAAD/',
     'f//AAABAAAA/wAAAAEAAAAA', 'f//AAABAAAAAAAAAP8AAAAA', 'f//AAABAAAAAAAAAP8AAAAB', 'f//AAABAAAAAAAAAAAAAAD/',
     'f//AAABAAAAAAAAAAAAAAAA', 'QD/AAD/AAAAAAAAAAAAAAAA', 'QD/AAD/AAAAAAAAAAAAAAAB', 'QD/AAD/AAAAAAAAAAEAAAD/',
     'QD/AAD/AAAAAAAAAAEAAAAA', 'QD/AAD/AAAAAQAAAP8AAAAA', 'QD/AAD/AAAAAQAAAP8AAAAB', 'QD/AAD/AAAAAQAAAAAAAAD/',
     'QD/AAD/AAAAAQAAAAAAAAAA', 'QD/AAAAAAAA/wAAAAAAAAAA', 'QD/AAAAAAAA/wAAAAAAAAAB', 'SL/AADeAAAA/gAAAAIAAAD+',
     'QD/AAAAAAAA/wAAAAEAAAAA', 'QD/AAAAAAAAAAAAAP8AAAAA', 'QD/AAAAAAAAAAAAAP8AAAAB', 'QD/AAAAAAAAAAAAAAAAAAD/',
     'QD/AAAAAAAAAAAAAAAAAAAA');
    var array5bit_B = new Array ( 'US0CAuSD38g', 'UUYCA7QBErs', 'ajEDAm49ReY', 'UUoCA+juogg', 'bjEDAjQrOn0', 'bkoDA3iPVH4',
     'ajUDAt82atY', 'UU4CA1nljTg', 'cjEDAghkmFU', 'ckoDA0TA9lY', 'izUEAhrxcbg', 'ck4DAxY8F10', 'bjUDAlvFFR8', 'bk4DAxdhexw',
     'ajkDAr7LFAw', 'UVICAyQ+UJI', 'TTECAq7UnEM', 'TUoCA+Jw8kA', 'ZjUDAmZGozo', 'TU4CA7CME0s', 'ajUDAvnk9E4', 'ak4DA7VAmk0',
     'ZjkDAtle3bI', 'TVICAxOyzrM', 'STUCAqHeHtM', 'SU4CA+16cNA', 'h6QEAZKdo54', 'SVICA62zYxM', 'RTkCAqx1lb4', 'RVICA/z3WM0',
     'QT0CAkdoxRU', 'KFYBA46vJCA');
     
    // Painstakingly derived gobblety-goop, but essentially the front, back and mid-matter common to all barcode images...
    var stringStart = '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/A';
    var stringMid = 'AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAA';
    var stringEnd = 'AAAAASUVORK5CYII=" width="';
    
    function genBarcode(inputString,intWidth,intHeight) { // Input is a long string of 1's and 0's, output is the HTML <img> stack
    // Pads to the last character to ensure length is divisible by 5
       var intRawmod = inputString.length % 5; // Modulo 5 remainder
       if (intRawmod > 0) for (var i = 0; i < 5 - intRawmod; i++) inputString += "0"; // If not evenly divisible, pad with zeroes
       var arraySeq = new Array (intChunks = inputString.length / 5); // Create array for as many chunks as are now in input string
     
       for (var i = 0; i < intChunks; i++) arraySeq[i] = parseInt(inputString.substr(i * 5, 5), 2); // Converts string of 1's and 0's to integer array
     
    // Takes integer array and converts to "<img ...>" graphics for display
       var resultString = "";
       for (var i = 0; i < arraySeq.length; i++) {
       	resultString += stringStart + array5bit_A[arraySeq[i]] + stringMid + array5bit_B[arraySeq[i]] + stringEnd + intWidth + '" height="' + intHeight + '">';
       }
       return resultString;
    }
    ///////////////////////////////////////////
    // Symbology-specific arrays
     
    // UPC Specific Arrays
    var arrayCodeEANBin, arrayStructEAN;
    arrayCodeEANBin = [ [ '0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011' ], [ '0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111' ], [ '1110010', '1100110', '1101100', '1000010', '1011100', '1001110', '1010000', '1000100', '1001000', '1110100' ] ];
    arrayStructEAN = ['000000', '001011', '001101', '001110', '010011', '011001', '011100', '010101', '010110', '011010'];
     
    ///////////////////////////////////////////
    // Global Variables
    var strRaw = "";
    var strText = "";
     
    ///////////////////////////////////////////
    // Symbology-specific functions
    function funcEAN() { // EAN-13
    var intSumOdd = 0, intSumEven = 0, intCheck, i, j, strStruct;
     
    // Compute check digit and add it to raw string
     for (i = 0; i < 12; i += 2) {
      intSumEven += parseInt(strText[i]);
      intSumOdd += parseInt(strText[i+1]);
     }
     intCheck = ((intSumOdd * 3) + intSumEven) % 10;
     if (intCheck > 0) {
     	intCheck = 10 - intCheck;
     }
     strText += intCheck;
     
    // Converts Code EAN array into string of 1's and 0's
     strRaw = "101";
    // First six bar sequences
     strStruct = arrayStructEAN[strText[0]];
     for (i = 1; i < 7; i += 1) {
       strRaw += arrayCodeEANBin[strStruct[i-1]][strText[i]];
     }
    // Middle sequence
     strRaw += "01010";
    // Last six bar sequences, including check digit
     for (i = 0; i < 6; i += 1) {
      strRaw += arrayCodeEANBin[2][strText[i+7]];
     }
     strRaw += "101";
    } // End EAN-13
     
     var intHt = 0;
     var intWd = 0;
     var strImages = "";
     intWd = 4;
     intHt = 40;
     strText = ItemUPC;
     funcEAN();
     strImages = genBarcode(strRaw,intWd,intHt);
     
     
    return `<div>`+strImages+`</div>`+`<div>`+strText+`</div>`;
    Dois-je changer de stratégie et le faire directement dans le XSLT en reprenant seulement le code EAN brut (les numéros) ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    ce que j'ai demandé c'est que tu montres, ou expliques, comment tu prends le XML montré au début, et le transformes en PDF.

    Je ne comprends pas trop qu'est-ce que tu as montré à la place. Mais clairement pas ce que j'ai demandé. Je ne sais que faire de ces trucs qui clairement, n'ont rien à voir avec la question posée.

    Peut-être que d'autres pourraient, je dis pas le contraire. Mais je pense que le mieux pour toi est d'expliquer les choses clairement et quand on te dit qu'on a besoin d'information, les donner.

    Citation Envoyé par Guemerios Voir le message
    Dois-je changer de stratégie et le faire directement dans le XSLT en reprenant seulement le code EAN brut (les numéros) ?
    D'expérience qui me permet de détecter les constructions abracadabrantes, je suis certain que oui.

    Mais à garder en tête que j'ai toujours aucune idée de ce que tu essaies de faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Ce que j'essaie de faire c'est tout simplement afficher un code barre au lieu des 13 chiffres.

    Nom : Sans titre.png
Affichages : 195
Taille : 949 octets

    Je ne sais pas si cela peut aider mais voici le début du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
    <!-- PDF4d-3d16.xsl 24Sep2015 (PDF4d-3d15.xsl Does not Exist)-->
    <xsl:output encoding="UTF-8" indent="yes" method="xml" standalone="no" omit-xml-declaration="no"/>
    Je ne pourrais pas donner la totalité du code.

    J'ai trouvé une autre solution pour avoir un code barre généré automatiquement, mais celui ne me renvoi que le numéro et non le code barre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsl:when test="@ApiName='ItemUPC'">
    										<xsl:attribute name="link">
    										href='https://fonts.googleapis.com/css?family=Libre Barcode EAN13 Text' rel='stylesheet'
    										</xsl:attribute>
    										<xsl:attribute name="style">
    										font-family:'Libre Barcode EAN13 Text'
    										</xsl:attribute>
    										<xsl:value-of select="$Value"/>
    										</xsl:when>
    Merci

Discussions similaires

  1. XML + XSLT = PDF
    Par Ullur dans le forum C#
    Réponses: 0
    Dernier message: 30/04/2012, 09h10
  2. Convertir pdf en Base64 et l'inverse
    Par developper2006 dans le forum Général Java
    Réponses: 6
    Dernier message: 05/06/2008, 15h09
  3. [XSLT] Générer un document PDF
    Par paty03 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 30/03/2008, 15h19
  4. Transformer XML en PDF par XSLT
    Par abda1000 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 12/06/2007, 17h10
  5. Réponses: 7
    Dernier message: 04/06/2007, 15h51

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