Donnez vie à vos documents numériques !
 

Duplication script. RÉSOLU

abracadabraPDF Forums PDF – Général Duplication script. RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43816
    nico21
    Membre

    Bonjour

    Je suis toujours en tain de réaliser un catalogue 3D multilingues et les contributeurs de ce site mon bien aidé dans ce projet, merci à eux…  :bravo:

    Afin d’éviter d’avoir le même script derrière X boutons et signets, est t’il possible qu’on est un bouton de référence et que les autres bouton ou y soit lier (qu’il récupère automatiquement son script)
    Ce besoin irai dans le cas de ne pas oublier la modification l’un des bouton , la modification serai plus rapide et  pour ma part mieux optimiser (doublons de script).

    L’exemple si dessous du fichier multilingue. Si ça peux aider d’autres débutant comme moi…
    http://dl.free.fr/ju9Hqt11h

    Nicolas

Affichage de 18 réponses de 1 à 18 (sur un total de 18)
  • Auteur
    Réponses
  • #50902
    Merlin
    Maître des clés

    Salut,

    il faut enregistrer une fonction en script de document, et ensuite n’importe quel élément peut l’appeler : maintenance effectivement facilitée et risque d’erreur moindre.

    Menu Options Avancées > Traitement du document > Scripts JavaScripts.

    Exemple :

    Code:
    /* Ce script en deux parties fait alterner la couleur de fond d’un champ lors du Focus (quand le champ est activé/désactivé par l’utilisateur), très pratique pour mettre en relief le champ actif lors de la saisie */

    /* partie à placer en script de document */

    ////////////////////////////////////////////////////////////////////////////
    function switchBackground(fieldName)// declaration de la fonction
    {

    if (getField(fieldName).fillColor == « T »)// si fond du champ est transparent
    {
    this.getField(fieldName).fillColor = color.yellow;// alors il devient jaune
    }

    else // sinon (si pas transparent)
    {
    this.getField(fieldName).fillColor = color.transparent;// alors il devient transparent
    }

    }
    ////////////////////////////////////////////////////////////////////////////

    /* partie à placer sur un bouton en action champ-activé ET en action champ-désactivé */

    ////////////////////////////////////////////////////////////////////////////
    switchBackground(event.target.name);
    ////////////////////////////////////////////////////////////////////////////

    :soleil:

    #50903
    nico21
    Membre

    Merci Merlin, je vais tester ça. ;)

    #50904
    nico21
    Membre

    Testé -> approuvé -> mise en place sur toute la doc :bravo: :contentdance:
    J’ai juste copié mon script du drapeau dans le nom du scrpte français  / anglais.  Dans le bouton FR j’ai mis

    Code:
    francais(event.target.name);

     
    et GB

    Code:
    anglais(event.target.name);

    Simple et terriblement efficace

    Voici le lien s pour ceux que ça intéresse
    http://dl.free.fr/tGDSXvC1D

    Merci Merlin

    #50905
    Merlin
    Maître des clés

    Simple et terriblement efficace

    Ca permet aussi de pouvoir dupliquer un champ sans être obligé de modifier le code dans chacun en fonction de son nom…
    ;)

    #50906
    nico21
    Membre

    Bonjour

    Maintenant j’ai un autre problème concernant les boutons multilingues. J’ai mes deux bouton FR et GB qui me modifie le libellé et l’info bulle du bouton A par l’intermédiaire du Menu Options Avancées > Traitement du document > Scripts JavaScripts. Ce bouton A doit ouvrir un fichier « C-gb.pdf » quand la langue GB est activé et un fichier « D-fr.pdf » quand la langue FR  est activé. Ces deux fichier ce trouve dans un porte folio. J’ai un moyen pour y parvenir en dupliquant le bouton A et le renommnant « A-FR » et A-GB » et par la suite cacher l’un ou l’autre suivant la config de la langues, et chaque  pointe sur le bon fichier. Dans ce cas  » pour ce documents » je pers l’interet « francais(event.target.name); » Pour éviter tout cela y’a t’il un moyen de mètre dans le bouton A un code javascript qui permet d’ouvrir le bon fichier suivant la langue enclanché.

    Nicolas

    #50907
    Merlin
    Maître des clés

    Salut,

    tu as 2 méthodes possibles :

    – soit récupérer le libellé du bouton et agit en fonction de cette info (AMHA ce n’est pas une bonne méthode)

    – il faut que les deux bouton FR et GB qui modifient le libellé ne se contentent pas de ça, il faudrait qu’en même temps ils modifient une variable globale.

    Et c’est en fonction de la valeur de cette variable que l’on va décider du chemin d’accès vers le fichier cible.
    Cette méthode à l’avantage de la souplesse, car elle peut servir à commander d’autres comportements, et sera très simple à faire évoluer si jamais on te demandait une langue supplémentaire ou je ne sais quelle modif.

    Par contre il ne faudra pas oublier d’initialiser la variable à l’ouverture du document en lui donnant une valeur par défaut (FR ou GB).
    :)

    #50908
    nico21
    Membre

    Le  libellé est traité « Alex m’as bien dépatouillé voir poste http://www.abracadabrapdf.net/forum/index.php?topic=1216.15« .
    Quand tu parles de la variable globale, ce code on le retrouvera dans  le javascript général je suppose. C’est compliqué à mettre en oeuvre? Est que tu aurais une source? :Euuuh:

    Bonne journée

    Nicolas

    #50909
    Merlin
    Maître des clés

    Oui, c’est tout bête, il suffit de mettre « global » devant le nom :

    global.maVariable = 1;

    La différence entre une variable et une variable globale c’est que la 1e ne vaut que pendant l’instant où elle existe, alors que la 2e est enregistrée comme dans un cookie, et qu’elle est valide durant toute la session (tant qu’on ne quitte pas Reader ou Acrobat), et elle peut être utilisée par plusieurs fichiers sans encombres.

    Comme exemple il y a ça, dans le script d’ouverture les variables sont mises en global pour pouvoir récupérer leur valeur lors de la fermeture du fichier, et ainsi rétablir les préférences de l’utilisateur :
    http://abracadabrapdf.net/articles.php?lng=fr&pg=636

    (Ou comment travailler plus agréablement…)

    ;)

    #50910
    alex
    Membre

    Il est possible de rendre les variables globales persistantes. Elles seront alors conservées sur un même machine même après fermeture de session.
    Syntaxe
    1-script éxécuté en fermeture du document:
    global.parametreAconserver=x;
    global.setPersistent(« parametreAconserver », true);

    2-Ouverture du document, tester l’existance de parametreAconserver
    if(global.parametreAconserver)
    {
    x=global.parametreAconserver
    }

    Ces paramètres sont stockés dans un fichier local de l’application.

    #50911
    nico21
    Membre

    pour l’instant j’ai trois fonctions javascript

    Code:
    function francais()
    {

    //PAGE1
    this.getField(« TRANSFERT A POUSSOIR »).buttonSetCaption(« TRANSFERT A POUSSOIR »);
    this.getField(« TRANSFERT A POUSSOIR »).userName= »CLIQUER ICI »;

    this.getField(« FICHE MARKETING »).buttonSetCaption(« FICHE MARKETING »);
    this.getField(« FICHE MARKETING »).userName= »CLIQUER ICI »;

    this.getField(« CATALOGUE »).buttonSetCaption(« CATALOGUE »);
    this.getField(« CATALOGUE »).userName= »CLIQUER ICI »;

    this.getField(« FR-GB »).buttonSetCaption(« FR »);
    this.getField(« FR-GB »).userName= »CLIQUER ICI »;

    this.getField(« FICHE DE MONTAGE »).buttonSetCaption(« FICHE DE MONTAGE »);
    this.getField(« FICHE DE MONTAGE »).userName= »FICHE DE MONTAGE – MOT DE PASSE NECESSAIRE »;

    this.getField(« Menu general »).buttonSetCaption(« Menu general »);
    this.getField(« Menu general »).userName= »CLIQUER ICI »;

    this.getField(« OK »).userName= »CLIQUER ICI »;

    this.getField(« Bouton1″).userName= »CLIQUER ICI POUR ACCEDER AU MODEL 3D »;

    }

    la fonction anglais

    Code:
    function anglais()
    {
    global.langue=0

    //PAGE1

    this.getField(« TRANSFERT A POUSSOIR »).buttonSetCaption(« PUSH DIVERTER »);
    this.getField(« TRANSFERT A POUSSOIR »).userName= »CLICK HERE »;

    this.getField(« FICHE MARKETING »).buttonSetCaption(« DATA SHEET »);
    this.getField(« FICHE MARKETING »).userName= »CLICK HERE »;

    this.getField(« CATALOGUE »).buttonSetCaption(« CATALOG »);
    this.getField(« CATALOGUE »).userName= »CLICK HERE »;

    this.getField(« FR-GB »).buttonSetCaption(« GB »);
    this.getField(« FR-GB »).userName= »CLICK HERE »;

    this.getField(« FICHE DE MONTAGE »).buttonSetCaption(« SHEET ASSEMBLY »);
    this.getField(« FICHE DE MONTAGE »).userName= »SHEET ASSEMBLY – LOGIN NECESSARY »;

    this.getField(« Menu general »).buttonSetCaption(« HOME MODEL 3D »);
    this.getField(« Menu general »).userName= »CLICK HERE »;

    this.getField(« OK »).userName= »CLICK HERE »;

    this.getField(« Bouton1″).userName= »CLICK HERE TO GO TO THE MODEL 3D »;

    }

    la fonction start

    Code:
    function start()
    {global.langue = 1;

    }

    3 boutons FR GB qi copie le script et le bouton1

    FR 

    Code:
    francais(event.target.name);

    GB 

    Code:
    anglais(event.target.name);

    Et le bouton 1 « ou je patoge ;)  » . Je teste les cas mis dans les guide javascript « code si dessous) mais qui ne va pas par rapport à ma fonction. Le document pdf d’en-tete doit ouvrir un pdf qui est dans  sous dossier.

    // Open a document 1er pour piece jointe et le second placer sur c/temp

    Code:
    if (global.langue=1)
    this.exportDataObject({ cName: « myDoc.pdf », nLaunch: 2 });
    else var myDoc = app.openDoc(« /c/temp/myDoc2.pdf »);

    Donc pour l’instant je n’arrive pas à connecter le « global.langue » par rapport aux deux fonctions de langue et je n’arrive pas à ouvrir un fichier dans note intranet type K:catalog 3dtestmydoc2.pdf

    Bonne soirée

    Nicolas

    #50912
    nico21
    Membre

    Voici le code pour le bouton qui va ouvrir un fichier suivant la langue

    BoutonTest qui va chercher dans un sous repertoire par raport au fichier ouvert :contentdance:

    Code:
    // Open a document
    if (global.langue == 0)
    app.openDoc(« ./8141_DOC/Schema pesee statique.pdf »);
    else
    app.openDoc(« ./8141_DOC/fr-CB016P-4.pdf »);

    Code:
    function start()
    {global.langue = 1;
    }
    Code:
    function anglais()
    {

    global.langue = 1;
    //PAGE1

    this.getField(« TRANSFERT A POUSSOIR »).buttonSetCaption(« PUSH DIVERTER »);
    this.getField(« TRANSFERT A POUSSOIR »).userName= »CLICK HERE »;

    this.getField(« FICHE MARKETING »).buttonSetCaption(« DATA SHEET »);
    this.getField(« FICHE MARKETING »).userName= »CLICK HERE »;

    this.getField(« CATALOGUE »).buttonSetCaption(« CATALOG »);
    this.getField(« CATALOGUE »).userName= »CLICK HERE »;

    this.getField(« FR-GB »).buttonSetCaption(« GB »);
    this.getField(« FR-GB »).userName= »CLICK HERE »;

    this.getField(« FICHE DE MONTAGE »).buttonSetCaption(« SHEET ASSEMBLY »);
    this.getField(« FICHE DE MONTAGE »).userName= »SHEET ASSEMBLY – LOGIN NECESSARY »;

    this.getField(« Menu general »).buttonSetCaption(« HOME MODEL 3D »);
    this.getField(« Menu general »).userName= »CLICK HERE »;

    this.getField(« OK »).userName= »CLICK HERE »;

    this.getField(« Bouton1″).userName= »CLICK HERE TO GO TO THE MODEL 3D »;

    this.getField(« BoutonTest »).buttonSetCaption(« Doc en Anglais »);
    this.getField(« BoutonTest »).userName= »CLIQUER ICI POUR ACCEDER AU MODEL 3D »;

    }

    Code:
    function francais()
    {
    global.langue = 0;
    //PAGE1
    this.getField(« TRANSFERT A POUSSOIR »).buttonSetCaption(« TRANSFERT A POUSSOIR »);
    this.getField(« TRANSFERT A POUSSOIR »).userName= »CLIQUER ICI »;

    this.getField(« FICHE MARKETING »).buttonSetCaption(« FICHE MARKETING »);
    this.getField(« FICHE MARKETING »).userName= »CLIQUER ICI »;

    this.getField(« CATALOGUE »).buttonSetCaption(« CATALOGUE »);
    this.getField(« CATALOGUE »).userName= »CLIQUER ICI »;

    this.getField(« FR-GB »).buttonSetCaption(« FR »);
    this.getField(« FR-GB »).userName= »CLIQUER ICI »;

    this.getField(« FICHE DE MONTAGE »).buttonSetCaption(« FICHE DE MONTAGE »);
    this.getField(« FICHE DE MONTAGE »).userName= »FICHE DE MONTAGE – MOT DE PASSE NECESSAIRE »;

    this.getField(« Menu general »).buttonSetCaption(« Menu general »);
    this.getField(« Menu general »).userName= »CLIQUER ICI »;

    this.getField(« OK »).userName= »CLIQUER ICI »;

    this.getField(« Bouton1″).userName= »CLIQUER ICI POUR ACCEDER AU MODEL 3D »;

    this.getField(« BoutonTest »).buttonSetCaption(« Doc en Français »);
    this.getField(« BoutonTest »).userName= »CLIQUER ICI POUR ACCEDER AU MODEL 3D »;

    }

    Maintenant que j’ai passé ce mur avec votre aide, j’ai une nouvelle barrière qui est là. Je sais ouvrir le fichier, mais ce fichier est un portfolio!!! Comment accéder au bon fichier du portfolio qui est dans des dossiers FR GB .

    #50913
    Merlin
    Maître des clés

    Maintenant que j’ai passé ce mur avec votre aide, j’ai une nouvelle barrière qui est là. Je sais ouvrir le fichier, mais ce fichier est un portfolio!!! Comment accéder au bon fichier du portfolio qui est dans des dossiers FR GB .

    J’ai vu récemment un tuto (américain) qui expliquait ça, je vais essayer de remettre la main dessus…
    :geek:

    #50914
    nico21
    Membre

    Je suis allée plus loin dans le cas d’une 3eme langue si ça peux aider des débutants comme moi…

    dans la foction start j’ai mis

    Code:
    function start()
    {global.langue = « lg_xx »;
    }

    J’ai recrée une fonction allemand en ayant

    Code:
    global.langue = « lg_de »;

    ; dans la fonction francais j’ai rajouté

    Code:
    global.langue = « lg_fr »;

    et dans la fonction anglais

    Code:
    global.langue = « lg_gb »;

    Le bouton qui va ouvrir le fichier

    Code:
    // Open a document
    if (global.langue == « lg_fr »)
    app.openDoc(« ./8141_DOC/ide-100-200 FR.pdf »);
    if (global.langue == « lg_gb »)
    app.openDoc(« ./8141_DOC/ide-100-200 GB.pdf »);
    if (global.langue == « lg_de »)
    app.openDoc(« ./8141_DOC/ide-100-200 DE.pdf »);

    ;)

    #50915
    Merlin
    Maître des clés

    Voilà, je l’ai retrouvé, c’est là : http://uvsar.blogspot.com/2010/03/setting-default-document-when-pdf.html

    :ampoule:

    #50916
    nico21
    Membre

    Merci Merlin

    #50917
    nico21
    Membre

    Bonjour

    J’avais réaliser un pdf multilangue avec l’aide des membre de ce site . Il  marchait  trés bien . Je ne sais pas si ça vien de la mise à jour de adobe
    la fonction

    Code:
    function start()
    {global.langue = « lg_fr »;
    }

    ne marche plus. Est que c’est la cause? V9.3.4

    #50918
    Merlin
    Maître des clés

    Salut,

    il aurait été préférable que tu crée un nouveau sujet…

    Sinon, ce script ne peut pas fonctionner tel quel, il fait appel a une variable globale qui doit certainement être déclarée ailleurs…

    Il faut utiliser ceci :

    Code:
    if (app.language == « FRA »)
    {
    //ici le script
    }

    FRA pour français, pour connaître les autres codes disponibles : http://livedocs.adobe.com/acrobat_sdk/9.1/Acrobat9_1_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm?href=JavaScript_SectionPage.70.1.html#1515775&accessible=true

    (Ce n’est pas un lien direct, une fois sur la page cible il faut rechercher : « language »)

    :)

    #50919
    nico21
    Membre

    Merci Merlin :extra:

    J’ai fait une mise à jour du soft, passage en 9.4.1 et tout c’est remis à remarcher. Ah ces bug…. :doute:

    a+

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