abracadabraPDF › Forums › PDF – Général › Duplication script. RÉSOLU
- Ce sujet est vide.
-
CréateurSujet
-
26 mai 2010 à 14:35 #43816nico21Membre
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/ju9Hqt11hNicolas
-
CréateurSujet
-
AuteurRéponses
-
26 mai 2010 à 17:27 #50902MerlinMaî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:
27 mai 2010 à 06:49 #50903nico21MembreMerci Merlin, je vais tester ça.
27 mai 2010 à 09:19 #50904nico21MembreTesté -> 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 misCode:francais(event.target.name);
et GBCode:anglais(event.target.name);Simple et terriblement efficace
Voici le lien s pour ceux que ça intéresse
http://dl.free.fr/tGDSXvC1DMerci Merlin
27 mai 2010 à 16:55 #50905MerlinMaître des clésSimple 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…
7 juin 2010 à 09:36 #50906nico21MembreBonjour
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
7 juin 2010 à 10:46 #50907MerlinMaître des clésSalut,
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).
7 juin 2010 à 12:14 #50908nico21MembreLe 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
7 juin 2010 à 16:41 #50909MerlinMaître des clésOui, 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…)
9 juin 2010 à 14:09 #50910alexParticipantIl 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.
9 juin 2010 à 14:58 #50911nico21Membrepour 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
10 juin 2010 à 09:26 #50912nico21MembreVoici 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;
//PAGE1this.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 .
10 juin 2010 à 12:09 #50913MerlinMaître des clésMaintenant 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:10 juin 2010 à 15:09 #50914nico21MembreJe 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”);10 juin 2010 à 19:01 #50915MerlinMaître des clésVoilà, je l’ai retrouvé, c’est là : http://uvsar.blogspot.com/2010/03/setting-default-document-when-pdf.html
:ampoule:
14 juin 2010 à 08:06 #50916nico21MembreMerci Merlin
16 décembre 2010 à 14:34 #50917nico21MembreBonjour
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 fonctionCode:function start()
{global.langue = “lg_fr”;
}ne marche plus. Est que c’est la cause? V9.3.4
16 décembre 2010 à 19:32 #50918MerlinMaître des clésSalut,
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”)
17 décembre 2010 à 08:06 #50919nico21MembreMerci 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+
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.