Donnez vie à vos documents numériques !
 

PDF : les différents niveaux d’utilisation des scripts JavaScript

javascript-icone

Il y a scripts JavaScript et scripts JavaScript, certains ont tous les droits et d’autres non, tout dépend à quel niveau ils s’exécutent.
L’architecture de sécurité du format PDF respecte une hiérarchie stricte, et comme avec toute hiérarchie : plus l’ordre vient d’en haut, moins il est discutable.
Et vice-versa : on ne peut pas permettre qu’un simple matelot puisse donner l’ordre d’appareiller à un porte-avions.

Certaines restrictions sont parfois frustrantes pour le concepteur mais il faut les envisager sous l’angle de la sécurité et de la protection maximale de l’utilisateur, qui pourrait aussi bien être votre directeur que votre grand-mère…

Il en résulte nécessairement un difficile compromis entre liberté-facilité d’utilisation et restrictions avec alertes “de la mort qui tue” qui font peur à tout le monde et en particulier à votre directeur (votre grand-mère en a certainement vu d’autres).

 

1- Script d’application

2- Script de traitement par lot – Actions

3- Script de document

4- Script d’évènement

5- Script d’action utilisateur

Restriction importante dans tous les cas

 

Dossier JavaScripts d'Acrobat Pro1- Script d’application

Tous privilèges d’exécution.

Un script d’application est un script JavaScript qui se présente sous la forme d’un fichier texte portant le suffixe .js que l’on installe dans le sous-répertoire JavaScripts d’un logiciel de lecture ou d’édition de documents PDF, comme Adobe Acrobat, Foxit Reader, etc.

Il doit être installé manuellement (explicitement) sur chaque poste utilisateur par quelqu’un censé savoir ce qu’il fait et censé avoir vérifié ce qu’il installe. Il n’est donc pas censé pouvoir être malicieux. Dans le cadre d’un parc machines important, on peut installer automatiquement les scripts d’application avec un installeur personnalisé, mais ça ne change rien aux considérations sécuritaires.

Le script d’application est chargé au démarrage du logiciel et à tous les droits possibles, c’est le sommet de la hiérarchie : enregistrement d’un fichier PDF dans un répertoire pré-déterminé, modification de l’interface du logiciel (boutons et menus), etc.

Du fait de ses privilèges maximum, dans une entreprise un tant soit peu sérieuse et soucieuse de sécurité un script d’application ne devrait pas pouvoir être installé sans l’aval d’un responsable.

Exemples (gratuits) :

 

 

Assistant d'action d'Acrobat Pro2- Script de traitement par lot – Actions

Privilèges limités.

Les “Séquences de traitement par lot” d’Acrobat Pro sont devenues des “Actions” depuis la version X, cela ne change pas grand-chose au principe ni à leur fonctionnement mais l’interface y a beaucoup gagné.

En ce qui concerne la sécurité et la protection les Actions sont particulières dans le sens ou elles ne fonctionnent qu’avec le logiciel Adobe Acrobat Pro* qui est un logiciel commercial et qu’elles répondent à un usage professionnel et “avancé”. D’autre part l’utilisateur est censé savoir à peu près ce qu’il fait, a priori ça ne concerne donc pas ma grand-mère ni le directeur.
*  ==> les Actions ne fonctionnent pas avec le logiciel gratuit Acrobat Reader.

En plus de pouvoir enchainer automatiquement quasiment toutes les fonctions d’Acrobat Pro, les Actions peuvent aussi exécuter des scripts JavaScript. Mais comme une Action peut être installée et exécutée immédiatement depuis un double-clic de l’utilisateur ses droits sont forcément moindres que ceux d’un script d’application, particulièrement en ce qui concerne les droits d’écriture/lecture des fichiers.

Un script d’Action peu s’appuyer sur des fonctions enregistrées dans des scripts d’application pour étendre ses droits, mais bien entendu ça ne fonctionne qu’avec les comptes et postes utilisateurs dans lesquels les scripts d’application correspondants ont été préinstallés.

Exemples (gratuits) :

 

 

L'éditeur de script de document d'Acrobat Pro3- Script de document

Privilèges restreints.Le script de document s’exécute à l’ouverture

de n’importe quel PDF dans tout logiciel reconnaissant les scripts JavaScript, en général il est utilisé pour pré-charger en mémoire vive des fonctions personnalisées particulières au document ou récurrentes (menus déroulants, formats, validation, etc.), ce qui rend leur accès plus rapide pour la machine et leur maintenance plus facile pour l’humain, qui évite ainsi d’avoir des bouts de scripts dispersés et redondants un peu partout dans le document PDF.

Comme il peut être exécuté à l’ouverture de n’importe quel PDF téléchargé n’importe où par n’importe quelle grand-mère ou n’importe quel directeur ce type de script à des droits beaucoup plus restreints, par exemple il est impossible de modifier ou d’enregistrer javascriptement un fichier, PDF ou autre, sans l’autorisation explicite de l’utilisateur. Pas question non plus d’enregistrer quoi que soit dans un répertoire pré-défini, et encore moins de pouvoir modifier l’interface du logiciel. Seul l’ajout temporaire d’un bouton-icône flottant est possible.

Un script de document peu s’appuyer sur des fonctions enregistrées dans des scripts d’application pour étendre ses droits, mais bien entendu ça ne fonctionne qu’avec les comptes et postes utilisateurs dans lesquels les scripts d’application correspondants ont été préinstallés.

Avec Acrobat Pro on accède aux scripts de document via : panneau Outils : JavaScript : Scripts JavaScript du document.
Avec Scribus on accède aux scripts de document via : menu Edition : JavaScripts.

Exemples (gratuits) :

 

 

L'éditeur de scripts d'évènements d'Acrobat Pro4- Script d’évènement

Privilèges restreints.

Le script d’évènement n’a pas plus de droits ni de privilèges que le script de document, la différence c’est qu’il s’exécute lors d’un évènement précis déclenché par l’utilisateur.

Il y en a sept disponibles répartis en deux groupes.

Les évènements du document :

  • Quand le document sera fermé
  • Quand le document sera enregistré
  • Quand le document a été enregistré
  • Quand le document sera imprimé
  • Quand le document a été imprimé

Avec Acrobat Pro on accède aux scripts d’événements du document via : panneau Outils : JavaScript : Actions du document.

Les évènements de page :

  • Ouverture de la page
  • Fermeture de la page

Avec Acrobat Pro on accède aux scripts d’événements de page via le menu local du panneau Pages (ou vignettes) : Propriétés : Actions

À ma connaissance, Scribus ne gère pas encore les scripts d’événement.

Un script d’évènement peu s’appuyer sur des fonctions enregistrées dans des scripts d’application pour étendre ses droits, mais bien entendu ça ne fonctionne qu’avec les comptes et postes utilisateurs dans lesquels les scripts d’application correspondants ont été préinstallés.

 

 

Fenêtre de Propriétés des champs d'Acrobat Pro5- Script d’action utilisateur

Privilèges restreints.

Mêmes droits et privilèges que les deux précédents, ce type de script répond à une action directe de l’utilisateur sur un élément du document, comme le clic sur un bouton ou un signet, le remplissage d’un champ de texte, l’utilisation d’une liste déroulante, l’apposition d’une signature numérique, etc.

Les scripts d’action utilisateur sont en général des aides ou des contrôles de saisie personnalisés, ou bien des calculs complexes entre champs de saisie numérique.
C’est le type de script JavaScript le plus couramment utilisé.

Un script d’action utilisateur peu s’appuyer sur des fonctions enregistrées dans des scripts d’application pour étendre ses droits, mais bien entendu ça ne fonctionne qu’avec les comptes et postes utilisateurs dans lesquels les scripts d’application correspondants ont été préinstallés.

Exemple (gratuit) : https://abracadabrapdf.net/category/pdf-de-demo/formulaires/

 

 

Fenêtre des Préférences JavaScript d'Acrobat ProRestriction importante dans tous les cas

Dans les Préférences d’Adobe Acrobat et de tous les logiciels sérieux il est possible pour l’utilisateur, ou pour son service informatique, de désactiver l’exécution des scripts JavaScript dans les documents PDF.

Préférences JavaScript de Foxit Reader

Pour le concepteur de formulaires PDF ou de PDF interactifs cela veut dire qu’il faut toujours prendre cette éventualité en compte.

Mais comment afficher une alerte pour prévenir l’utilisateur quand on ne peut pas utiliser JavaScript ?
Il existe des astuces, tout est expliqué dans ces articles :