PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2025 → Charger un PDF dans un champs image
Charger un PDF dans un champs image
Débuté par Jean-Michel, 22 sep. 2023 10:24 - 13 réponses
Membre enregistré
856 messages
Posté le 22 septembre 2023 - 10:24
Bonjour,

Sur mon poste de dev quand je teste, cela fonctionne mais quand je livre l'application sur ma tablette android, cela ne fonctionne pas et pourtant :

sNomFichierPDF est une chaîne = gblCheminTablette + sPhoto

// Chargement d'une image vectorielle (ici un PDF, cela pourrait être un SVG)
// Récupération des caractéristiques de l'image
sInfoPDF est une chaîne = InfoBitmap(sNomFichierPDF)

// Les images vectorielles sont transformées en images bitmap (raster, donc non vectorielles)
// On définit la résolution à laquelle on désire cette image
// (Divisé par 96 car c'est la résolution utilisée
// pour donner la taille d'une image vectorielle par la fonction InfoBitmap)
nDpiVoulu est entier = 300
soit nLargeurPixel = Val(ExtraitChaîne(sInfoPDF,2))*nDpiVoulu / 96
soit nHauteurPixel = Val(ExtraitChaîne(sInfoPDF,3))*nDpiVoulu / 96


// Charge l'image à l'écran dans un champ Image avec la taille correspondant au DPI voulu
ING_Image = dChargeImage(sNomFichierPDF, imgConvertir, nLargeurPixel,nHauteurPixel)


Je suis en plus en WM28 !
Merci pour votre aide...

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev - Windev Mobile

Bangkok / Pattaya
Posté le 22 septembre 2023 - 12:27
Il peut y avoir pleins d'explication : image non présente, pb de conversion, pb de taille

Pourquoi ne pas écrire simplement : ING_Image = sNomFichierPDF ?
Membre enregistré
537 messages
Posté le 22 septembre 2023 - 13:10
Effectivement dChargeImage ne fonctionne pas comme il devrait sur Android avec un pdf
Pour afficher l'image du pdf, ce code peut etre utilisé
sNomFichierPDF est une chaîne = gblCheminTablette + sPhoto
ING_Image = sNomFichierPDF
Membre enregistré
3 748 messages
Posté le 23 septembre 2023 - 12:39
Salut,
Bien que les pdfs peuvent être mis dans un champ image
Ceux ci ne sont pas des images
Il est vrai que tu fourni le code de la page d'aide
Mais ce code est fait pour windev sous windows
Pas windev mobile Android
Bien sûr PCSOFT aurait dû le préciser, mais bon.
Sur la page
https://doc.pcsoft.fr/fr-FR/?9500147
Tu peux voir le nombre de pages d'un pdf et le numéro de page
Normalement, sous windev mobile (même sous windev)
La simple affectation suffit.

Pour info, il est aussi possible d'afficher un pdf dans un champ HTML
Message modifié, 23 septembre 2023 - 12:43
Membre enregistré
856 messages
Posté le 25 septembre 2023 - 09:55
Bonjour tout le monde et merci d'avoir repondu.
wddev,
Pourquoi ? Parceque cela ne fonctionne pas, c'est la 1ere chose que j'ai teste et c'est "normalement" la syntaxe a utiliser.

steph811,
meme reponse que wddev

Popoy,
Je vois que tu es toujours sur le "qui vive", bravo.
Mais que si, c'est precise en haut de la page et ce code est normalement valable pour windev mobil.
Je vais en referer a PCSoft car mem souci avec le html

D'autre part, le champs pdf fonctionne sur des plateformes 64 bit, ce qui n'est pas mon cas.
Merci a vous tous, bon dev !

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev - Windev Mobile

Bangkok / Pattaya
Membre enregistré
537 messages
Posté le 25 septembre 2023 - 14:00
Jean-Michel a écrit :
Pourquoi ? Parceque cela ne fonctionne pas, c'est la 1ere chose que j'ai teste et c'est "normalement" la syntaxe a utiliser.

Oui c'est bien ce que j'ai répondu, sous entendu il faut créer un ticket auprès du support qui va analyser et en déduire qu'il s'agit d'un bug ou ce qui est moins probable qu'il faut mettre a jour l'aide en ligne pour indiquer que pour cette option n'est pas disponible sur Android
mais le plus important a mon avis est que tu as une solution de contournement qui fonctionne
C'est vrai aussi que l'utilisation du champ Lecteur PDF aurait été plus appropriée si il n'y avait pas cette contrainte de non disponibilité en 32bits, ca par contre j'aimerais bien avoir l'explication
Message modifié, 25 septembre 2023 - 14:15
Posté le 25 septembre 2023 - 15:24
Le première chose à faire est de vérifier l'existence de votre fichier PDF à l'exécution...

(je viens de faire un test simple en affectant un pdf à un champ Image, le PDF est bien affiché)
Membre enregistré
856 messages
Posté le 26 septembre 2023 - 10:07
wddev,
c'est ce que je fais !

IMG_Image = ""
sFichierPDF est une chaîne = fRepEnCours() + sSep + "1-1.pdf"
SI fFichierExiste(sFichierPDF) ALORS
Info(sFichierPDF + RC + "existe")
IMG_Image = dChargeImage(sFichierPDF,imgConvertir)
// test egalement avec IMG_Image = dChargeImage(sFichierPDF)
SINON
Info(sFichierPDF + RC + "n'existe pas")
FIN


Je pense que le fait que ma tablette soit en 32 bits,cela ne fonctionne pas !
(En emulation sur mon PC, ca fonctionne !)


** sSep est le fSep,soit "/" ou "\" suivant plateforme
--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev - Windev Mobile

Bangkok / Pattaya
Message modifié, 26 septembre 2023 - 10:08
Membre enregistré
537 messages
Posté le 26 septembre 2023 - 10:48
wddev a écrit :

(je viens de faire un test simple en affectant un pdf à un champ Image, le PDF est bien affiché)

sauf que le test a faire n'est pas celui la, ce qui est décrit comme ne fonctionnant pas c'est la fonction dchargeimage avec un pdf (en fait l'exemple de l'aide) donc c’est cela qui est a tester
Membre enregistré
856 messages
Posté le 26 septembre 2023 - 10:58
IMG_Image = sFichierPDF ==> Idem, ne fonctionne pas sur ma tablette 32 bits comme dit precedemment.
Merci steph

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev - Windev Mobile

Bangkok / Pattaya
Membre enregistré
537 messages
Posté le 26 septembre 2023 - 12:42
Jean-Michel a écrit :
IMG_Image = sFichierPDF ==> Idem, ne fonctionne pas sur ma tablette 32 bits comme dit precedemment.

Non désolé là rien à voir avec le 32bits j'ai testé sur sur 2 smartphones 32 bits l'un avec android 13 et l'autre 9 et cela fonctionne bien
Tu as essayé avec différents pdf ? peut etre déjà tester avec un pdf simple d'une page
Message modifié, 26 septembre 2023 - 12:45
Membre enregistré
3 748 messages
Posté le 26 septembre 2023 - 16:45
Salut
Que renvoie fRepEnCours ?
Pas sûr que ton application à les droits sur ce dossier.
Et je confirme que dChargeImage c'est pas bon sur mobile pour les PDF
Il faut faire le = (affectation)
Sinon il paraît que pcsoft à fait un champ éditeur PDF (personnellement je ne l'utiliserai pas)
Je rappelerai que normalement le 32 ou 64 n'a pas d'incidence puisque c'est du java sous Android.
Membre enregistré
856 messages
Posté le 27 septembre 2023 - 05:05
MeaCoulpa a tous !!
Dommage que vous etes loin, je dois payer ma tournee !!!!!!

C'est ma boulette.
Oui l'affectation toute simple fonctionne en 32 et 64 bits !
J'avais mis a ce moment la, le separateur en dure !!! et pas de message d'erreur.

A savoir concernant les PDF dans un champs PDF :
"Starting with version 28, this function is not supported by 32-bit ARM processors. New PDF features require a 64-bit execution mode.
If an application is to be run on devices with 32-bit ARM processors, it must be generated with WINDEV Mobile 27."

https://doc.windev.com/en-US/…

Bonne fin de semaine et bon courage en france !

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev - Windev Mobile

Bangkok / Pattaya
Membre enregistré
3 748 messages
Posté le 27 septembre 2023 - 09:48
Resalut,
Le champ lecteurs PDF a du être fait en langage C ou C# mais en tout cas pas en java.
Et on peut constater que l'exemple fourni est pour windows
Pourtant la fonction est compatible Android
LecteurPDFOuvre(PDF_MonLecteurPDF, "C:\MonDocument.pdf")

Donc cela confirme que les exemples fourni ne sont pas obligatoirement
valide pour toutes les plateformes
Pour être compatible avec toutes les plateformes ils auraient dû utiliser une fonction tel que frepexe par exemple
Et completerep