Donnez vie à vos documents numériques !
 

Java script sur "PinsSalzmann.pdf" et "Aubade

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

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43012
    marc
    Invité

    Bonjour,

    Avant de commencer, j’envoie des remerciements tout particuliers au modérateur du site qui m’a sauvé la mise (par emails interposés) alors que je devais absolument boucler un CD-Rom dans la journée. Sur ses conseils, je passe donc à présent par le forum pour vous déballer mes problèmes. Maintenant que j’ai diffusé 100 copies de mon premier CD-Rom tout en PDF, je dois préparer une version 2 pour dans moins d’un mois (modifs de contenu et améliorations ergonomiques pendant qu’on y est).

    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…

    L’intérêt de ces fichiers pour mon projet est de pouvoir contrôler les préférences du Reader en mode plein écran, ce qui m’intéresse grandement.

    Précision importante, je suis novice en matière de JavaScript et de programmation en général.

    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 ?

    – 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.

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

    Pourquoi une mise en variable ?

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

    Et j’aimerais une traduction des lignes suivantes :

    if (typeof global.etamCompteur == “undefined”)

    {

    app.beep();

    if (app.alert(etamAlert, 2, 2) == 4)

    {

    global.etamCompteur = 1;

    this.pageNum++;//remove if used on a Page Open action

    app.fs.isFullScreen = true;

    this.zoom = 100; // zoom (optional)

    }

    }

    else

    {

    this.pageNum++;

    app.fs.isFullScreen = true;

    this.zoom = 100; // zoom

    }

Affichage de 5 réponses de 1 à 5 (sur un total de 5)
  • Auteur
    Réponses
  • #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:

    #46841
    Merlin
    Maître des clés

    PS :

    – par 1re page j’entend la page qui est définie comme page d’ouverture dans les propriétés d’ouverture, par défaut c’est la première.

    – Unicode n’est utilisable qu’à partir des versions 5 de Reader et d’Acrobat.

    #46842
    marc
    Invité

    Avec un peu de pédagogie ce n’est pas sorcier !!!

    Si tu utilise Mac OSX tu trouvera ton bonheur dans le menu Clavier grâce à “la table de caractères”.

    Sinon le mieux est de télécharger les 4 premières tables de cette liste (LATIN XXX) : http://www.unicode.org/charts/

    :foo:

    #46843
    marc
    Invité

    J’avais pas vu ta réponse. Tu as osé usurper mon identité, du coup, je n’ai pas été informé.

    J’était prêt à demander une traduction pour Michèle pêche en bord de Rhône, mais là du coup, j’ai tout ce qu’il me faut. Merci !

    #46844
    Merlin
    Maître des clés

    Désolé, c’est encore un coup de l’abracadabraFantôme, je m’en aperçois parce que tu en parle…

    Il n’aime pas du tout que je me connecte de 2 endroits différents avec le même login, le bougre !!!

    😆 😆

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