Donnez vie à vos documents numériques !
 

Not Allowed – Script

abracadabraPDF Forums PDF – Général Not Allowed – Script

  • Créateur
    Sujet
  • #74706
    jctremblay
    Participant

    Bonjour!
    J’ai un script qui fonctionne très bien dans la console, ou via une action.
    Par contre, il ne fonctionne pas dans un action>javascript, un doc-level script, ou même un script d’application.

    le message d’erreur ressemble à ceci:
    NotAllowedError: Security settings prevent access to this property or method. Doc.createTemplate

    Le script, fait un modèle d’une page, d’un nombre de copies, et d’une destination des copies.

    Est-ce qu’il y a une façon de permettre l’execution d’un tel script?

    Le script est en pièce jointe.

    Attachments:
    You must be logged in to view attached files.
Affichage de 22 réponses de 1 à 22 (sur un total de 22)
  • Auteur
    Réponses
  • #74708
    bebarth
    Maître des clés

    bonjour,

    Si tu regardes la 3e colonne de la Quick bar, le S indique les niveaux de privilèges où tu peux exécuter cette méthode et on ne trouve pas le niveau Sript de document.

    Par contre, si tu étends les privilèges tu devrais pouvoir te créer un menu qui te permette d’exécuter ce script.

    Essaye et dis-moi/nous.

    @+

    #74709
    Merlin
    Maître des clés

    Bonjour

     

    “createTemplate” et “removeTemplate” ne peuvent fonctionner que depuis la console ou depuis une action (batch), et que avec Acrobat Pro (ou Standard).

    Pour que ça fonctionne avec Reader il faudrait que le document ait des droits étendus (Extended Rights) mais pas ceux qu’on peut activer avec Acrobat Pro, il faut ceux d’un niveau supérieur qu’il faut acheter (cher) chez Adobe.

     

    L’astuce serait donc de créer les templates d’avance, utiliser la fonction “spawn” pour ajouter des pages et la fonction “deletePage” pour les supprimer.

    #74710
    jctremblay
    Participant

    @Merlin,

    Il y a donc une sérieuse limite en lien avec la sécurité. C’est compréhensible… mais chiant à la fois.

    Je vais, comme tu le suggères, devoir faire mes modèles avant et modifier mon script pour avoir un choix des modèles existant à dupliquer. Je garde quand même celui-ci à sauvegarder en action.

    @bebarth,
    De quel Quick bar parles-tu?

    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par jctremblay.
    #74712
    Merlin
    Maître des clés

    On peut dupliquer une page template qu’elle soit masquée ou apparente, ça ne change rien. Il faut seulement que ladite page soit enregistrée comme template.

     

    La QuickBar, ou Table Quick Key :

    https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/index.html#table-quick-key

    Voir aussi la capture ci-dessous.

    Attachments:
    You must be logged in to view attached files.
    #74714
    Merlin
    Maître des clés

    PS à propos de la QuickBar : attention quand même car la documentation est farcie d’erreurs…

    #74715
    bebarth
    Maître des clés

    Désolé je suis dans le cap corse sans pratiquement aucun réseau…

    @+

    Attachments:
    You must be logged in to view attached files.
    #74718
    jctremblay
    Participant

    Désolé je suis dans le cap corse sans pratiquement aucun réseau…

    Profite…

    #74719
    jctremblay
    Participant

    On peut dupliquer une page template qu’elle soit masquée ou apparente, ça ne change rien. Il faut seulement que ladite page soit enregistrée comme template.


    @Merlin
    Est-ce qu’il y a un scénario ou cela pourrait être avantageux ou problèmatique d’avoir les page modèles visible ou l’inverse.

    Ce que je comprend…
    Pages modèles cachées = Augmentation du Poids du PDF
    Pages modèles visible = Si l’utilisateur supprime cette page, le modèle disparaît également.

    #74722
    Merlin
    Maître des clés

    Les pages modèles masquées n’augmentent pas vraiment le poids du PDF mais effectivement une page modèle visible est définitivement supprimée du document. (Acrobat Reader ne peut supprimer que des pages modèles, il ne peut pas supprimer de “vraies” pages).

    L’avantage de la page masquée quand elle est générée/dupliquée c’est que les données saisies dans les champs de formulaire sont en double : dans la page visible et dans la page masquée. Donc quand l’utilisateur change d’avis il peut retrouver les données déjà saisies quand il re-génère une page précédemment supprimée.

    Sauf si on utilise le paramètre “bRename” qui renomme les champs dans la (les) page(s) générée(s), ce qui est indispensable quand on génère plusieurs pages à partir du même modèle.

    #74725
    jctremblay
    Participant

    Merci pour ces précision.

    Dans mon cas, l’avantage des modèles masqués est d’offrir ce panneau à l’utilisateur lui offrant un choix de modèle à dupliquer.

    Attachments:
    You must be logged in to view attached files.
    #74727
    Merlin
    Maître des clés

    Waouh, beau boulot !

    Si ça t’intéresse, bebarth m’avait écrit un script qui “démasque” les modèles masqués en conservant leurs noms de modèle dans le panneau des pages, au lieu d’avoir page 1, page 2, etc.

    C’est très pratique quand il y en a beaucoup.

    Avec son autorisation (dont je doute pas) je pourrais te l’envoyer, ou le poster céans.

    #74728
    jctremblay
    Participant

    Waouh, beau boulot ! Si ça t’intéresse, bebarth m’avait écrit un script qui “démasque” les modèles masqués en conservant leurs noms de modèle dans le panneau des pages, au lieu d’avoir page 1, page 2, etc. C’est très pratique quand il y en a beaucoup. Avec son autorisation (dont je doute pas) je pourrais te l’envoyer, ou le poster céans.

    Ce serait utile en effet. Est-ce qu’un script pourrait aussi créer un modèle en utilisant le nom du panneau page? J’imagine que oui.

    #74729
    Merlin
    Maître des clés

    Par ailleurs j’ai appris récemment par Thom Parker que le logiciel PDF XChange, utilisé notamment par Michel, implémente le “JavaScript Dialog object”, ce qui devrait être plus pratique que Acrobat pour créer ce genre de boite de dialogue.

    Voir : https://community.adobe.com/t5/acrobat-discussions/copying-bookmarks-from-one-pdf-to-another/m-p/12788954#M353166

    #74730
    Merlin
    Maître des clés

    “Ce serait utile en effet. Est-ce qu’un script pourrait aussi créer un modèle en utilisant le nom du panneau page? J’imagine que oui.”

    Je n’en ai pas mais bebarth est capable de tout… 😉

    Je n’ai pas eu ce besoin car s’il y a peu de modèles ce n’est pas très utile, et s’il y en a beaucoup je préfère prendre le temps de le créer manuellement par séquence en vérifiant au fur et à mesure. Quand je dis “beaucoup” c’est parfois plus de 70 pour certains clients.

    Par ailleurs Acrobat ne sait que numéroter les pages en 1, 2, 3, etc. sans permettre l’ajout d’un ou plusieurs zéro directeur (01, 02, 03 ou 001, 002, 003, etc) ce qui est pénalisant pour ce que j’en fait.

    #74734
    bebarth
    Maître des clés

    bonjour,

    Si ça t’intéresse, bebarth m’avait écrit un script qui “démasque” les modèles masqués en conservant leurs noms de modèle dans le panneau des pages, au lieu d’avoir page 1, page 2, etc. C’est très pratique quand il y en a beaucoup. Avec son autorisation (dont je doute pas) je pourrais te l’envoyer, ou le poster céans.


    @Merlin
    : Tu peux partager car de tête je ne me souviens pas et je ne serai de retour qu’à la fin du mois pour le plonger dans mes archives…

    @+
    😎

    #74744
    Merlin
    Maître des clés

    Le script qui démasque les modèles en conservant leurs noms, à placer dans une Action :

    var aTousLesModeles = this.templates;
    for (i = 0; i < aTousLesModeles.length; i++) {
    aTousLesModeles.hidden = false; // true ou false
    var leNom=aTousLesModeles.name;
    var ind=leNom.substr(leNom.length-1);
    var nm=leNom.substr(0,leNom.length-1);
    this.setPageLabels(this.numPages-1, ["D",leNom.substr(0,leNom.length-1),ind-1]);
    }

    #74772
    jctremblay
    Participant

    Le script qui démasque les modèles en conservant leurs noms, à placer dans une Action :

    Merci!

    Je l’ai modifié car le dernier caractère du nom du modèle n’étais pas conservé.

    var aTemplates = this.templates;
    for (var i = 0; i < aTemplates.length; i++) {
    aTemplates.hidden = false; // true ou false
    var leNom = aTemplates.name;
    var ind = leNom.substr(leNom.length - 1);
    this.setPageLabels(this.numPages - 1, ["D", leNom, ind - 1]);
    }

     

    #74777
    Merlin
    Maître des clés

    Tu as bien fait, à l’origine c’était fait exprès car ça correspondait à un type de documents particuliers, et ensuite je l’ai conservé tel quel.

    • Cette réponse a été modifiée le il y a 4 mois par Merlin.
    #74793
    Merlin
    Maître des clés

    Je l’ai modifié car le dernier caractère du nom du modèle n’étais pas conservé.

    Quand j’utilise ton script ça ne fonctionne pas et la console renvoie ce message d’erreur :

    TypeError: leNom is undefined
    5:Batch:Exec

    #74794
    jctremblay
    Participant

    J’avais le même erreur avec l’original de bebarth. Version corrigé.

    var aTemplates = this.templates;
    for (var i = 0; i < aTemplates.length; i++) {
    aTemplates.hidden = false;
    var leNom = aTemplates.name;
    var ind = leNom.substr(leNom.length - 1);
    this.setPageLabels(this.numPages - 1, ["D", leNom, ind - 1]);
    }

    #74795
    bebarth
    Maître des clés

    bonjour,
    Toujours le même problème d’affichage d’un “i” entre crochets sur le forum… On peut le remplacer l’indice par un “j” et ça devrait beaucoup mieux marcher :
    var aTousLesModeles=this.templates;
    for (j=0; j<aTousLesModeles.length; j++) {
    aTousLesModeles[j].hidden=false; // true ou false
    var leNom=aTousLesModeles[j].name;
    var ind=leNom.substr(leNom.length-1);
    var nm=leNom.substr(0,leNom.length-1);
    this.setPageLabels(this.numPages-1, ["D",leNom.substr(0,leNom.length-1),ind-1]);
    }

    P.S. : Je ne me souviens pas ce qu’elle fait là, mais la variable nm en ligne 6 ne sert à rien ici…

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 mois et 3 semaines par bebarth.
    #74797
    Merlin
    Maître des clés

    Cette variable devrait être insérée dans la dernière ligne, où tu as répété l’instruction.

    Je l’ai renommée ci-dessous :

    var aTousLesModeles=this.templates;
    for (j=0; j<aTousLesModeles.length; j++) {
    aTousLesModeles[j].hidden=false; // true ou false
    var leNom = aTousLesModeles[j].name;
    var ind = leNom.substr(leNom.length-1);
    var sNom = leNom.substr(0,leNom.length-1);
    this.setPageLabels(this.numPages-1, ["D",sNom,ind-1]);
    }

     

    En tout cas tu me sauves la mise car je suis justement en train de travailler sur les documents pour lesquels j’ai besoin de ce script qui affiche le nom exact des templates (sans ajouter de numéro), qui ne fonctionnait plus à cause de fichu bug du “i” sur le forum.

    😉

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