PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2025 → PDf via webservice dans répertoire
PDf via webservice dans répertoire
Débuté par Blue, 07 juil. 2025 12:42 - 4 réponses
Posté le 07 juillet 2025 - 12:42
Bonjour,

j'ai actuellement un webservice qui tourne bien afin d'envoyer des infos au chargement d'un PDF. Mais je dois également stocker ce PDF dans un répertoire local. Le résultat que j ai actuellement c'est qu'un PDF est bien créé dans le bon répertoire mais il m'est impossible de l ouvrir.

PROCÉDURE EnvoyerDocument(CheminFichier est une chaîne)

//Envoie fichier dans répertoire client
DocumentJSON est un JSON
//bufDocumentBuffer est un Buffer
sReponseRetour est une chaîne
//DocumentAEnregistrer est un STDocument

DocumentJSON.IDCLIENTS_DOCUMENTS = 0
DocumentJSON.Nom = CheminFichier
DocumentJSON.NumeroOrdre = 0
DocumentJSON.Chemin = fRepDonnées()+fSep() + CheminFichier
DocumentJSON.buffFichier = fChargeBuffer(fRepDonnées()+fSep() + CheminFichier)
DocumentJSON.NUMCLIENT = gsNumClientUtilisateur
DocumentJSON.IDDOCUMENTS_TYPE = COMBO_TypeDoc..ValeurMémorisée
DocumentJSON.DateHeureAjout = DateHeureSys()
DocumentJSON.ParQuiAjout = "WinPortal"


fSauveTexte("C:\Users\Ennovsys016\Desktop\Doc2.txt",JSONVersChaîne(DocumentJSON))


h est un httpRequête
h.Méthode = httpPost
h.URL = gsURL + "/Ajout_Document"
h.ContentType = "application/json"
h.Contenu = DocumentJSON
r est un httpRéponse = RESTEnvoie(h)

SI r.CodeEtat = 200 ALORS
sReponseRetour = r.DescriptionCodeEtat

ToastAffiche("Document envoyé",toastLong,cvMilieu,chCentre)

PAGE_MAIN.MENU_Main.OPT_Mes_Documents.ExécuteTraitement(trtClic)
SINON
sReponseRetour = r.DescriptionCodeEtat

Info("Erreur envoi document", sReponseRetour)
FIN


Le bout de code de mon WS pour sauver mon PDF dans répertoire choisit

SI PAS fSauveBuffer(ComplèteRep(sRepertoireDoc)+nomDoc+extension,buffFichier) ALORS
PG_RenvoiErreur(400,"Une erreur est survenue lors de la sauvegarde du fichier.")
bConnexionOK = Faux
RENVOYER bConnexionOK
FIN


Est ce quelqu'un peut m'aider à trouver d'où vient le soucis ? Merci d'avance
Membre enregistré
3 705 messages
Posté le 07 juillet 2025 - 15:08
Salut
Tout ce que je vois dans ton code c'est l'enregistrement d'un texte
Et dans un autre code la sauvegarde d'un Buffer
As tu ouvert ton pdf avec un éditeur texte pour vérifier si le début correspond bien à un PDF?
Posté le 07 juillet 2025 - 15:44
Popoy a écrit :
Salut
Tout ce que je vois dans ton code c'est l'enregistrement d'un texte
Et dans un autre code la sauvegarde d'un Buffer
As tu ouvert ton pdf avec un éditeur texte pour vérifier si le début correspond bien à un PDF?


Salut Popoy,

Ici pour toi c'est un enregistrement de texte ?
DocumentJSON.buffFichier = fChargeBuffer(fRepDonnées()+fSep() + CheminFichier)

Mon JSon envoie bien un PDF. Dans mon editeur texte ça commence ainsi :
"%PDF-1.4
%âãÏÓ
92 0 obj
<</Linearized 1/L 191836/O 99/E 84506/N 3/T 189861/H [ 1648 420]>>
endobj

xref
92 66
0000000016 00000 n..." Pour moi c'est ok j envoie ça dans mon WS, j ai un PDF dans mon répertoire mais impossible de l ouvrir.
Membre enregistré
3 705 messages
Posté le 07 juillet 2025 - 17:00
Salut
J'ai l'impression que cette ligne
fSauveTexte("C:\Users\Ennovsys016\Desktop\Doc2.txt",JSONVersChaîne(DocumentJSON))
N'as pas l'aire d'être un PDF mais vu que tu mets une extension .txt je me doute que ce n'est pas un PDF
Puis tu fais
fSauveBuffer(ComplèteRep(sRepertoireDoc)+nomDoc+extension,buffFichier)
D'où ma question

Si tu n'arrives pas à ouvrir le PDF c'est que
Soit ce n'est pas un PDF
Soit le contenu n'est pas valide
Beaucoup de choses peuvent être a l'origine du défaut
Souvent la chaîne json peuvent contenir des binaires (images , pdf etc) souvent en base 64
Il faudrait voir le contenu du json
Peut être faut il convertir la base 64 .
Posté le 08 juillet 2025 - 10:11
Popoy a écrit :
Salut
J'ai l'impression que cette ligne
fSauveTexte("C:\Users\Ennovsys016\Desktop\Doc2.txt",JSONVersChaîne(DocumentJSON))
N'as pas l'aire d'être un PDF mais vu que tu mets une extension .txt je me doute que ce n'est pas un PDF
Puis tu fais
fSauveBuffer(ComplèteRep(sRepertoireDoc)+nomDoc+extension,buffFichier)
D'où ma question

Si tu n'arrives pas à ouvrir le PDF c'est que
Soit ce n'est pas un PDF
Soit le contenu n'est pas valide
Beaucoup de choses peuvent être a l'origine du défaut
Souvent la chaîne json peuvent contenir des binaires (images , pdf etc) souvent en base 64
Il faudrait voir le contenu du json
Peut être faut il convertir la base 64 .


la ligne fSauveTexte("C:\Users\Ennovsys016\Desktop\Doc2.txt",JSONVersChaîne(DocumentJSON)) c'est pour enregistrer mon JSON dans un txt afin de pouvoir tester mon webservice. Et par la meme occasion vérifier mon buffer de PDF.

Au final tu as raison, j'ai finis pas encoder mon buffer et decoder du coté WS en base64.
Merci pour l aide.