Convertir une variable d’image en image

  • Convertir une variable d’image en image

    Posté par GREGOIRE sur 11 avril 2025 at 10h42

    Bonjour à tous,

    dans le cadre du développement du développement d’une nouvelle app, je suis en train de monter un écran qui est dédié à l’annotation de fichier PDF stocké dans SharePoint.

    Jusque là pas de souci, avec la combinaison d’une galerie, d’un PDFViewer et d’un PenInput, j’obtiens fonctionnellement ce dont j’ai besoin, c’est l’étape d’après où je bloque :

    Si je mets à disposition de l’utilisateur cet outil d’annotation, c’est ensuite pour créer un enregistrement à destination de notre GED.

    J’ai donc un autre écran dédié à cette fonction. Je tire avantage du contrôle “Canvas”, qui permet un scroll infini vers le bas, via l’intermédiaire de Datacard, et d’une mécanique de génération de PDF. Pareil, je maîtrise pas trop mal le sujet, pas de souci à ce niveau là, j’ai éprouvé la fonctionnalité.

    J’ai ajouté une section à mon canvas pour y intégrer mon fameux PDF annoté sur un autre écran. Ma première approche était la suivante :

    – Sur OnVisible de l’écran d’annotation, je capture dans une variable la miniature du PDF :

    <div>
    <div>Set(VarSchemaBoucle,GalSchemaBoucle.Selected.Thumbnail.Large)</div>
    <div> </div>
    <div>Ici le but est simplement de capturer une image brut du PDF, image que le réutilise dans mon écran d’enregistrement via l’intermédiaire d’un contrôle Image. contrôle que je double en superposition avec les annotation de mon PenInput</div>
    <div> </div>
    <div>
    <div>
    <div>Image: =PenInput.Image</div>
    </div>
    </div>
    <div> </div>
    <div>Je me suis dis nickel, j’ai le résultat voulu, 2 images superposées de mon PDF + annotation, SAUF QUE …</div>
    <div> </div>
    <div>Une fois le PDF généré, je me rends compte que seule les annotations ressortent bien dans l’enregistrement créé, impossible de faire apparaître l’image du PDF.</div>
    <div> </div>
    <div>J’ai cherché un peu, notamment en regardant ce qu’avait dans le ventre ma variable image. Là où sur un PenInput.image j’ai appres://blobmanager/63008c4273bf49ed90a46ab490134c0f/68</div>
    <div> </div>
    <div>je me retrouve avec https://westeurope1-mediap.svc.ms/transform/thumbnail?provider=spo&inputFormat=pdf&cs=......................................</div>
    <div> </div>
    <div>et donc c’est là où je me doute bien qu’il y a un hic, mais je ne sais pas comment passer de l’un à l’autre, comment l’encoder correctement.

    </div>
    <div>Si je peux faire sans flow nickel, sinon toutes vos idées sont bonnes à prendre</div>
    <div> </div>
    <div>en vous remerciant ! :)</div>
    </div>

    R3dKap a répondu 5 days, 2 hours ago 2 Membres · 7 Réponses
  • 7 Réponses
  • R3dKap

    Member
    12 avril 2025 at 20h54

    Salut @GREGOIRE,

    J’ai pas tout compris dans le détail (mais j’avoue ça doit pas être simple à expliquer 😅), mais je crois avoir compris l’essentiel : tu veux fusionner 2 images, celle de la vignette du PDF avec celle du pen input des annotations —> pas possible gratuitement. Soit il faut faire appel à un web service externe et donc créer un connecteur personnalisé, soit il faut passer par un flux et un connecteur premium.

    A la rigueur, tu pourrais créer un écran où tu superposes le pen input des annotations à la vignette du PDF en arrière-plan tout ça dans la taille la plus grande possible et ensuite tu fais une capture d’écran avec le contrôle PCF suivant :

    https://pcf.gallery/screenshot-pcf/

    Mais le rendu peut être un peu dégueu… A tester… Et ça veut dire qu’il va falloir activer le code PCF sur l’environnement.

  • GREGOIRE

    Member
    13 avril 2025 at 11h50

    Salut oui,

    pas facile de donner le juste contexte …

    j’ai continué à trifouiller de mon côté, j’ai fait certain choix mais je suis encore bloqué, en résumé :

    • Je transforme mon .pdf en .png via un enchaînement HTTP (GET) -> Create file dans SharePoint
    • Ensuite je récupère les metadata du fichier fraichement créé
    • Puis j’envoie une requête HTTP à SP pour alimenter une colonne de type hyperlien_Image avec le lien du document, pour raccrocher l’image au pdf + exploiter dans PowerApps cette colonne image dans mes contrôles, mais je bloque sur mon HTTP request, je suis pas un pro à ça :/

    Avec cet exacte paramètre, j’ai l’erreur :

    <div>
    <div>”The parameter __metadata does not exist in method GetById.”</div>
    <div> </div>
    <div>j’ai fouillé sur le web, c’est une erreur connue, mais testé 1000 combinaison différentes et je ne trouve pas.</div>
    <div> </div>
    <div>Vis-à-vis du message, on dirait que SP fait une opération interne GetById que je ne vois pas dans mon action, incompatible avec __metadata dans mon body, donc : </div>
    <div> </div>
    <div>est-ce que j’utilise la bonne méthode pour mettre à jour une colonne SP ? POST puis MERGE ? j’ai testé toutes les combinaisons entre POST PATCH et MERGE, rien n’y fait

    </div>
    </div>

  • R3dKap

    Member
    13 avril 2025 at 16h39

    Pourquoi tu n’utilises pas l’action Mettre à jour les propriétés du fichier plutôt que de faire un appel HTTP ?

  • GREGOIRE

    Member
    13 avril 2025 at 20h20

    C’était ma première approche, mais la colonne de type hyperlien étant complexe (description + url) elle n’est pas disponible dans cette action 🙁

  • R3dKap

    Member
    14 avril 2025 at 12h44

    Salut @GREGOIRE,

    Je viens de tester chez moi et ça marche. Donc tu dois avoir une coquille quelque part. Voici les points à vérifier :

    1. Est-ce que le body/ItemId contient bien la valeur de la colonne ID SharePoint (un numérique qui démarre à 1 lorsque la liste est toute neuve -> pas un GUID !)
    2. Ah, je viens de voir que tu as une erreur dans le X-HTTP_METHOD : c’est X-HTTP-METHOD (c’est 2 tirets, y’a pas de underscore “_”) 😉… Pas sûr après que ça explique l’erreur en question… Mais faut déjà corriger ça.
    3. PdfViewer est bien le nom technique de la colonne hyperlink image, pas le nom d’affichage hein ? 😉
    4. En fait l’erreur laisse sous-entendre qu’il ne reconnaît pas ton type de metadata : SP.Data.Shared_x0020_DocumentsItem. Où l’as-tu récupéré ? L’as-tu construit toi-même ? En l’occurence, je suis pas sûr du “D” majuscule de “Documents”. Pour être sûr, tu peux le retrouver comme ceci :
  • GREGOIRE

    Member
    15 avril 2025 at 15h25

    Salut Red,

    j’ai persévéré et maintenant ça fonctionne … j’ai réécris mon body de A à Z et je supute une faute de syntaxe

    En tout cas je suis super content, en résumé :

    • mon utilisateur charge dans SP un PDF, un flux renomme le PDF suivant une syntaxe définie
    • Depuis Power Apps, l’utilisateur peut annoter le PDF qui s’affiche automatiquement grâce à la syntaxe Filter(Documents , X = Y)
    • en même temps que l’utilisateur l’annote, la thumbnail Large (important) du PDF est enregistrée en .png et injectée dans la colonne hyperlien_Image du fichier PDF
    • Sur un autre écran de l’App, ce .png est utilisé dans un contrôle image afin d’être intégré à un enregistrement PDF plus global pour une intervention terrain : c’est le seul moyen que j’ai trouvé d’avoir une image visible, exemple : si dans Image.Image j’écris “Gallery.Selected.thumbnail.Large”, dans l’app on voit bien une image, sauf qu’en réalité ça pointe sur https://……com, donc à la génération du pdf, le contrôle est vide
    • En superposant 2 contrôles images, un pour les annotations, un pour la thumbnail PDF, on a l’illusion dans l’enregistrement PDF final d’avoir annoter directement sur le PDF 🙂

    Je ne sais pas si c’est un cas d’usage qui peut servir à des membres de la communauté, mais moi c’est un gain en qualité pour le processus que je digitalise

    merci pour ton aide !

  • R3dKap

    Member
    15 avril 2025 at 17h49

    Content de voir que ça marche @GREGOIRE… Et c’est toujours avec plaisir… 😉

Connectez-vous pour répondre.