Donnez vie à vos documents numériques !
 

Répondre à : Java script sur "PinsSalzmann.pdf" et "Aubade

abracadabraPDF Forums PDF – Général Java script sur "PinsSalzmann.pdf" et "Aubade Répondre à : Java script sur "PinsSalzmann.pdf" et "Aubade

#46840
Merlin
Maître des clés

Après un tel bouquet de fleurs, je me dois de te fournir une réponse complète !

;-)

[J’ai un peu regardé le JavaSript sur les fichiers “PinsSalzmann.pdf” et “AubadeCal.pdf” proposés sur le site. Au passage, je trouve Aubade beaucoup moins sexy vu sous l’angle de son JavaSript… ]

On reste pourtant dans le “textuel soft” ;-)))

[Voici quelques petites questions en vrac :

– Quel intérêt de placer dans le JavaScript un facteur de zoom alors qu’Acrobat peut le définir dans les propriétés d’ouverture ? ]

Parce-que ce dernier est systématiquement ignoré lors du passage en mode Plein écran s’il n’est pas effectué au moment de l’ouverture de la 1re page, et c’est normal : puisqu’il s’agit d’une option “d’ouverture” elle n’est prise en compte qu’à l’ouverture du PDF, pas après…

Sinon par défaut l’affichage se fait à la taille de l’écran (Plein écran).

Quand au script “Start” dans “AubadeCal.pdf” il est exécuté AVANT l’ouverture de la page… Donc meme problème.

[ – Je souhaite régler les préférences de l’utilisateur dès l’ouverture du document. Dans “Définir des actions de script”, Acrobat ne le propose pas. ]

Les scripts de document (Doc level scripts) sont exécutés à l’ouverture du document (c’est-à-dire immédiatement avant l’ouverture de la 1re page). Dans “AubadeCal2004.pdf” le script “start” est placé dans JavaScript > Script Javascripts pour cette raison.

Une autre solution est de placer le script dans l’action “ouverture de la page” mais ce n’est valable que si le document ne comporte qu’une seule page (sinon il se ré-exécute chaque fois que l’utilisateur revient sur la 1re page), c’est donc inutilisable pour un diaporama.

[ – Je ne comprend pas la mise en variable de l’alerte sur PinsSalzmann :

Pourquoi une mise en variable ?]

Pour que l’alerte ne s’affiche qu’une seule fois au 1er lancement, et non pas à chaque lancement du diaporama.

[A quoi correspond la synthaxe des accents du texte de l’alerte (quelles sont les règles ?) ]

Tous les caractères non-ASCII sont codés au format Unicode pour la compatibilité multi-plateformes, sinon les car. accentués ou “spéciaux” sont remplacés. Un script fait sur Mac ne s’affichera pas correctement sous Windows, et lycée de Versailles. (Et ne parlons pas des Unix…)

La règle c’est de remplacer le caractère par son équivalent en codage Unicode, précédé d’un antislash “” et d’un “u”.

Ainsi “Bébé va téter sa purée” devient “Bu00E9bu00E9 va tu00E9ter sa puru00E9e”, puisque le code Unicode du “é” est “00E9” et qu’il est précédé de “u”

C’est une opération que j’effectue tout à la fin par rechercher/remplacer, une fois que je suis sur de mon script. Parce qu’après, ça devient illisible pour un humain…

[Et j’aimerais une traduction des lignes suivantes : ]

if (typeof global.etamCompteur == “undefined”) // si la variable globale “etamCompteur” n’est pas définie :

{

app.beep(); // fait biper l’ordinateur (inutile en version 6)

if (app.alert(etamAlert, 2, 2) == 4) // affiche le contenu (la valeur) de la variable “etamAlert” dans une boite d’alerte. Et si l’utilisateur clique OK :

{

global.etamCompteur = 1; // assigne la valeur “1” à la variable globale “etamCompteur” (pour qu’ainsi elle devienne “définie”)

this.pageNum++; // affiche la page suivante

app.fs.isFullScreen = true; // en mode plein écran

this.zoom = 100; // avec un facteur de zoom = 100% (si l’utilisateur clique “Annuler”, il ne se passe rien)

}

}

else // sinon (si la variable globale “etamCompteur”, n’est pas non-définie. Ce qui veut dire que l’utilisateur à déjà vu l’alerte et cliqué OK. Dans ce cas la valeur de la variable est donc de “1”.) :

{

this.pageNum++; // affiche la page suivante

app.fs.isFullScreen = true; // en mode plein écran

this.zoom = 100; // // avec un facteur de zoom = 100% (C’est la même chose que ci-dessus, mais sans l’affichage de l’alerte)

}

La variable “globale” (contrairement à la variable “locale”) est stockée durant toute une session, c’est à dire jusqu’à ce que l’on quitte le logiciel. Donc si on réouvre le PDF sans avoir quitté le logiciel entre temps l’alerte ne sera pas affichée non plus.

Ca va mieux ?

:sun: