Toutes mes réponses sur les forums
-
AuteurRéponses
-
MerlinMaître des clésC’est une bonne question… :joker:
MerlinMaître des clésIl doit y avoir une explication mais j’ai pas compris !
En JavaScript le compte commence à zéro ! :geek:
MerlinMaître des cléspar exemple « on vous demande de saisir 8 chiffres…. »
« Cette référence doit avoir exactement 8 chiffres, merci de recommencer. » serait certainement plus sympathique pour l’utilisateur final. :Smiley15:
MerlinMaître des clésWaow ! :bravo:

MerlinMaître des clésBonjour.
@Riquet86
Si tu ne sais pas, ou pas bien, ce que « Console » signifie il faut lire ceci : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/
:Smiley03:
MerlinMaître des clésÇa me parait quand même beaucoup pour une seule police… :Euuuh:
MerlinMaître des clésBonjour et bienvenue.
Les polices de caractère utilisées dans les champs de formulaire bénéficient d’un traitement différent de celles qui sont utilisées dans les fonds de page.
Pour être utilisable dans un champ une police doit être incorporée en entier et non compressée, il faut donc faire attention dès qu’on n’utilise pas les polices standards (Courier, Arial/Helvetica, Times), surtout avec les polices OpenType dont le poids peut être très important (+ de 10 Mo pour certaines).
Les polices utilisées dans les champs n’apparaissent pas dans l’Optimisation PDF, sans rentrer dans le pourquoi et le comment disons que c’est un parti-pris qui a du sens et qui évite beaucoup de catastrophes plus ou moins volontaires.
Sachant qu’en plus, certaines versions d’Acrobat Pro ont la désagréable habitude d’incorporer les polices au moment où on les sélectionne : si on teste 5 polices dans un champ… on a incorporé 5 polices… :oh:
Pour s’en sortir il faut essayer un simple Enregistrer-sous.
Si ça ne suffit pas il faut essayer d’Enregistrer-sous après avoir re-réglés tous les champs sur une police standard.
:priere:
MerlinMaître des clésJ’ai essayé quelques trucs aussi, mais sans succès.
On peut capturer l’évènement « touche TAB » avec commitKey mais on ne peut pas l’empêcher.
:Euuuh:Code:if (event.commitKey == 2)
{//blablaba}
MerlinMaître des clésDu coup c’est effectivement plus clair.
Ce n’est pas un bug, c’est une conséquence logique et prévisible.Les champs « champn » exécutent un script qui envoie le focus vers le champ « rchampn » correspondant, mais si en plus l’utilisateur appuie sur la touche TAB ça envoie naturellement le focus sur le « rchampn » suivant (dans l’ordre de tabulation).
Je sais comment interdire la saisie d’un caractère ASCII mais pour la touche TAB je donne ma langue au chat… :joker:
MerlinMaître des clésBonjour.
Difficile de répondre sans voir le document…
Supprime les pages ou leur contenu, ne laisse que les champs concernés et partage tes scripts dans une « maquette » PDF.
:Smiley15:
MerlinMaître des clésLa réponse est encore plus simple que la question : c’est impossible depuis un document.
Aller fouiner dans les répertoires de l’utilisateur n’est possible que depuis un script de batch (Action) ou depuis la Console JavaScript.
Sécurité oblige.
MerlinMaître des clésL’utilisateur d’un formulaire PDF n’est censé utiliser que l’outil Main, pas l’outil de sélection.
Pour les gens qui développent le logiciel c’est tellement évident que effectivement, quand on utilise l’outil de sélection les champs ne sont plus verrouillés et on peut donc modifier un document signé. :mur:
J’avais déjà constaté, et signalé, ce problème avec des champs verrouillés, mais ils étaient verrouillés par un script pas par une signature.
Je crois qu’on a affaire à des fous ! :oh:Il n’y a qu’une seule chose à faire, signaler le bug encore une fois et prier : https://acrobat.uservoice.com/forums/590923-acrobat-for-windows-and-mac
MerlinMaître des clésje leur avait proposé un système de menu liste avec 3 caractères X O et Ø , mais ça compliquait trop la tâche.
Faire une « fausse » case-à-cocher à 3 états est plus simple que tu ne crois, et pour l’utilisateur ce serait beaucoup plus intuitif que ctrl-clic ou alt-clic.
Ça t’intéresse ?Autre question : le clic droit est il utilisable sur un script ?
Pas que je sache.
MerlinMaître des clésUne fois signé, tous les champs du document sont bien en lecture seule, comme dans le ci-joint.
Concernant le préremplissage des champs, il y a une série de scripts de calcul en cascade qui forcent le remplissage de certains champs à l’identique de certains autres. Mais je n’en comprend ni la logique, ni l’intérêt (s’agissant de champs date dans lesquels il suffit de cliquer pour afficher un calendrier). :Euuuh:
MerlinMaître des clésBonjour et bienvenue.
Au double-clic ça ne sera pas possible, ce qu’on pourrait utiliser pour activer le fond gris c’est MAJ-clic ou ALT-clic.
Ou plus simplement, une bascule qui alternerait entre fond gris et fond neutre à chaque clic dans le champ.Par-contre s’il n’y a qu’un seul choix possible et qu’on voulait interdire plusieurs fonds gris à la fois il faudrait développer un JavaScript beaucoup plus complet.
En tout cas, le plus simple serait d’utiliser deux séries de boutons-radios.
:Smiley15:
MerlinMaître des clésPour ce qui concerne la documentation, y a-t-il une mise à jour prévue ou annoncée de « l’API Reference » ?
Ça fait plusieurs mois que je harcèle l’équipe de développement pour avoir une mise à jour de la doc. concernant Text To Speech (TTS) qui date d’avant Mac OS X (c’est-à-dire d’avant 1999)…
Jusqu’ici personne n’a daigné me répondre. :priere:
MerlinMaître des clésBonjour.
Soit le document est en lecture seule et on ne peut pas sélectionner de champ.
Soit on peut sélectionner un champ et donc le document n’est pas en « lecture seule »…
:Smiley15:
MerlinMaître des clésVous m’auriez dit Acrobat X, j’aurais compati en radotant sur cette version archi-buggée.
Mais là… :joker:
MerlinMaître des clésExemple avec un PDF portant des Destinations :
http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters_v9.pdf#nameddest=F4
OU
http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters_v9.pdf#F4Sauriez-vous pourquoi cela ne fonctionne pas ?
Ben… Euh… Chez moi ça a l’air de fonctionner comme attendu. :joker:
MerlinMaître des clésBonjour.
1- Il faudrait placer le script en ouverture et en fermeture du document concerné.
Sinon, dans les paramètres de Vue initiale on peut aussi masquer les menus, c’est plus brutal (tout ou rien) mais c’est plus simple à gérer.2- Les trois dernières versions d’Acrobat ont connu deux refontes totales de l’interface (X et DC) plus une modification profonde (XI), et la documentation date du siècle dernier.
Du coup beaucoup de methods et de properties JavaScript destinées à piloter l’interface utilisateur ne fonctionnent plus ou sont devenues aléatoires. :oh:
MerlinMaître des clésQuelle version d’Acrobat avez-vous, et sur quel système ?
:doute:
MerlinMaître des clésJ’ai arrêté de m’e**erder avec les « isBoxChecked » depuis que j’ai compris que les cases à cocher avaient une valeur. :Smiley03:
Ce qui nous donne le même script dans les quatre cases :
Code:this.getField(« brief »).display = display.hidden;
if (event.target.value == 1) {
this.getField(« brief.0 »).display = display.visible;
} else if (event.target.value == 2) {
this.getField(« brief.1 »).display = display.visible;
} else if (event.target.value == 3) {
this.getField(« brief.2 »).display = display.visible;
} else if (event.target.value == 4) {
this.getField(« brief.3 »).display = display.visible;
}Exemple ci-joint.
:Smiley15:éviter les espaces dans les noms de champs !
+ + +
D’ailleurs j’en ai renommé quelques uns. :geek:
MerlinMaître des clésChacun est libre de donner son avis et de proposer des solutions mais pour moi, qui le connait peu, LaTeX est un vieux clou préhistorique qui propose de faire avec des balises et des lignes de commande ce qu’on peut faire de façon plus simple et plus intuitive dans d’autres logiciels.
Même s’il est très puissant, apprendre LaTeX juste pour réaliser une mise en page qu’on peut faire en 5 minutes avec Word, OpenOffice, etc. ne me parait pas très productif.
Sinon, au vu de ton document je te renvoie vers ce tuto car c’est un cas typique de l’utilisation de la fonction de duplication de pages-modèles : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/dupliquer-dynamiquement-des-pages-dans-un-pdf/
:Smiley15:
MerlinMaître des clésBonjour.
Dès que je détecte un comportement qui parait anormal j’Enregistre-sous le document et je quitte Acrobat.
En général après ça va mieux.
:priere:23 février 2017 à 11:01 en réponse à : Comment supprimer des modules externes sur Acrobat Pro DC? #62348
MerlinMaître des clésQue donne la recherche dans le système ?
23 février 2017 à 09:29 en réponse à : Comment supprimer des modules externes sur Acrobat Pro DC? #62346
MerlinMaître des clésBonjour.
Il y a deux dossiers à nettoyer, celui de l’application :
/Applications/Adobe Acrobat DC/Adobe Acrobat.app/Contents/Plugins/Et le dossier de la Bibliothèque utilisateur :
/Users/NomUtilisateur/Library/Application Support/Adobe/Acrobat/DC/Plug-ins/
MerlinMaître des clésAucune idée. :joker:
En JavaScript les calques s’appellent des OCG (Optional Content Group).
MerlinMaître des clésBonjour.
Voilà qui est fait.
MerlinMaître des clésBonjour et bienvenue.
J’utilise ce script java
Voir : http://abracadabrapdf.net/forum/index.php/topic,2160.0.html
:Smiley03:Il n’y a pas besoin d’un script pour compter le nombre de cases-à-cocher ou de boutons-radios cochés.
Pour commencer il faut les nommer ainsi :
choix.0
choix.1
choix.2
etc.
Le point est très important.Chacune de ces cases doit avoir une « valeur d’exportation » (Propriétés : Options) de 1
Ensuite, dans le champ qui effectue le total on demande à calculer « la somme » du champ « choix » (tout court, c’est le champ parent).
Voir ce tuto qui explique tout ça plus en détails : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/
MerlinMaître des clésPour supprimer un calque avec Acrobat il faut le masquer et le fusionner avec un calque visible.
Pourquoi faire simple quand on peut compliquer ? :oh:Acrobat restera toujours Acrobat… :geek:
MerlinMaître des clésBonjour.
Trop bien !
On vient justement de me demander d’ajouter cette fonction dans un formulaire… Je n’ai plus qu’a travailler mon copier-coller.:contentdance:
MerlinMaître des clésBonjour.
Concernant ce sujet je confirme qu’il n’y a pas mieux que les tutos de Thomas P.
Sinon, je me souviens qu’un certain Bebarth avait posté il n’y a pas très longtemps un petit bijou qui affichait un calque et quelques boutons en guise de boite de dialogue customisée et ça le faisait bien.
Mais là je n’ai pas bien le temps de le rechercher…
:joker:
MerlinMaître des clésOui, c’est là que je me suis mieux rendu compte de la difficulté à faire une belle icône.
Surtout quand après il faut encore en faire une dizaine d’autres…:Smiley03:
MerlinMaître des clésJe ne sais pas ce qu’en pense Cricri mais il va falloir utiliser des logos en niveaux de gris…
MerlinMaître des clésVoilà le bébé, il faut importer des icônes en 20 x 20 pixels et en RVB (pas de GIF ni de PNG-
et on récupère le texte en hexa dans la pièce jointe créée.
Attention, maintenant qu’Acrobat offre le choix entre interface sombre ou claire il faut bien choisir la couleur de ses icônes…
MerlinMaître des clésBonjour.
Pour les questions 2, 3 et 4 c’est non (« question de sécurité » qu’ils disent…).
Pour la 1 : on ne peut utiliser une icône JPEG ou PNG qu’à partir d’un script d’application, autrement il faut qu’elle soit dans le script en hexadecimal.
J’ai un petit utilitaire maison pour effectuer la conversion, je le ferais passer plus tard parce-que là je n’ai pas bien le temps.
:geek:
MerlinMaître des clésSinon, sous Acrobat seul, voici ce qu’il faut faire:
1/ Correction ‘Aplatissement des champs de formulaire’Si ça peut aider à sauter une étape, je sais JavaScripter l’aplatissement… :geek:
MerlinMaître des clésIl me semblait bien… :Smiley03:
Cependant il ne faut pas oublier d’aplatir* tous les champs de formulaires avant de faire cette conversion, parce-que sinon quoi qu’on fasse avec le Contrôle en amont les champs de formulaire restent en RVB.
* Avec les abracadabraTools par exemple : http://abracadabrapdf.net/utilitaires/acrobat-plugins/abracadabratools/
.
MerlinMaître des cléson ne peut donc séparer la couleur pour l’impression !
Avec le Contrôle en amont d’Acrobat ou avec Pitstop il me semble qu’on peut convertir des couleurs composites (RVB ou CMJN) en ton direct (Pantone), mais c’est un autre sport.
MerlinMaître des clésBonjour.
Ton impression était la bonne, il faut définir la couleur avec l’équivalent RVB de la couleur Pantone.
MerlinMaître des clésPS : ce n’est pas une bonne idée de diffuser ton adresse email en clair sur un forum public, je l’ai modifiée dans les messages précédents.
:tutut:
MerlinMaître des clésComment faire précédé mon numéro d’installation d’une autre variable déclaré ci-dessous sSujet2 dans le sujet du mail ?
Code://
// mise en variable des valeurs
var sSujet1 = this.getField(« NUM_INSTALLATION »).valueAsString;
var sSujet2 = this.getField(« CERTIF »).valueAsString;
// concaténation
var sSujet = sSujet1 + « _ » + sSujet2;
// envoi
this.mailDoc({
bUI: false,
cTo: « kader.roussel@troismaisons.bis »,
cSubject: sSujet,
cMsg: « Texte du message. »
});
closeDoc(true);
//
MerlinMaître des clésBonjour et bienvenue.
Je veux inscrire en sujet dans le mail, un texte suivi d’un numéro récupéré d’une case du formulaire nommée « NUM_INSTALLATION ».
Essaye ça (non testé) :
Code:var sSujet = this.getField(« NUM_INSTALLATION »).value;
this.mailDoc({
bUI: false,
cTo: « kader.roussel@troismaisons.bis »,
cSubject: sSujet,
cMsg: « Texte du message. »
});
closeDoc(true);}Également, comment renommer selon un script la pièce jointe avant l’envoi dans le mail ?
Je veux par exemple, qu’une personne remplisse le formulaire, clique sur le bouton envoi mail, et que la pièce jointe se renomme avec le numéro d’installation.Justement on en parle ici : http://abracadabrapdf.net/forum/index.php/topic,3191.0.html
:Smiley15:
MerlinMaître des clésOn ne peut copier depuis les boites d’alerte que avec Mac OS.
Donc la ruse c’est d’utiliser un autre type de boite, essaye ça :Code:/* mise en variable */
var strFixe = « NOM-FIXE »;
/* mise en variable nom des champs */
var strNom = this.getField(« NOM »).value;
var strNum = this.getField(« DATE »).value
/* détection de la langue et mise en variable des textes */
if (app.language == « FRA ») {
var strTitre = strFixe + » – Enregistrement »;
var strQuestion = « COPIEZ le nom proposu00E9 ci-dessous et COLLEZ le dans la fenu00EAtre suivante pour l’utiliser comme nom de fichier : »;
} else {
var strTitre = strFixe + » – Save As »;
var strQuestion = « COPY below proposed text and PASTE it in the following box to use it as file name: »;
}
/* concaténation du nom de fichier */
var strDisplay = strNum + « _ » + strNom + « _ » + strFixe;
/* affichage du nom de fichier */
var saveRep = app.response({cQuestion: strQuestion, cTitle: strTitre, cDefault: strDisplay,});
if (saveRep != null) {
/* détection du logiciel Acrobat */
if (app.viewerVariation == « Full ») {
/* modification du Titre du document */
this.info.Title = strNum + » – » + strNom + » – » + strFixe;
}
/* masquage du bouton et enregistrement */
event.target.display = display.hidden;
app.execMenuItem(« SaveAs »);
}
MerlinMaître des clésJ’ai testé et trouvé Brackets sympathique mais :
– la correction de syntaxe intégrée (orientée HTML) trouve beaucoup trop de faux positifs en « JavaScript-PDF »,
– pas de recherche multi-fichiers,
– pas de rechercher-remplacer GREP.Donc je garde TextWrangler.
MerlinMaître des clésBonjour et bienvenue.
Ce n’est pas possible directement depuis un bouton placé dans un document PDF, ce qu’on peut faire c’est utiliser JavaScript pour afficher une fenêtre qui propose à l’utilisateur un nom de fichier à copier-coller dans la boite de dialogue d’enregistrement, que l’on fait apparaitre immédiatement après.
Pour faire un bouton qui fonctionne sans autre intervention de l’utilisateur il faut utiliser un Script d’application (voir : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/ ) et il faut connaitre le chemin d’accès au dossier où enregistrer.
MerlinMaître des clésLa réponse tient en 3 mots : ordre de calcul !
Voir la fin de cet article : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/
MerlinMaître des clésCi-joint
MerlinMaître des clésPour éditer les scripts je te conseille plutôt TextWrangler (Mac) ou NotePad Pro (Windows).
:Smiley03:
MerlinMaître des clésBonjour.
D’abord je préviens tout le monde : le fichier test-bis fait effectivement planter Acrobat. :geek:
J’ai bien regardé les scripts : ils ne sont pas vraiment identiques, il y a beaucoup plus de lignes dans celui qui fonctionne.
Mais je ne comprend pas d’où vient le problème, je donne ma langue au chat… :Euuuh:
MerlinMaître des clésQuelle est la formule magique pour mettre le son en pause avec un bouton par exemple, si l’utilisateur trouve barbant d’entendre le message ?
Ce n’est pas possible, la fonction « Lire un son » est destinée à lire des sons courts.
Elle date des débuts d’Acrobat dans les années 90, à l’époque où pour faire du multimédia il fallait sonoriser toutes les actions de l’utilisateur (bip, clic, clac, buz, etc.).
Les sons acceptés par Acrobat doivent être au format WAV ou AIFF non compressé, donc on n’a jamais intérêt à utiliser des sons longs.
MerlinMaître des clésMais la question est maintenant comment récupérer le fichier son intégré dans le fichier pdf ?
Ce n’est pas possible, sauf à utiliser un vieux truc tordu très compliqué à mettre en œuvre (récupérer le fichier cache dans un sous-dossier du système pendant sa lecture…)
Et comment le supprimer si on a choisi un fichier trop lourd et sauvegarder ?
Il suffit de supprimer l’action et ensuite d’enregistrer-sous (pour vraiment supprimer le fichier son du PDF).
MerlinMaître des clésComment tu fais ?
Un dessin vaut mieux qu’un long discours.
:Smiley15:
MerlinMaître des clésC’est surtout que, à mon avis, l’interface d’Acrobat X est la pire parmi toutes les versions ayant existé à ce jour, en particulier sur Mac OS. :Smiley03:
Je ne me souviens plus exactement de l’interface d’Acrobat X mais l’outil champ Signature se trouve dans l’Editeur de champs de formulaire, à droite des autres outils champs.
MerlinMaître des clésoù placer ce script de document… ?
« Script de document » c’est l’emplacement.
Il faut ajouter ta ligne de script après la déclaration des fonctions.
MerlinMaître des clésAlors on va garder l’actuel.
Comme seuls les imbéciles ne changent pas d’avis et comme je viens de me rendre compte que le nouvel habillage du forum ne répète pas le titre sur chaque message je l’ai changé quand même.
:geek:
MerlinMaître des clésDans ce cas il faut utiliser un champ de type Signature.
À noter que les utilisateurs des dernières versions d’Acrobat Reader DC auront plus de facilité, surtout les néophytes, car l’interface a été rationalisée, simplifiée et de nouvelles possibilités sont apparues.
MerlinMaître des clésBonjour et bienvenue.
Oui c’est possible.
Tout dépend du type de signature qu’on veut utiliser : signature « tampon », signature certifiée en ligne, signature avec certificat d’ID… ?
MerlinMaître des clésSalut à tous,
un problème simple, une solution simple
Dans mon formulaire, j’ai un champ A (nombre) calculé automatiquement en fonction de valeurs saisies
Dans le champ B (nombre) remplissable :
– si le nombre saisi est inférieur à A, rien (passage au champ suivant)
– si le nombre et supérieur à A, affichage de A + message « vous en avez trop demandé »Est-ce possible en JavaScript et où le placer en validation ou calcul ?
Oui je suis nul mais je vais certainement comprendre le script proposé !Merci d’avance.
MerlinMaître des clésJe ne comprend pas, ça fonctionne ou ça ne fonctionne pas ?
:Euuuh: :doute: :Euuuh:NB suggestion : la titre de la discussion devrait être « Obtenir un entier dans un champ »
On est bien d’accord mais avec SMF changer le titre d’un sujet doit se faire dans chaque message, message par message… :tutut:
Alors on va garder l’actuel. :Smiley03:
MerlinMaître des clésCode:j’aurais placé le script en script de calcul du champ « Somme »Moi aussi mais la fonction est écrite ainsi, c’est le « Don » qui pousse.
La fonction est déclenchée en Validation car il y a déjà un calcul (non JavaScript) effectué par le champ.Comme l’évènement « Calcul », l’évènement « Validation » est déclenché par le changement de valeur du champ, qu’il soit en lecture seule ou invisible n’y change donc rien.
MerlinMaître des clésje suis un peu perdu avec les champs « A », « B » ou « C » et ce qu’il faut faire avec…
Merci, du coup je me sens moins seul. :geek:
MerlinMaître des clésBonjour.
En fait même si ça fonctionnait on ne s’en apercevrait pas parce-que le champ « Somme » est invisible… :Smiley03:
Le champ « Somme » ne doit contenir aucun script, c’est le champs « Don » qui pousse la valeur. Mais pour que ça fonctionne il faut appeler la fonction « conversion » et non pas « Conversion » : JavaScript est sensible à la casse !
MerlinMaître des clésCe monsieur nous explique pourquoi c’est mieux de faire autrement mais je ne suis pas certain d’avoir tout compris. :geek:
http://www.jacklmoore.com/notes/rounding-in-javascript/
MerlinMaître des clésCode:Math.round(n * 100) / 100;
MerlinMaître des clésDisons que tu n’es pas le premier à te cogner la tête contre ces murs là.
:Smiley03:
MerlinMaître des clésBonjour.
j’ai cru à un bug
C’est exactement ça !
C’est un bug qui traine depuis plusieurs versions.
Il a déjà été signalé plusieurs fois mais à l’évidence il n’est pas prioritaire. :Smiley02:
Wait and see…Mais si on n’a pas le temps d’attendre, pour obtenir des chiffres au format français il faut placer ce JavaScript en script de validation personnalisé :
Code:event.value = util.printf(« %,2.2f »,event.value).toString().replace(/./gim, » « );.
MerlinMaître des clésBonjour.
Non, toujours rien de nouveau de ce coté là (c’est désespérant).
Sur Android les meilleurs en JavaScript sont toujours ez PDF Reader, qPDF Notes et Acrobat.les scripts Java
Voir : http://abracadabrapdf.net/forum/index.php/topic,2160.0.html
:Smiley03:
MerlinMaître des clésBonjour.
Dans les Préférences : JavaScript d’Acrobat on peut définir un logiciel externe comme éditeur de script, un éditeur de texte du type TextWrangler ou NotePadPro.
Personnellement, depuis Acrobat 7 jusqu’à Acrobat DC je n’ai jamais réussi à utiliser un éditeur externe parce-que ça fait planter Acrobat, mais certains y arrivent.Du coup j’ai pris l’habitude de copier-coller les scripts entre les fenêtres d’Acrobat et de TextWrangler.
On peut éditer tous les scripts d’un PDF en passant par JavaScript : Tous les scripts JavaScripts6 février 2017 à 00:46 en réponse à : Le premier 0 du numéro de téléphone disparait dans les champs textes #62211
MerlinMaître des clésComment faites-vous pour faire un script général qui s’applique à tous les champs
Dès qu’on a plus d’un seul champ qui doivent exécuter un code identique on a intérêt à mettre ce code en fonction, ça facilite la maintenance et les modifications car il n’y a qu’un seul script à modifier.
Tous les champs peuvent appeler une même fonction. Chacun des champs peut appeler une ou plusieurs fonctions.L’autre avantage des fonctions placées en script de document dans un PDF c’est qu’elles sont chargées en RAM à l’ouverture du document et sont donc très réactives
Contrairement aux scripts placés dans les champs qui ne sont chargés qu’au moment de leur exécution.
:Smiley15:6 février 2017 à 00:40 en réponse à : Le premier 0 du numéro de téléphone disparait dans les champs textes #62210
MerlinMaître des clésOù avez-vous mis le script qui applique : transfertTextes2(); ou transfertTextes3(); ?
J’avais anticipé cette question : :Smiley03:
Comment modifier un script de document ?
Voir le paragraphe 3 de cet article : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
MerlinMaître des clésSi la procédure d’installation d’Acrobat 7 conseillée par Adobe ne fonctionne pas je ne sais que dire ni que faire… :joker:
Cependant, je ne comprend pas l’intérêt d’utiliser Acrobat 7 quand on a Acrobat 9…
:Euuuh:4 février 2017 à 21:49 en réponse à : Le premier 0 du numéro de téléphone disparait dans les champs textes #62205
MerlinMaître des clésMerci pour ce beau travail, vous êtes super fort
:bonjour: :contentdance:
4 février 2017 à 21:35 en réponse à : Le premier 0 du numéro de téléphone disparait dans les champs textes #62204
MerlinMaître des clésvous avez mis les fonction dans la partie validation, je n’y aurai pas pensé…
Heeuuu… Non, non, ce sont des scripts de calcul. :Smiley03:
Bien entendu on pourrait vider les champs quand la case correspondante est décochée, ce serait une belle démonstration technique mais ce je déteste ce genre de comportement qui n’est pas très user-friendly.
En effet, dans la plupart des cas la différence entre les coordonnées sources et les coordonnées dupliquées est minime, souvent c’est juste le nom de la rue ou de la personne qu’il faut changer, tout le reste étant commun.
Dans le cas présent, si on coche la case « identique » et si on la décoche ensuite, on obtient des champs qui sont pré-remplis. Il suffit alors de juste modifier les différences pour compléter un bloc de coordonnées.
Dans le cas contraire ce serait : soit toutes les coordonnées sont absolument identiques, soit il faudrait tout (ou presque) resaisir à l’identique en double ou en triple…
Sachant qu’en tout cas il est toujours plus facile et plus rapide pour l’utilisateur final d’effacer le contenu de champs pré-remplis (TAB + DEL + TAB + DEL + etc) que de resaisir ou de copier-coller 2 ou 3 fois des valeurs dans des champs.
De mon point de vue c’est le confort de l’utilisateur final qui prime, mais c’est un parti pris.
Si c’est un requis il faut modifier les fonctions ainsi :Code://
function transfertTextes2() {
// on ajoute _2 au nom du champ qui calcule
var sNomChampCible2 = event.target.name + « _2 »;
// si la case OK2 est cochée
if (this.getField(« OK2 »).value != « Off ») {
// on remplit le champ cible avec la valeur du champ qui calcule
this.getField(sNomChampCible2).value = event.target.valueAsString;
}
// sinon on vide le champ
else {this.resetForm(sNomChampCible2);}
}
//
function transfertTextes3() {
// on ajoute _3 au nom du champ qui calcule
var sNomChampCible3 = event.target.name + « _3 »;
// si la case OK3 est cochée
if (this.getField(« OK3 »).value != « Off ») {
// on remplit le champ cible avec la valeur du champ qui calcule
this.getField(sNomChampCible3).value = event.target.valueAsString;
}
// sinon on vide le champ
else {this.resetForm(sNomChampCible3);}}
//Comment modifier un script de document ?
Voir le paragraphe 3 de cet article : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/4 février 2017 à 17:07 en réponse à : Le premier 0 du numéro de téléphone disparait dans les champs textes #62202
MerlinMaître des clésRien que la mise en fonction rend les choses plus simples.
Cadeau ci-joint, je crois que je n’aurais pas fait mieux. :Smiley15:Les fonctions utilisées :
Code://
function transfertTextes2() {
// on ajoute _2 au nom du champ qui calcule
var sNomChampCible2 = event.target.name + « _2 »;
// si la case OK2 est cochée
if (this.getField(« OK2 »).value != « Off ») {
// on rempli le champ cible avec la valeur du champ qui calcule
this.getField(sNomChampCible2).value = event.target.valueAsString;
}
}
//
function transfertTextes3() {
// on ajoute _3 au nom du champ qui calcule
var sNomChampCible3 = event.target.name + « _3 »;
// si la case OK3 est cochée
if (this.getField(« OK3 »).value != « Off ») {
// on rempli le champ cible avec la valeur du champ qui calcule
this.getField(sNomChampCible3).value = event.target.valueAsString;
}
}
//
MerlinMaître des clésJe viens d’apprendre à l’instant que c’est désormais officiel et qu’on peut en parler publiquement : https://www.adobe.com/genuine.html
Pour l’instant ça ne fonctionne qu’aux États-Unis mais ça va bientôt s’étendre au monde entier.En résumé, il s’agit d’un « renifleur » qui liste tous les logiciels Adobe « non originaux » qui sont installés sur un ordi.
Ça se traduit d’abord par un message invitant gentiment et poliment à se mettre en conformité. Ensuite, si l’utilisateur ne réagit pas c’est police et justice…:idee:
MerlinMaître des clésj’avais acheté Acrobat 9 Pro, et la personne à ajouté Acrobat 7 Pro. Voilà comment j’ai obtenu cette licence.
…
à l’initialisation de l’application (installée avec la licence achetée), il m’est impossible d’activer le logiciel, que ce soit par téléphone, ou par InternetJ’insiste sur le fait que c’est une licence qui ne vaut rien et que ça ne peut pas fonctionner :
Seul Adobe est habilité à vendre et à transférer des licences pour les logiciels Adobe.
Voir : http://prodesigntools.com/dont-buy-adobe-software-on-ebay-craigslist-or-amazon-marketplace.html4 février 2017 à 11:18 en réponse à : Le premier 0 du numéro de téléphone disparait dans les champs textes #62199
MerlinMaître des clésBonjour.
La question concernant le format téléphone a encore été posée pas plus tard qu’il y a 3 jours, à l’heure où j’écris cette question apparait en 10e position dans les sujets récents sur la page d’accueil. :geek:
==> http://abracadabrapdf.net/forum/index.php/topic,3177.0.htmlLa méthode pour remplir les champs facturation tient la route, on pourrait peut-être l’optimiser mais si ça fonctionne correctement c’est l’essentiel.
:Smiley15:Par ailleurs il faudrait décocher ces options par défaut (voir capture), qui sont contre-productives dans des champs de coordonnées.
:idee:4 février 2017 à 10:59 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62181
MerlinMaître des clésAu moment de finaliser le formulaire tu pourras toujours installer la version d’essai d’Acrobat Pro (7 jours).
:Smiley03:3 février 2017 à 17:29 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62178
MerlinMaître des clésEncore une fois j’aurais dû tester avant… La mémoire est faible. :oh:
Tu as mis le script en action « souris sortie » au lieu de « souris relevée », mais en fait dans les deux cas ça empêche le menu déroulant de fonctionner.
Du coup tout ce que je peux te proposer c’est de finaliser ton formulaire avec Acrobat, juste pour cocher l’option « Valider la valeur sélectionnée immédiatement ».
:Smiley11:
MerlinMaître des clésNon, excuses moi, en fait ce que j’ai dit est vrai mais ça se sert à rien.
Quand un objet vectoriel est contenu dans un EPS qui est converti en PDF il reste vectoriel bien sur ! :oh:C’est donc lors de l’exportation que ça joue (Conversion du format PDF, dans les Préfs).
3 février 2017 à 14:25 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62176
MerlinMaître des clésJe viens d’apprendre quelque chose sur Scribus ! Merci parce-que j’aurais pu chercher longtemps… :geek:
Puisque l’option « Valider la valeur sélectionnée immédiatement » n’est pas disponible il faut utiliser la vieille ruse incontournable du temps d’Acrobat 5 et versions antérieures (qui n’offraient pas non plus cette option).
1. Il faut créer un tout petit champ de type texte dans un coin du document, appelons le « ruse », et le rendre invisible.
2. Dans toutes les listes déroulantes il faut placer ce script en action « souris relevée » :
Code:this.getField(« ruse »).setFocus();Ce qui aura pour effet de tenter d’activer le champ « ruse » après chaque clic sur une liste. Ça ne sera évidemment pas du tout visuel ni très utile car il est invisible, mais on s’en fiche…
Parce-que ça a de toute façon pour conséquence de désactiver la liste cliquée et de forcer la validation immédiate de la valeur sélectionnée par l’utilisateur.
Et c’est justement ce qu’on veux.:Smiley15:
MerlinMaître des clésA priori ça vient du préréglage de conversion utilisé lors de l’importation.
Ça se joue dans les Préférences (réglage persistant), et c’est modifiable à la volée dans la fenêtre de dialogue d’ouverture de fichiers (Options ou Paramètres).3 février 2017 à 12:02 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62174
MerlinMaître des clésBen… J’ai la même… Remplie de vide… :Euuuh: :doute:
Comment fais tu pour remplir les valeurs de la liste déroulante avec une fenêtre vide ???À comparer avec la même fenêtre dans Acrobat.
MerlinMaître des clésÀ propos de la résolution des images :
La résolution des images est une notion obsolète héritée des scanners et des photos papiers du XXe siècle.
Aujourd’hui l’image se crée nativement en numérique et doit être pensée comme telle : la seule chose qui compte ce sont ses dimensions en pixels.Ensuite c’est simple :
– Pour l’écran une image est forcement à tel quand elle est affichée à 100% : 1 pixel image = 1 pixel écran.
Si l’image est réduite c’est le nombre de pixels affichés qui change.– Pour l’impression il faut diviser les deux dimensions de l’image par 100.
Ainsi une image de 1400 px x 1600 px est imprimable en 14 cm x 16 cm avec une résolution de 255 ppp. Ce qui est largement suffisant, y compris pour l’offset.Si on veut un peu plus de densité en sortie pour satisfaire les inconditionnels du 300 ppp (même s’ils ne savent pas toujours pourquoi…), on peut la réduire un tout petit peu plus, en 13 x 15 cm par exemple.
Pour s’en convaincre il suffit d’importer une image à 72 ppp dans InDesign (ou Illustrator) et d’afficher la palette « Informations », sachant que la seule valeur qui importe c’est « PPP effectifs ».
Si on réduit cette image à 24% : PPP effectifs = 300 ppp
Si on réduit cette image à 25% : PPP effectifs = 288 ppp
Si on réduit cette image à 50% : PPP effectifs = 144 ppp
Etc.:Smiley15:
MerlinMaître des clésSi tu parles de l’importation dans Acrobat la question est sans objet : un objet vectoriel n’a pas de résolution intrinsèque.
C’est un objet mathématique dont les courbes restent toujours lisses parce-qu’elles sont pixellisées à la résolution exacte du périphérique de sortie (écran ou papier), quel que soit le facteur d’agrandissement/réduction appliqué.3 février 2017 à 10:22 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62172
MerlinMaître des clésLe panneau Options stp (celui que je ne peux pas voir dans mon Scribus).
:Smiley01:
MerlinMaître des clésPixelliser un logo vectoriel est toujours une mauvaise idée, mais des fois on ne peut pas faire autrement.
Faut-il que ce logo soit correct à l’écran ou à l’impression ? Ou les deux ?À l’écran la bonne résolution c’est celle de l’écran, aujourd’hui les écrans plats ont des résolutions entre 96 et 120 ppp, sauf les Retinas…
Pour le papier une résolution de 255 ppp est suffisante pour tous les besoins, y compris l’impression offset.Mais ce qui fausse la donne c’est la compression JPEG, selon le taux appliqué ça peut flouter l’image dans tous les cas et à toutes les résolutions.
S’agissant d’un logo, a priori il vaudrait mieux l’exporter en PNG (compression sans dégradation).Voir : http://abracadabrapdf.net/ressources-et-tutos/creation/compression-des-images/
(Ce qui vaut dans les PDF vaut aussi en dehors)
MerlinMaître des clésBonjour.
Tout dépend de ce qu’il y a dans ce fichier EPS : illustration vectorielle ou image matricielle (pixels) ? Ou les deux ?
MerlinMaître des clésL’intérêt du zéro directeur c’est que ça permet d’utiliser JavaScript pour ensuite afficher/masquer les templates dans l’ordre.
Sinon, avec JavaScript et sans les zéros ça mélange l’ordre des pages.
:idee:3 février 2017 à 09:27 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62170
MerlinMaître des clésil faut que je mette un peu de java
:tutut: ==> http://abracadabrapdf.net/forum/index.php/topic,2160.msg10980.html#msg10980
Peux tu poster une capture de la même fenêtre mais avec le panneau « Options » affiché ?
MerlinMaître des clésBon, ben du coup je me suis creusé les méninges 2 minutes et voilà le même script avec un zéro directeur à gauche des 9 premiers chiffres.
:geek://
numNewTemplates = this.numPages – 1;
for (var i = 0; i < numNewTemplates; i++) {
if (i < 10) {i = "0" + i;}
var t = this.createTemplate({cName: »page »+i, nPage:1});
t.hidden = true;
}
//
MerlinMaître des clésL’inconvénient c’est qu’avec ce script le compte commence à 1 (sans zéro directeur à gauche) et qu’ensuite les templates sont classés par ordre alphabétique :
page1
page10
page11
page12
…
page19
page2
page20
page21
etc. :oh:Si quelqu’un savait y mettre un zéro directeur à gauche des neuf premiers chiffres je serais preneur. :Smiley15:
MerlinMaître des clésOui, c’est d’autant plus galère avec l’interface d’Acrobat qui ne permet même pas d’utiliser la touche Entrée ou Retour pour valider, il faut tout faire à la souris.
Heureusement qu’il y a JavaScript ! :Smiley03:
// Enregistre toutes les pages comme Templates et les masque, sauf page 1
// Remplacer les deux « 1 » par des « 2 » pour garder les deux premières pages, etc.
// On peut modifier le nom du modèle (« page » ci-dessous)
// Script de batch ou de Console uniquement
//
numNewTemplates = this.numPages – 1;
for ( var i = 0; i < numNewTemplates; i++) {
var t = this.createTemplate({cName: »page« +i, nPage:1});
t.hidden = true;
}
//2 février 2017 à 16:04 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62168
MerlinMaître des clésil y a comme un décalage dans le temps pour le calcul il faut que je modifie une sélection de liste déroulante et la mise à jour se fait mais pas toujours
Un bug de ma version de Scribus m’empêche de voir le panneau Options des Propriétés des Listes déroulantes (il est vide…) mais il devrait y avoir une option du type « Valider la valeur sélectionnée immédiatement », comme dans Acrobat.
:priere:2- mon total tables *25 + chaises * 10 + grilles * 15 ne s’effectue pas.
C’est normal, le script utilisé remplit une variable mais n’en fait rien d’autre. D’autre part on ne peut pas se contenter d’utiliser les noms de champs pour récupérer leur valeur.
Remplace :var cautions = « caution_tables »*25+ »caution_chaises »*10+ »caution_grilles »*15;Par :
var nTables = this.getField(« caution_tables »).value * 25;
var nChaises = this.getField(« caution_chaises »).value * 10;
var nGrilles = this.getField(« caution_grilles »).value * 15;
event.target.value = nTables + nChaises + nGrilles;Attention aussi à l’ordre de calcul !
Voir la 2e partie de cet article : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/2 février 2017 à 11:59 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62165
MerlinMaître des clésIl faut que tu places ce script (celui de bebarth, adapté) en script de calcul sur mesure dans le champ caution_tables :
Code:var i=this.getField(« tables »).currentValueIndices;
this.event.value=this.getField(« tables »).getItemAt(i,false);Mais ça donne le nombre d’éléments choisis, pas le montant de la caution…
2 février 2017 à 11:13 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62163
MerlinMaître des cléset voilà le fichier pour afficher les 2 valeurs !
Comme Sonya travaille avec Scribus je suppose qu’elle n’a pas Acrobat Pro et que donc ce PDF ne lui sera pas très utile, faute de pouvoir l’examiner en profondeur…
:Smiley00:2 février 2017 à 10:55 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62161
MerlinMaître des clésBebarth : je vais garder ton doc. précieusement car je fais un blocage sur getItemAt et currentValueIndices. :geek:
Sonya : il ne devrait pas y avoir de « second » dans ta liste mais un « deuxième ». Car le second est aussi le dernier, on ne l’utilise que quand il n’y a que deux éléments.
:Smiley03:2 février 2017 à 10:37 en réponse à : Scribus code JavaScript comment récupérer une valeur de liste déroulante #62159
MerlinMaître des clésBonjour et bienvenue.
Il faut placer cette ligne de JavaScript en Script de calcul sur mesure dans les Propriétés du champ texte.
Note bien que ce script importe la valeur de la liste déroulante, et non pas l’item affiché.Code:event.target.value = this.getField(« ListeDeroulante »).value;Où il faut remplacer « ListeDeroulante » par le vrai nom de la liste déroulante concernée.
-
AuteurRéponses
