Toutes mes réponses sur les forums
-
AuteurRéponses
-
jctremblayMaître des clésJe l’ai testé avec Acrobat 11, et j’ai le même résultat. J’ai donc rêvé. 🙂
jctremblayMaître des clésEst-ce que cela signifie que ça a déjà fonctionné un jour ???
Bonne question, il se peut que non. Mais il me semble que j’ai un vague souvenir que oui. Ma mémoire me joue peut-être des tours. J’ai demandé à Adobe, on verra ce qu’ils me donneront comme réponse.
jctremblayMaître des clésC’est bien ce que je pensais. On peut par contre relier un fichier .csv en pièce jointe. Je vais voir si c’est une option faisable. Merci!
jctremblayMaître des clésMerci mon cher bebarth!
J’était bien conscience que mon code n’était pas optimale. 😀Je vais comparer.
Merci 1000x
jctremblayMaître des clésThom Parker (l’auteur du fameux «All About PDF Stamps») as répondu dans le forum de la communauté.
L’erreur était que:—
The « item_id » in a dialog object must be 4 and only 4 characters long.
Otherwise that item cannot be referenced and returns undefined as a value.
jctremblayMaître des clésC’est rassurant… Je ne suis donc pas fou.
J’ai publié sur la «Community Adobe». On verra ce que nos amis nous diront.
jctremblayMaître des clésEn effet! 😕
Pas de rapport, mais j’ai ajouté un this.resetForm(prefix); avant de remplir les champs de numérotation, car dans mon doc actuel cela m’assurer de réinitialiser le contenue des modèles dupliquer (je n’utilise pas ici de modèle caché).
jctremblayMaître des clésPour moi ça fonctionne… dans le PDF la page 2 [pageindex 1] (le modèle) lorsque copier, devient la page 3 [pageindex 2] et les champs dupliquer sont avec un P2. au début.
Si j’utilise var pageIndex = this.pageNum +1;
La console me donne ceci et les champs à modifier ne sont pas reconnue
prefix: P3
TypeError: this.getField(…) is null
jctremblayMaître des clésC’est fait (le prototype en pièce jointe). J’ai placé mes variables de compteurs sur la page 1 (ils seront invisibles au final). Puis, chaque page (2,3,7 et 8) avec un compteur est un modèle avec un bouton. Pour la page 2, comme ceci:
var expTplt = getTemplate("p2");
expTplt.spawn(this.pageNum+1,true,false);
var newCount = parseInt(this.getField("counterP2").value + 3);
this.getField("counterP2").value = newCount;
var pageIndex = this.pageNum;
var prefix = "P" + pageIndex;
this.getField(prefix +".p2.p2_1").value = newCount;
this.getField(prefix +".p2.p2_2").value = newCount + 1;
this.getField(prefix +".p2.p2_3").value = newCount + 2;Dommage, le client à changer d’idée! 😐
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésUn compteur par couleur (donc quatre au total dans ce document).
Pour ce qui est de supprimer les pages. En fait, non, ils ne pourrons pas. (Reader ne le permet pas, à moins de leurs offrir un bouton/script).
jctremblayMaître des clésLes pages à dupliquer sont elles toutes identiques ou bien ont elles un contenu différent ? Contenu différent
L’utilisateur a-t-il moyen de supprimer les pages dupliquées et si oui comment ? Non, sinon qu’avec le navigateur de page
Dans l’image, un utilisateur pour dupliquer la section jaune, par exemple, dix fois. Donc, il y aurait plus que douze pages.
Une solution encore plus simple serait de laisser l’utilisateur entrer même les numéros. Cela risque d’être ma solution considérant le temps que j’ai a y mettre. 😀
jctremblayMaître des clésJe me suis réjouis trop vite…
En réalité, je vais avoir «4 liste» numérotés à configurer. Utiliser le pageIndex ne fonctionneras plus car les pages ne seront pas dupliquer toujours le même nombres ni le même ordre (voir l’image). Il me faudrais une façon de calculer le nombre de pages d’un templates spécifique, et d’utiliser ce nombre pour les calcules.Une idée de comment faire ça?
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésMes maths n’étaient pas correct… 😃 ceci fonctionne. (PDF joint pour les curieux)
var pageIndex = this.pageNum;
var prefix = « P » + pageIndex;
var nbField = 3;
this.getField(prefix + ».page.A »).value = pageIndex * nbField + 1;
this.getField(prefix + ».page.B »).value = pageIndex * nbField + 2;
this.getField(prefix + ».page.C »).value = pageIndex * nbField + 3;Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésThis seems to be working… the nbField variable is the number of fields on that page affected. Is there a better way of doing it?
var expTplt = getTemplate("page");expTplt.spawn(numPages,true,false);var pageIndex = this.pageNum;var prefix = "P" + pageIndex;var nbField = pageIndex + 3;this.getField(prefix +".page.A").value = nbField + 1;this.getField(prefix +".page.B").value = nbField + 2;this.getField(prefix +".page.C").value = nbField + 3;
-
Cette réponse a été modifiée le il y a 2 années et 2 mois par
jctremblay.
-
Cette réponse a été modifiée le il y a 2 années et 2 mois par
jctremblay.
jctremblayMaître des clésMerci!
jctremblayMaître des clésWow! Merci!
Il ne resterais qu’a enlever l’extension dans le nom de la pièce jointe dans le popup.Que ferions nous sans toi mon cher @bebarth ? 😍
jctremblayMaître des clésBon… J’ai réussi à faire un menu sur un bouton comme ceci, mais chaque nom des pièces jointes doit être écrit manuellement.
var menuItemNames = ["Le PDF 1", "Le PDF 2", "Le PDF 3", "Le HTML 1", "Le HTML 2"];
var actions = [
'this.exportDataObject({ cName: "PDF1.pdf", nLaunch: 2 });', 'this.exportDataObject({ cName: "PDF2.pdf", nLaunch: 2 });', 'this.exportDataObject({ cName: "PDF3.pdf", nLaunch: 2 });', 'this.exportDataObject({ cName: "html1.html", nLaunch: 2 });', 'this.exportDataObject({ cName: "html2.html", nLaunch: 2 });'
];
var cChoice = app.popUpMenu.apply(app, menuItemNames);
if (cChoice != null) { var selectedIndex = menuItemNames.indexOf(cChoice);
if (selectedIndex >= 0 && selectedIndex < actions.length) {
try {
eval(actions[selectedIndex]);
} catch (e) {
app.alert("An error occurred while executing the selected action: " + e);
} } }Ce qui serait mieux c’est que le menu capture le nombre de pièces et leurs noms de façon dynamique. Ce qui permettrait de l’utiliser rapidement sans avoir à l’éditer pour chaque usage. À suivre… à moins que @bebarth ait une idée pour modifier ce code. Je joint le PDF
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésOui. J’ai déjà vu ça… je cherche aussi par curiosité.
Je publie ici si je trouve.
jctremblayMaître des clésOui. l’ouverture des pièces jointes est possible avec ceci (et ça marche pour les html aussi).
this.exportDataObject({ cName: « PDF2.pdf », nLaunch: 2 });
Par contre quand j’essai de faire apparaitre un popup avec la liste de pièces jointes cela ne fonctionne pas. Ex:
Voir le code dans le troisième bouton du fichier
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésMerci Merlin! C’est bien ce que je pensais.
J’imagine que ce serait la même blocage de sécurité en essayant d’ouvrir un .html qui se trouve en pièce jointe ou l’écriture temporaire d’un fichier ainsi que son ouverture. Je me trompe?
-
Cette réponse a été modifiée le il y a 2 années et 3 mois par
jctremblay.
jctremblayMaître des clésCela a du sens… même si en réinitialisant les champs de listes, je n’attendais à ce qu’ils exécutent à nouveau la fonction de script personnalisé incluse dans ceux-ci. Ce qui n’est pas le cas.
jctremblayMaître des clésJ’ai utilisé ceci au lieu d’un bouton Réinitialiser standard et cela marche.
this.resetForm();
var gReset = this.getField("gomette");
gReset.fillColor = color.transparent;
jctremblayMaître des clésC’est bon aussi… 😀
Tu sais pourquoi, un bouton réinitialiser le formulaire ne remets la couleur de défaut des «gommettes»?
jctremblayMaître des clésPutain… mon dernier script modifié marche bien. J’avais oublié un «m» dans gommette… 😮
jctremblayMaître des clésJ’ai pensé à quelques choses comme ça, mais cela ne fonctionne pas.
function light()
{
var cName = event.target.name;
var nSuffix = cName.substring(cName.lastIndexOf('.')+1);if (!event.willCommit) {
switch (event.changeEx) {
case "Oui":
var couleur=["RGB",0,1,0];
break;
case "Partiellement":
var couleur=["RGB",1,1,0];
break;
case "Non":
var couleur=["RGB",1,0,0];
break;
default:
var couleur=["T"];
}
this.getField("gomette." + nSuffix).fillColor=couleur;
}
}
jctremblayMaître des clésLe voici…
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésOui, il y aura plusieurs séries de champs liste «couleurs» et «gommette».
Si j’appelle la fonction
light(event.target.name.substr(event.target.name.indexOf(".")+1));
Il ne se passe rien, probablement car à la fin dans le this.getField(gommette).fillColor=couleur;
le suffix n’est pas ajouter. L’extraction du suffix devrait être récupérer dans le script de document et non pas dans l’appelle de la fonction.je continue mes essai.
jctremblayMaître des clésActuellement j’ai ceci comme script de document. Et je ne met que light(« gommette.2 »); dans la zone de script de touche personnalisé
function light(gommette)
{
var field = this.getField(gommette);
if (!event.willCommit) {
switch (event.changeEx) {
case "Oui":
var couleur=["RGB",0,1,0];
break;
case "Partiellement":
var couleur=["RGB",1,1,0];
break;
case "Non":
var couleur=["RGB",1,0,0];
break;
default:
var couleur=["T"];
}
this.getField(gommette).fillColor=couleur;
}
}J’aimerai éliminer la nécessité d’entrée le nom du champs de la gomette.
jctremblayMaître des clésQuel beau hasard, je suis justement en train de faire ce genre de manipulation pour changer la couleur. C’est parfait. Par contre j’aimerai mettre ce script dans un fonction de script de document. Et configurer les variables (les champs «gommette» et la liste «couleurs») pour qu’ils soient automatiser selon le nom des champs ex: «couleurs.0» affecteras automatiquement «gommette.0», «couleurs.1» affecteras «gommette.1», etc.. Cela serait plus facile à modifier, et surtout lorsqu’une série de champs «couleurs/gommette» se retrouve dans une page.
Je sais que ça se fait… mais je suis perdu! 😀
jctremblayMaître des clésCe sont malheureusement des champs avec des noms différents et de document différents.
L’idée c’est que je recherchais une méthode rapide de remplir les champs lors de la fabrication des formulaires afin d’en valide l’aspect, l’alignement, les polices, etc. Je suis paresseux… 😂
De cliquer OK quelques fois pour les champs problématiques ne sera pas un grand souci.
jctremblayMaître des clésBon, les gars vous me rassurer. J’ai tellement essayé de trucs… Ce n’est pas tous les formulaires qui possèdent des champs au format spécifique. Je vis donc vivre avec cette limitation.
Merci!
jctremblayMaître des clésMerci! 😉
jctremblayMaître des clésOh 😯! C’est la classe comme d’habitude… merci!
Je remarque que je peux le faire pour les liste d’option en remplaçant
comboboxparlistboxen début de script. Serait-il possible d’avoir les deux types de liste dans un seul script?
jctremblayMaître des clésAucun souci… 😀.
Au final je l’ai modifié avec un
app.response();pour pouvoir l’executer sur une liste de mon choix.
J’obtiens dans ma console la liste des: Éléments – Valeur d’exportationvar fL = app.response();
var f = this.getField(fL);
var numItems = f.numItems;
console.clear();
console.show();
for (var i=0; i < f.numItems; i++) {
console.println(f.getItemAt(i,false) + " - " + f.getItemAt(i,true));
}
jctremblayMaître des clésJ’y suis arrivé…
console.show();
console.clear();
var field = this.getField("list");
var numItems = field.numItems;
for (var i = 0; i < numItems; i++) {
var displayValue = field.getItemAt(i, false);
console.println(displayValue);
}
jctremblayMaître des clésPour être plus précis… le code que j’ai mis va fonctionner SEULEMENT si les valeurs d’exportation sont vides. À ce moment je vais obtenir les éléments. Probablement, car les valeurs d’exportations utilisent le nom des éléments s’ils sont vides.
jctremblayMaître des clésEn passant avec ceci j’obtiens les valeurs des items de la liste. J’ai besoin d’obtenir les éléments (items)…
var listBoxField = this.getField("list");
var numItems = listBoxField.numItems;for (var i = 0; i < numItems; i++) {
var item = listBoxField.getItemAt(i);
var displayText = item.toString();
console.println(displayText);
}
jctremblayMaître des clésBonjour Merlin,
J’obtiens seulement un undefined dans la console. Comment spécifier un champ de liste en particulier?
jctremblayMaître des clésMerci Bebarth!
Ça me sembles bon. Je valide…
jctremblayMaître des clésMerci bebarth!
Les deux options fonctionnent. L’option de case à cocher est la plus pertinente pour mes besoins. Par contre, j’ai besoin que chacune des lignes de champs (start.x, end.x, Duree.x) possède leur propre case à cocher et non pas une qui affecte tout les champs. Serait-e possible de spécifier la caseAcocher dans le champ de calcul, tout en gardant l’ajout dans le script de document? Le caseAcocher enleveras 1h quand cocher, remettras une heure quand décocher.
Merci!
Qui a besoin de ChatGPT quand on a un Bebarth!Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésMerci JR! Bonne année à nous tous…
jctremblayMaître des clésMerci!… Me voici corriger devant tous! 😀
jctremblayMaître des clésOh mince… si simple!
Quand il s’agit que de nombre… le = est suffisant, mais quand c’est du texte il faut absolument == ?Détail important! J’ai passé des heures à chercher. 😂
Merci!
jctremblayMaître des clésJ’ai trouvé réponse à ma question dans une publication de 2004 dans le forum ici:
[une-alerte-javascript-une-seule]
jctremblayMaître des clésSalut Merlin,
Les codes fournis ne fonctionne pas. Les textes par défaut demeurent lors de l’impression. Voir le PDF pour test.Par contre, j’ai réussi à changer la couleur avec ses code-ci:
//Will Print
for (var i=0; i<this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));
if (oFld.type == "text" && oFld.value == oFld.defaultValue) {
oFld.textColor = color.white;
}
}//Did Print
for (var i=0; i<this.numFields; i++) {
var oFld = this.getField(this.getNthFieldName(i));
if (oFld.type == "text" && oFld.value == oFld.defaultValue) {
oFld.textColor = color.ltGray;
}
}Curieux de savoir pour quoi ton code ne fonctionne pas. 😀
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésMerci Merlin! J’essai ça…
jctremblayMaître des clésMe reste donc, juste a trouver comment cibler l’ensemble des champs. je cherche… 😀
jctremblayMaître des clésIl faut écrire un script d’action de document pour modifier les champs « lorsque le fichier sera imprimé » puis remettre les champs « lorsque le document a été imprimé ».
C’est ce que j’ai essayé sans succès. Ce peut-il que je dois écrit mon script initial non pas dans une action (on blur/focus) mais en validation, ou calcul?
jctremblayMaître des clésMerci!
J’ajoute à mes signets…
jctremblayMaître des clésAlors oui (avec un peu de retard) bonne année 2022 et merci milles fois pour ce forum!
jctremblayMaître des clésJ’ai trouvé pourquoi cela ne fonctionnais pas. Dans mon PDF j’ai un nombre de champs de texte plus grand que l’exemple que j’ai inclus. Là, je viens de réalisé que le chiffre ici:
for (var i=0; i<=3; i++) {
doit être plus petit que le totals de mes champs à fusionner. Sinon, cela ne marche plus. Donc, si j’ai 20 champs de texte, je vais devoir utiliser ceci
for (var i=0; i<=19; i++) {
jctremblayMaître des clésJe vis vérifier ce qui se passe réellement quand je vais avoir la tête libre… Merci.
jctremblayMaître des clésBebarth, tout est parfait sauf que maintenant j’ai décide de change les noms de mes champs de:
o.txt.1 et o.date.1 à txt.1 et date.1 et maintenant, même si je les renommes dans le script, cela ne fonction plus. je n’y comprend rien. C’est surement une pécadille. Help! 😀
3 décembre 2021 à 03:54 en réponse à : Modifier un script de champ vers un script de document. #70058
jctremblayMaître des clésSi simple… Merci encore une fois. Je vais tenter de m’en souvenir.
2 décembre 2021 à 23:39 en réponse à : Modifier un script de champ vers un script de document. #70056
jctremblayMaître des clésMerci Merlin, c’est parfait! J’ai juste changé le this.getField(« o.box. » + nSuffix).value= »Yes »} pour « Oui ».
Aussi, comment puis-je ajouter une autre modification sans répéter le
if (event.value=="")
if (event.value==""){this.getField("o.box." + nSuffix).value="Off"}
if (event.value==""){this.getField("o.date." + nSuffix).value=""}
else {this.getField("o.box." + nSuffix).value="Oui"} }
jctremblayMaître des clésMerci Bebarth! Comme c’est beau… Je vérifie tout ça et te reviens.
jctremblayMaître des clésMerci Merlin,
Du coup, cela a plus de sens et corrige un bogue avec ce que j’utilisais.
jctremblayMaître des clésOk, j’ai trouvé quelque chose. Je crois même que c’était dans ce forum, mais je ne le trouve plus. À moins que cela m’a été fournis en privé.
Merci!
jctremblayMaître des clésBonjour,
Cette technique je connais. Un peu pénible quand tu as à faire cela plusieurs fois.
jctremblayMaître des clésC’est bon, tout roule. Merci!
Presque… j’ai quelques fichiers ou les claques ne se fusion pas correctement. Calques qui ont été créer dans acrobat directement. Me reste à voir pourquoi.
jctremblayMaître des clésOMG! Erreur de débutant… Je ne sélectionnait qu’un seul et le second comme destination.
On ne peux pas fusionner vers un autre, mais avec un autre.
C’est bon, tout roule. Merci!
jctremblayMaître des clésLe script fonctionne bien pour supprimer les dossiers, mais par la suite la fonction Fusionner les Calques d’Acrobat ne fonction pas vraiment. Est-ce une limitation ou un bug? Les calques se merge au document.
jctremblayMaître des clésOh, interessant! J’essai avec mes documents.
jctremblayMaître des clésMerci bebarth ! C’est de toute beauté. :jerisjaune:
jctremblayMaître des clésBonjour, et merci pour toutes les pistes.
Puisque les champs que j’utilisais étaient des boutons, il m’était impossible d’utiliser des scripts de calculs ou de validation. J’ai donc utilisé un JavaScript de document que j’appelle au besoin.
Ceci n’était qu’un exercice pour saisir comment faire basculer la visibilité de boutons par d’autres boutons, puis d’afficher un bouton si les 3 premiers étaient visibles.
Je joins mon PDF pour votre curiosité.
jctremblayMaître des clésMerci!
«Je vais me coucher moins niaiseux !» Espression très québécoise. :geek:
jctremblayMaître des clésMerci Bebarth!
J’ai du changer le nom de la fonction et aussi mettre le nom du champ avec des » « .Code:warning_states(event.value,this.getField(« box_a »));J’ai fait des test avec mon code en:
a) action avec le champ désactivé;
b) validation script;
c) executé avec un bouton.Je joint mon document test pour les curieux.
PS: Pour ce genre d’appel de function, quel est la meilleur endroit ou mettre le code? Validate, Calcule, Action? J’ai vu que le code ne s’exécute pas toujours correctement en action sur les champs (souris relâcher entre autre).
jctremblayMaître des clésMerlin, si je veux utiliser ce script mais dans un script de document pour pouvoir appeler la fonction et le nom du champs avec un « Mouse Up », que dois-je faire.
J’ai essayer de mettre le code comme ceci au début:Code:function color(champ)
{
var cSaisie = event.value;
var oChampB = this.getField(champ);
…Et ceci dans le champ:
Code:color(« nom du champ »);La console me donne toujours ceci quand je modifie le contenu du champ texte.
Code:InvalidSetError: Propriété Set impossible, incorrecte ou inconnue.
Field.fillColor:9:AcroForm:champ_text:Annot1:MouseExit:Action1Que faire pour inclure comme variable dans la fonction un champ de texte modifiable facilement selon les besoins dans les champs?
jctremblayMaître des clésQuel « amateur »! :jerisjaune:
C’est exactement ça. C’est parfait.
jctremblayMaître des clésMais je ne suis pas un pro…
Quel humilité! :jerisjaune:
Une autre question pour toi en lien…
Si je veux changer le fond pour blue de tout les champs qui ne sont pas transparent ni blanc, je fais comment.J’ai essayé… avec des || ou && mais rien ne fonctionne.
if (!color.equal(f.fillColor,(color.transparent || color.white))) f.fillColor=color.blue;
jctremblayMaître des clésWow! Merci. Que c’est agréable d’apprendre des pros comme toi et notre cher Merlin!
:bravo:
jctremblayMaître des clésMerci Bebarth,
Le code eval est nécessaire en raison de l’utilisation de color.equal?
Ça fonctionne bien. J’ai pu ainsi me créer un script d’application pour m’ajouter une commande de menu pour un rechercher/remplacement de couleur. :extra:Maintenant, si je veux, faire une recherche de tout ce qui n’est pas color.transparent. Je devrait remplacer le color.equal par quoi?
jctremblayMaître des clésPour faire suite….
Je ne comprend pas pourquoi ceci fonctionne:
Code:var fcolo = color.blue;
var ccolo = color.yellow;
for (var i=0; ivar f=this.getField(this.getNthFieldName(i));
if (color.equal(f.textColor,fcolo)) f.textColor=ccolo;
}Mais que ceci ne fonctionne pas, lorsqu’on utilise un app.response
Code:var fcolo = app.response({cDefault: « color.blue »});
var ccolo = app.response({cDefault: « color.yellow »});for (var i=0; i
var f=this.getField(this.getNthFieldName(i));
if (color.equal(f.textColor,fcolo)) f.textColor=ccolo;
}
jctremblayMaître des clésExactement ce que je voulais. Merci…. encore une fois!
jctremblayMaître des clésBonsoir bebarth!
Ça, je connais. Ça permet d’uniformiser. Mais je ne veux pas ça, je veux juste changer le Yellow là ou il se trouve. Ce n’est pas tous les champs qui ont un fond Yellow.
Puis je recherche, une façon de changer le yellow pour du red aussi présent dans comme couleur de texte, de trait, etc… sachant que certains champs n’ont pas de Yellow et ne devrait pas serte modifier.
jctremblayMaître des clésVoici l’exemple !
La soirée est arrivé assez vite! :jerisjaune: C’est juste parfait encore une fois. Cela m’ouvre d’énormes possibilités. Merci!
jctremblayMaître des clésIl faudra donc utiliser une boucle pour extraire cette liste, et appliquer le readonly = false; pour chacun?
jctremblayMaître des clésAucune idée !
Adobe ne semble pas avoir d’idée non plus! :oh:
Ce serait quand même intéressant qu’alternativement, ils utilisent le Document Cloud pour héberger les formulaires distribuer. L’idée que les réponses soient collectées automatiquement sans gestions de courriel et de pièces joints me semble une fonctionnalité intéressante. Mais bon, la logique d’un utilisateur n’est pas la même qu’un développeur.
jctremblayMaître des clésSi ces champs sont utilisés dans des notations simplifiées de calcul tu mets des devant.
jctremblayMaître des clésAprès un coup d’œil à la documentation SDK, je pense pas que les paramètres d’accessibilité soit exposés/modifiables avec du JavaScript. :Smiley02:
jctremblayMaître des clésJ’ai pris le temps de tester un peu.
Le texte saisi dans un champ avec cette option Mot de passe ne peut pas être copié, il n’est pas exporté, et le champ est vidé lors de l’enregistrement du PDF. Donc, ce n’est pas pas une option pour «caché» le texte, mais bien pour permettre la saisi d’un mot de passe.
Un exemple, une section d’un formulaire dédié à l’administration dont tous les champs sont invisibles à l’écran et donc à l’utilisateur. L’administrateur à l’aide de son mot de passe peut terminer le formulaire reçu de celui-ci.
jctremblayMaître des clésÇa donne le vertige, mais c’est beau… :jerisjaune: Merci Bebarth!
Impressionant !
:bravo:
jctremblayMaître des clésMerci! Cela fonctionne parfaitement.
jctremblayMaître des clésMerci… Si j’integre ton code pour aplatir seulement les champs bouton. J’ai une erreur. À la ligne 17.
TypeError: this.getField(…) is null
17:Console:Exec
Tu as une idée… J’essai de récupérer le code d’AcrobatUsers pour aplatir tout les boutons.
Code:var list=new Array();
for (var i=0; ivar leChamp=this.getField(this.getNthFieldName(i));
if (leChamp.type== »button ») list.push(leChamp);
}var fields = new Array;
for (var i = 0; i < this.numFields; i++) {
fields = [
this.getNthFieldName(i),
this.getField(this.getNthFieldName(i)).display
];
this.getField(fields[0]).display = display.noPrint;
}for (var i = 0; i < list.length; i++) {
this.getField(list).display = display.visible;
}this.flattenPages({
nStart: 0,
nEnd: this.numPages – 1,
nNonPrint: 1,
});for (var i = 0; i < this.numFields; i++) {
for (var j = 0; j < fields.length; j++) {
if (fields[j][0] == this.getNthFieldName(i)) {
this.getField(this.getNthFieldName(i)).display = fields[j][1];
}
}
}
jctremblayMaître des clésDans ce que j’avais besoin, seulement la propiétés Print «Print when visible» qui devait changer pour «Never Print».
On va faire autrement.
jctremblayMaître des clésJe reviens avec une petite question concernant le script disponible sur le site Acrobatuser que j’ai mentionné plus haut.
Ce script permet de saisir manuellement les noms des champs à aplatir comme ceci:
var list = new Array();
list = [
« Text1 »,
« Text2 »
];J’imagine que ce serait possible au lieu d’une liste spécifique, que le Array contiennent automatiquement tout les champs de type bouton. Comment pourrais-je inclure quelques choses du genre pour construire mon Array avec les noms des boutons?
Aucune idée comment faire ça avec > this.getField(fname).type == « button »
jctremblayMaître des clésJe n’étais pas fou alors! :jerisjaune:
Dans le cas de ces PDF, l’utilisation d’action n’est pas possible. Les documents PDF sont remis à des clients, qui ne doivent pas pouvoir imprimer la «Base» d’aucune façon. Souvent avec Reader. Le fournisseur vas devoir mettre la propriété «Ne Jamais Imprimer» à la main. J’essayais de voir comment le faire avec un JS. Mais cela ne semble pas possible.
jctremblayMaître des clésBien, ça ne marche pas plus…
Avec la console oui, mais pas en action de document.
jctremblayMaître des clésC’est là, mais pas possible avec un Javascript.
J’ai essayer ceci dans le «document sera» «document est imprimer» et cela ne fonctionne pas. L’état, ne se chance pas. Sauf en sauvegardant le document. Probablement trop de code pour rien.
var ocgArray = getOCGs();
for (var i=0; i < ocgArray.length; i++) {
if (ocgArray.name == « Base ») {
ocgArray.state = !ocgArray.state;
}
}
jctremblayMaître des clésSi je lis bien ici:
Les propriétés d’impression ne sont pas possible avec un javascript. Il faut donc changer la visibilité seulement?
https://acrobatusers.com/tutorials/creating-and-using-layers-ocgs-with-acrobat-javascript/index.html
jctremblayMaître des clésC’est une possibilité…
Par contre, je ne trouve pas les informations pour modifier l’état «Ne jamais imprimer» vs «Imprimer lorsque visible». Du moins ceci ne semble pas détaillé dans la documentation.
jctremblayMaître des clés… Certainement l’hiver prochain !
J’ai hâte à l’hiver prochain! [Je pensais jamais dire ça!] :jerisjaune:
jctremblayMaître des clésC’est ça. La «visibilité» ou pas lors de l’impression.
jctremblayMaître des clésDonc, si j’ai bien saisi le script:
a) écriture de la liste des champs;
b) capturer les propriétés de visibilité de tout champs, puis les mettre tous invisible;
c) mettre les champs de la liste à visible;
d) Aplatir les champs visible;
e) Restaurer les propriétés initiaux des champs;
jctremblayMaître des clésPour aplatir des champs spécifique, il y a un javascript ici: https://answers.acrobatusers.com/How-flatten-specific-group-form-fields-page-q293414.aspx
Par contre, je me demande si toutes ces lignes sont nécessaires.
jctremblayMaître des clésBon, j’étais pas fou… du moins pas à cause de ça. :jerisjaune:
Mais j’ai cru comprendre que l’adoption du PDF 2.0 devrait changer la donne.
Il me semble que ça fait des années qu’on entend parler du PDF2.0. Rien vue de concret encore à ce niveau. Toi?
jctremblayMaître des clésJ’utilise Selective Flatten Tool de Thom Parker. Je me demandais s’il était possible d’aplatir qu’un seul avec le nom d’un champ spécifique mais en javascript.
jctremblayMaître des clésEn général je place cette info dans le tooltip, ou bien parfois en « Texte par défaut » qui disparait au focus.
Brillant! Comme toujours… :bravo:
jctremblayMaître des clésC’est de la merde… Sur mon MacBook Pro, je dois mettre mon zoom à 66% pour que les maths est du sens. Sur ma Surface Pro, c’est à 43.2%. Il y a certainement un lien avec la résolution de l’écran le moniteur.
-
Cette réponse a été modifiée le il y a 2 années et 2 mois par
-
AuteurRéponses
