Donnez vie à vos documents numériques !
 

Utilisation de fonctions privilégiées dans des contextes non privilégiés

abracadabraPDF Forums PDF – Général Utilisation de fonctions privilégiées dans des contextes non privilégiés

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46097
    Pradow
    Membre

    Bonjour à toutes et à tous. Je mets en place un ensemble de formulaires PDF qui fonctionnent très bien, maintenant j’aimerais ajouter des fonctionnalités avancées :
    Un utilisateur A remplit quelques formulaires A.1, A.2, A.3 par exemple. L’utilisateur B doit créer un nouveau formulaire, dans lequel on va lui demander de sélectionner un des formulaires A.1, A.2, A.3. Une fois choisi, ce formulaire doit se combiner avec le formulaire de B. Dites-moi si ce n’est pas clair, je vous préciserai un peu mieux le contexte.Ce qu’il faut comprendre, c’est que la fonction d’assemblage n’est accessible qu’en contexte privilégié, et j’aurais aimé que mes utilisateurs puissent l’utiliser quand même.
    D’après la documentation https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf
    il faut faire usage de trustedFunction() et trustPropagatorFunction(), à utiliser dans un contexte privilégié, malheureusement cela ne semble pas fonctionner (je le teste dans la console).J’ai tenté de commencer sur un cas plus simple :
    console :

    Code:
    mySaveAs = app.trustPropagatorFunction(function(doc,path) {
    app.beginPriv();
    doc.saveAs(path);
    app.endPriv();
    })

    myTrustedSpecialTaskFunc = app.trustedFunction(function(doc,path) {
    app.beginPriv();
    mySaveAs(doc,path);
    app.endPriv();
    });

    Bouton :

    Code:
    var myFileName = “Name” + “.pdf”;
    myTrustedSpecialTaskFunc(this, myFileName);

    Il semble que myTrustedSpecialTaskFunc n’est pas reconnue comme une fonction. Sauriez-vous si une mise-à-jour de PDF.JS aurait interdit l’utilisation de trustedFunction? Ou alors il y a des autorisations à mettre en place sur le lecteur PDF?
    Pour plus de précisions, j’utilise Nuance Power PDF Advanced pour éditer mes documents, et je les test sur Nuance Power PDF Advanced et Acrobat.
    Merci pour vos réponses et bonne journée à vous.

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #65889
    bebarth
    Maître des clés

    bonjour,
    La “trustedFunction” doit être placée en script d’application.
    Je ne connais pas Nuance Power PDF Advanced et je ne sais donc pas comment ça se passe pour ce logiciel.
    Pour Acrobat Pro et Reader, un fichier .js avec le script doit être placé dans le répertoir JavaScript de l’application, d’où le nom “script d’application”…
    Si tu veux exécuter ton script depuis la console, il faut tout exécuter en même temps. La fonction et le script du bouton. Tu sélectionnes le tout dans la console, puis bouton “enter” (et non retour ligne).
    Avec ton exemple :

    Code:
    mySaveAs = app.trustPropagatorFunction(function(doc,path) {
    app.beginPriv();
    doc.saveAs(path);
    app.endPriv();
    });
    myTrustedSpecialTaskFunc = app.trustedFunction(function(doc,path) {
    app.beginPriv();
    mySaveAs(doc,path);
    app.endPriv();
    });
    var myFileName = “Name” + “.pdf”;
    myTrustedSpecialTaskFunc(this, myFileName);

    @+
    :bonjour:

    #65890
    Pradow
    Membre

    Merci pour ta réponse.
    Malheureusement même quand je lance l’ensemble du script dans la console, celle-ci me répond :

    Code:
    TypeError: myTrustedSpecialTaskFunc is not a function

    Alors il est possible que le contexte ne soit pas suffisamment privilégié et qu’il faut absolument que je crée un script d’application.
    Pour nuance pdf, cela se passe comme pour Acrobat, il y a un dossier Javascripts dans lequel poser ses documents. Il existe deux dossiers de ce type : un en passant par C/users, qui lance des scripts spécifiques à l’utilisateur, l’autre en passant par C/program files, qui sont directement associés à l’application. Pour le moment j’ai pu tester le premier cas parce qu’l n’obligeait pas les droits d’administration, j’ai bien pu tester que le script était lu, malheureusement il ne permettait toujours pas l’exécution de mon script. Il faudra que je teste dans l’autre dossier en demandant les droits d’administrateur à l’assistance informatique de ma société.
    Encore merci pour votre réponse, je te tiens au courant en cas d’avancement.

    #65891
    bebarth
    Maître des clés

    Si tus lis :
    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2Fapp_methods.htm%23TOC_trustPropagatorFunctionbc-37&rhtocid=_6_1_8_6_1_36
    Tu verras indiqué :
    “Functions defined in .js files in the App JavaScript folder are implicitly trust propagator functions. Functions defined in .js files in the User JavaScript folder are not.”
    Quel sera le logiciel utilisé par les utilisateurs ?
    @+
    :bonjour:

    #65892
    Pradow
    Membre

    Ah oui bien vu, merci beaucoup, j’aurais pu tourner en rond pendant des heures  :Smiley08: :Smiley08:
    Niveau utilisateur rien n’est décidé encore, mais il y a de fortes chances que ce soit Acrobat Reader.
    Bon je t’avoue que j’avais un poil la flemme d’aller demander les droits d’administrateur pour ajouter des javascripts dans App, mais il va bien falloir :D

    #65893
    Pradow
    Membre

    Rebonjour, j’ai enfin eu mes droits d’administration, bizarrement je ne parviens pas à savoir où se trouvent les scripts d’application chez Nuance, mais rien de très grave si je les lis sur Adobe Acrobat Reader …
    Bon, et j’ai inscrit le code suivant dans un fichier Config.js dans les scripts d’application d’Acrobat Reader:

    Code:
    trustedNewDoc = app.trustedFunction( function (nWidth, nHeight)

    {

        // Additional code may appear above

        app.beginPriv();    // Explicitly raise privilege

        app.newDoc( nWidth, nHeight );

        app.endPriv();

        // Additional code may appear below.

    })

    La fonction est tout a fait reconnue, mais lorsque dans la console j’écris :

    Code:
    trustedNewDoc(200,200)

    Celle-ci me renvoie :

    Code:
    NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.App.newDoc:65:Console undefined:Exec

    Y a t-il encore des autorisations que je n’ai pas? Comment les activer?

    #65894
    bebarth
    Maître des clés

    …et si tu copies/colles directement dans la console, ça ne fonctionne pas ?

    Code:
    trustedNewDoc = app.trustedFunction(function (nWidth, nHeight) {
      app.beginPriv();
      app.newDoc(nWidth, nHeight);
      app.endPriv();
    });
    trustedNewDoc(200,200);

    Ça devrait…
    @+
    :bonjour:

    #65895
    Pradow
    Membre

    Non, il me met exactement le même message d’erreur :

    Code:
    NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
    App.newDoc:65:Console undefined:Exec

    J’ai l’impression que cela vient des paramètres d’Acrobat Reader. Penses-tu que cela peut être lié à la version DC?
    Je recherche dans les paramètres mais je ne trouve pas de paramètre qui bloque l’accès privilégié.

    #65896
    Pradow
    Membre

    1563365673-img.jpg

    Voici mes paramètres de protection renforcée

    #65897
    Pradow
    Membre

    Bonjour, désolé pour les multiples messages.
    Une petite nuit de sommeil et quelques cafés plus tard, je me rends compte qu’en fait tout fonctionne très bien, les trusted functions fonctionnent très bien quand elles sont définies dans global.js. Seule exception faite pour app.newDoc qui ne va jamais fonctionner, et en y repensant c’est PEUT-ETRE lié au fait que je suis sur Adobe Acrobat Reader, et donc de base je ne suis pas censé pouvoir créer de document …

    #65898
    bebarth
    Maître des clés

    bonjour,
    Effectivement, si tu lis la page :
    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2Fapp_methods.htm%23TOC_newDocbc-25&rhtocid=_6_1_8_6_1_24
    tu vois qu’il y a un “X” en quatrième colonne, et si tu te reportes ici :
    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJSPreface%2FQuick_bars.htm
    tu vois qu’il signifie “The property or method is not allowed in Adobe Reader but is available in Acrobat Pro and Acrobat Standard”.
    @+
    :bonjour:

    #65899
    Merlin
    Maître des clés

    Ce n’est pas une question de privilèges, c’est parce qu’Acrobat Reader ne peut pas créer de nouvelles pages.

    J’ai répondu à cette question dans l’autre sujet.

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.