Powerbuilder pour les completement Geeks !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 16-11-2011 15:55:46

pkhayat  
Membre Geek
Lieu: Paris/Nice
Date d'inscription: 24-01-2007
Messages: 21
Pépites: 112
Banque: 0

[RESOLU] Recevoir une pdf en Webservice

Bonjour,

J'appelle un webservice qui me retourne un pdf encode en string64.
Je récupère bien cette sting en appellant ce webservice mais je ne sais pas comment le décoder
et le transformer en pdf.

Merci d'apporter un peu de lumière à mon problème.

Merci d'avance.
Philippe

Dernière modification par pkhayat (24-11-2011 10:01:32)

Hors ligne

 

#2 16-11-2011 16:33:48

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Recevoir une pdf en Webservice

pkhayat a écrit:

J'appelle un webservice qui me retourne un pdf encode en string64.

String64 ou Base64 ?

pkhayat a écrit:

Je récupère bien cette sting en appellant ce webservice mais je ne sais pas comment le décoder
et le transformer en pdf.

Si ce n'est trop gros, j'ai fait un objet nv_codec_base64 qui permet d'encoder/décoder de la base64. Il suffirait ensuite d'ouvrir un fichier et d'enregistrer la chaine décodée dans ce fichier (FileOpen / FileWrite / FileClose).

Ce n'est pas très rapide sur des grosses données (dès que ça dépasse quelques ko), mais ça vaut peut-être le coup d'essayer ?


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#3 16-11-2011 16:37:45

pkhayat  
Membre Geek
Lieu: Paris/Nice
Date d'inscription: 24-01-2007
Messages: 21
Pépites: 112
Banque: 0

Re: [RESOLU] Recevoir une pdf en Webservice

c'est une string en retour du webservice encodé en base64

Hors ligne

 

#4 18-11-2011 11:45:06

pkhayat  
Membre Geek
Lieu: Paris/Nice
Date d'inscription: 24-01-2007
Messages: 21
Pépites: 112
Banque: 0

Re: [RESOLU] Recevoir une pdf en Webservice

bonjour seki,

peux tu me donner plus de détail sur ton objet nv_codec_base64 ?

Hors ligne

 

#5 18-11-2011 14:43:33

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Recevoir une pdf en Webservice

En gros :

Code: pb

    nv_codec_base64 b64
    blob lbl_data64
    string ls_res
    lbl_data64 = b64.decode("SGVsbG8gV29ybGQgIQ==")
    ls_res = string(lbl_data64) //  ==>  Hello World !


Une version un peu plus élaborée, si on ne sait pas ce qui peut se trouver dans la chaîne (gère l'unicode) pour écrire le résultat dans un multilineedit :

Code: pb

    nv_codec_base64 b64
    blob lbl_data64
    byte lb
    lbl_data64 = b64.decode(as_some_b64_string)
    //heuristique utf16
    if len(lbl_data64) > 1 then
      getbyte(lbl_data64, 2, lb)
      if lb = 0 then
        //probable utf16
        mle_decoded.text = string(lbl_data64)
      else
        mle_decoded.text = string(lbl_data64, encodingansi!)
      end if
    else
      mle_decoded.text = string(lbl_data64, encodingansi!)
    end if


Maintenant si la chaîne en question est un fichier PDF, à la place d'affecter mle_decoded.text comme dans l'exemple il faudra faire un FileWrite du lbl_data64.

PS: pour que ça fonctionne dans un projet test, il faut aussi récupérer l'extension pbnicw (disponible sur la même page que nv_codec_base64) que j'utilise pour faire des calculs de bits rapidement. Il est possible de recoder ces calculs en pbscript pur mais ça va être encore plus lent.


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#6 18-11-2011 14:46:38

pkhayat  
Membre Geek
Lieu: Paris/Nice
Date d'inscription: 24-01-2007
Messages: 21
Pépites: 112
Banque: 0

Re: [RESOLU] Recevoir une pdf en Webservice

merci à toi,

je vais essayer ce week end et je te tiens au courant.
Merci

Hors ligne

 

#7 24-11-2011 10:05:08

pkhayat  
Membre Geek
Lieu: Paris/Nice
Date d'inscription: 24-01-2007
Messages: 21
Pépites: 112
Banque: 0

Re: [RESOLU] Recevoir une pdf en Webservice

J'ai trouvé comment faire,
j'utilise pour cela une dll base64.dll.
1) Je l'enregistre C:\Windows\System32\REGSVR32.EXE C:\Base64.dll
2) puis après dans mon script je mets le code ci dessous

Code:

oleobject   uo_64
Int=pb        li_rc, li_file
String      ls_result

uo_64 = CREATE OLEObject
li_rc=uo_64.ConnectToNewObject("Base64Lib.Base64") 
IF li_rc<0 THEN
    MessageBox("Error","Connect to Base64 dll failed")
    RETURN
END IF

uo_64.DecodeToFile (ls_return, "C:\ls_return_web_service + ".PDF")

Dernière modification par pkhayat (24-11-2011 17:20:20)

Hors ligne

 

#8 24-11-2011 13:06:53

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Recevoir une pdf en Webservice


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#9 24-11-2011 14:41:20

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: [RESOLU] Recevoir une pdf en Webservice

pkhayat a écrit:

J'ai trouvé comment faire,
j'utilise pour cela une dll base64.dll.

Par curiosité, c'est une lib qui provient d'où .


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#10 24-11-2011 17:22:35

pkhayat  
Membre Geek
Lieu: Paris/Nice
Date d'inscription: 24-01-2007
Messages: 21
Pépites: 112
Banque: 0

Re: [RESOLU] Recevoir une pdf en Webservice

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22