Toutes mes réponses sur les forums
-
AuteurRéponses
-
10 décembre 2021 à 17:11 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70103
Merlin
Maître des clés😎
9 décembre 2021 à 22:34 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70100Merlin
Maître des clésPour avoir un bouton avec “texte sur icône” (à ajouter avant la dernière ligne) :
f.buttonPosition = position.overlay; // texte sur icône
Pour ne pas avoir le texte (les flèches) il faut supprimer ou désactiver cette ligne :
f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite
9 décembre 2021 à 17:08 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70098Merlin
Maître des clésAjoute cette ligne juste avant la dernière accolade , il faut indiquer le chemin d’accès au fichier icône (qui peut aussi être en PNG ou JPG) :
f.buttonImportIcon("/F/pdfs/monIcone.pdf");
9 décembre 2021 à 13:52 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70096Merlin
Maître des clésCette fois j’ai testé avec un Acrobat tout juste ouvert et donc débarrassé de toute variable fantôme, il y en avait deux autres 😱
// POSITION BOUTON "PAGE SUIVANTE"
var nPosBt6 = 1.5; // multiplicateur
var inch = 28.3; // unité de base, ce qui fait 1 inch = 1 centimètre
// CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
for (var p = 0; p < this.numPages; p++) {
// Position du rectangle
var aRect = this.getPageBox( {nPage: p} );
aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
aRect[1] -= .5*inch; // 0,5 cm from the top of page
aRect[3] = aRect[1] - 15; // and 15 points high
var f = this.addField("btPageSuiv", "button", p, aRect)
f.setAction("MouseUp", "this.pageNum++");
f.userName = "Page suivante"; // infobulle
f.display = display.noPrint;
f.borderStyle = border.s;
f.highlight = "none";
f.textSize = 0; // 0 = corps automatique
f.textColor = color.black;
f.fillColor = color.white;
f.strokeColor = color.black;
f.textFont = font.Helv; // Helvetica
f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite
}
9 décembre 2021 à 13:33 en réponse à : Générer un numéro unique non aléatoire dans un champ texte #70095Merlin
Maître des clésIl faut créer un champ texte qu’on va nommer COMPTEUR dans le document, initialisé à zéro.
Et ajouter cette ligne juste avant le script de réinitialisation :
this.getField("COMPTEUR").defaultValue = Number(this.getField("COMPTEUR").value) +1;
Merlin
Maître des clésOublie tout ce qui a été écrit précédemment et ce vieux script inutilement compliqué.
Je viens justement de croiser un script beaucoup plus simple sur un autre forum.
Ci-dessous et dans le document ci-joint en script de calcul du champ qui indique le nombre de jours :
if (this.getField("DateDeb").value != "" && this.getField("DateFin").value != "") {
var dd = this.getField("DateDeb").value;
var rd = this.getField("DateFin").value;
var d1 = util.scand("dd/mm/yyyy", dd);
var d2 = util.scand("dd/mm/yyyy", rd);
var diff = (d2.valueOf() - d1.valueOf()) / 1000;
event.value = (Math.round((diff / 60 / 60) / 24)+1) + " jour(s)";
}
else {event.value = "";}
Attachments:
You must be logged in to view attached files.8 décembre 2021 à 12:35 en réponse à : Générer un numéro unique non aléatoire dans un champ texte #70086Merlin
Maître des clésBonjour
Qu’appelles tu un “numéro unique” ? Est-ce qu’il doit être vraiment unique universellement parmi tous les documents du monde ou bien est-ce qu’il doit n’être unique que pour toi ?
À quoi devrait ressembler cette numérotation ?
Merlin
Maître des clésC’est parce-que tu n’as pas intégré la fonction qui se trouve en script de document dans l’exemple fourni :
Attachments:
You must be logged in to view attached files.Merlin
Maître des clésBonjour
Met ce code en script de Format Personnalisé dans le champ “texte2” :
if (event.value == 1) {event.value = ""};
7 décembre 2021 à 13:28 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70076Merlin
Maître des clésEn fait il manquait la première ligne, qui défini la variable “nPosBt6”.
Du coup j’ai testé et j’ai remplacé les “>>>” par leur équivalent Unicode car ça buggait (en dernière ligne).
// POSITION BOUTON "PAGE SUIVANTE"
var nPosBt6 = 1.5; // cm à partir du bord DROIT de la page, ce bt fait 1 cm de large
// CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
for (var p = 0; p < this.numPages; p++) {
// Position du rectangle
var aRect = this.getPageBox( {nPage: p} );
// aRect[0] = zéro car on est dans la CROP box
aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
aRect[1] -= .5*inch; // 0,5 cm from the top of page
// aRect[3] = zéro car on est dans la CROP box
aRect[3] = aRect[1] - 15; // and 15 points high
var f = this.addField("btPageSuiv", "button", p, aRect)
f.setAction("MouseUp", "pageSuiv()");
f.userName = "Page suivante"; // infobulle
f.display = display.noPrint;
f.borderStyle = border.s;
f.highlight = "none";
f.textSize = 0; // 0 = corps automatique
f.textColor = color.black;
f.fillColor = color.white;
f.strokeColor = color.black;
f.textFont = font.Helv; // Helvetica
f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite
}
Merlin
Maître des clésPar-contre il est possible d’insérer un document en pièce jointe, y compris avec Acrobat Reader.
4 décembre 2021 à 22:30 en réponse à : Case à cocher qui active les choix multiple d’autres cases à cocher #70071Merlin
Maître des clés👍
4 décembre 2021 à 10:33 en réponse à : Case à cocher qui active les choix multiple d’autres cases à cocher #70066Merlin
Maître des clésSi je comprend bien tu voudrais qu’une case à cocher active ou désactive un autre groupe de cases ?
3 décembre 2021 à 00:15 en réponse à : Modifier un script de champ vers un script de document. #70057Merlin
Maître des clésIl faut mettre les instructions à exécuter à la suite entre les accolades, on peut ajouter des lignes à loisir :
if (event.value == "")
{
this.getField("o.box." + nSuffix).value= "Off";
this.getField("o.date." + nSuffix).value= "";
}
else
{
this.getField("o.box." + nSuffix).value= "Oui";
this.getField("o.date." + nSuffix).value= "Exemple";
}
Merlin
Maître des clésBonjour
Pour moi c’est NON aussi.
Acrobat Reader ne peut pas importer ni ajouter des pages dans un document PDF.
2 décembre 2021 à 21:44 en réponse à : Modifier un script de champ vers un script de document. #70053Merlin
Maître des clésJe mettrais ça en script de Validation :
gereLeMachin();
Après avoir mis ça en script de document :
function gereLeMachin() {
// mise en variable du nom du champ actif
var cName = event.target.name;
// récupération du suffixe
var nSuffix = cName.substring(cName.lastIndexOf('.')+1);
if (event.value==""){this.getField("o.box." + nSuffix).value="Off"}
else {this.getField("o.box." + nSuffix).value="Yes"}
}
En fait j’ai remplacé le numéro de suffixe de ton script par une variable contenant le numéro de suffixe du champ actif/cliqué.
(Non testé)
Merlin
Maître des clésLe script modifié ci-dessus n’est pas au format “Code” pour qu’on puisse voir ce qui est en orange, mais du coup les guillemets droits qu’on utilise en JavaScript ont été transformé en guillemets à chevron avec une espace à l’intérieur.
Merlin
Maître des clésJe m’en doutais car ça me paraissait plus logique mais je m’en suis tenu aux instructions.
Script modifié (en orange) :
oSaisie1 = this.getField(“texte3”);
oSaisie2 = this.getField(“Classe de précision”);
oResult1 = this.getField(“texte4”);
oResult2 = this.getField(“texte5”);// si les deux champs sont remplis
if (oSaisie2.value != “Off” && oSaisie1.value != oSaisie1.defaultValue) {
// soustraction des valeurs
var nResult1 = oSaisie1.value – oSaisie2.value;
// si résultat = zéro
if (nResult1 == 0) {nResult1 = “”;}
// affectation du résultat
oResult1.value = nResult1;// calcul des valeurs
var nResult2 = oSaisie1 + (oSaisie1.value /2) + oSaisie2.value;
// si résultat = zéro
if (nResult2 == 0) {nResult2 = “”;}
// affectation du résultat
oResult2.value = nResult2;}
// sinon
else {
oResult1.value = oResult1.defaultValue;
oResult2.value = oResult2.defaultValue;
}Merlin
Maître des clésCe script de calcul est dans “texte3” mais il pourrait être dans n’importe quel autre champ, le document est là :
https://documentcloud.adobe.com/link/track?uri=urn:aaid:scds:US:e47d558a-eb52-449a-ab0f-893cb7b7dee4
oSaisie1 = this.getField("texte3");
oSaisie2 = this.getField("Classe de précision");
oResult1 = this.getField("texte4");
oResult2 = this.getField("texte5");
// si les deux champs sont remplis
if (oSaisie2.value != "Off" && oSaisie1.value != oSaisie1.defaultValue) {
// soustraction des valeurs
var nResult1 = oSaisie1.value - oSaisie2.value;
// si résultat = zéro
if (nResult1 == 0) {nResult1 = "";}
// affectation du résultat
oResult1.value = nResult1;
// calcul des valeurs
var nResult2 = (oSaisie1.value /2) + oSaisie2.value;
// si résultat = zéro
if (nResult2 == 0) {nResult2 = "";}
// affectation du résultat
oResult2.value = nResult2;
}
// sinon
else {
oResult1.value = oResult1.defaultValue;
oResult2.value = oResult2.defaultValue;
}
Merlin
Maître des clésLa réponse est OUI si on utilise ce script gratuit dont j’ignorais l’existence :
https://creativepro.com/files/kahrel/indesign/price_adjuster.html
Merlin
Maître des clés“CRMP1-.pdf: File exceeds allowed file size.”
Fais un “Enregistrer sous” de ton fichier.
S’il est encore trop gros pour passer en pièce jointe de ce forum tu peux utiliser une des nombreuses méthodes indiquées ici :
Merlin
Maître des clésPeux tu partager ton document ou un exemple en PDF ?
Je veux bien te montrer comment faire les calculs dans un document existant mais je n’ai pas le temps de créer un formulaire et des champs juste pour ça.
Merlin
Maître des clésBonjour
Peux tu partager ton document ou un exemple ?
Ce sera plus facile que d’expliquer et tu comprendras aussi bien.
Merlin
Maître des clés🙏
Merlin
Maître des clésOui, supprime ces deux actions.
C’est l’action Champ Activé qui déclenche le remplissage du champ, si et seulement s’il est vide.
Merlin
Maître des clésJe confirme que le lien ne fonctionne pas.
Voir ce sujet : https://www.abracadabrapdf.net/forums/topic/envoyer-partager-poster-une-piece-jointe-volumineuse/
Merlin
Maître des clésJe t’invite également à lire ou relire cet article : https://www.abracadabrapdf.net/?p=4736
😉
Merlin
Maître des clésBonjour
La réponse est non.Dans InDesign il y a deux façons d’utiliser le GREP :
- en “style GREP”, qui ne permet pas de remplacer car ça n’applique que des formatages.
- en “Rechercher-remplacer GREP”, mais il faut saisir le texte de remplacement. Il n’y a ni calcul ni automatisme possible.
-
Cette réponse a été modifiée le il y a 3 années et 5 mois par
Merlin.
Merlin
Maître des clésBonjour
Je le verrais mieux ainsi :
if (event.value >= 10) {
this.getField("AG").checkThisBox(0, true);
this.getField("AG TEXT").value ="Écart d'âge est plus de 10 ans";
}
else {
this.getField("AG").checkThisBox(0, false);
this.getField("AG TEXT").value ="";
}
Merlin
Maître des clés🙌🙌🙌
👏👏
👍
Merlin
Maître des clésJe viens de re-regarder le document : je trouve que dissocier les noms de jour (en dur, dans le fond de page) et les dates (dans des champs de formulaire) est source d’erreur car rien ne vérifie la concordance entre date et jour.
À mon avis il vaudrait mieux n’utiliser que des dates longues (avec le nom du jour) dans les champs.
😎
Merlin
Maître des clésComme c’est un script de calcul on peut le placer dans n’importe quel champ, mais je reconnais que c’est étrange, comme le nom des champs qui est à l’envers.
Je ne sais plus pourquoi ce document avait été fait ainsi, ça fait trop longtemps.
😇
Merlin
Maître des clésBonjour et bienvenue
J’ai placé ce script en script de validation dans le champ de départ (en orange dans le ci-joint).
(Le format de date du champ de départ doit correspondre à celui de la 3e ligne du script)
var daDate = event.value;
if(daDate !== "") {
var aDate = util.scand("dd/mm/yyyy", daDate);
if(aDate) {
for (var i=1; i<42; i++) {
var Dday = i * 24 * 60 * 60 * 1000;
oNewDate = new Date(Dday + aDate.getTime());
this.getField("date." + i).value = util.printd("dd/mm/yyyy", oNewDate);
}
}
}
else {
for (var i=1; i<42; i++) {
this.getField("date." + i).value = "";
}
}
Attachments:
You must be logged in to view attached files.Merlin
Maître des clésMerlin
Maître des clésTu peux copier-coller les champs de l’exemple ci-joint.
Attention, il y a une fonction en script de document.
Attachments:
You must be logged in to view attached files.Merlin
Maître des clésÇa ne peut pas fonctionner, ce sont des champs Date.
On ne peut pas soustraire des dates simplement, il faut préalablement convertir chaque date en millisecondes à partir de la date EPOCH, faire la soustraction, et re-convertir le résultat en date intelligible pour un humain.
On en a déjà parlé sur le forum, tu devrais faire une recherche (date, epoch, …).
Beaucoup de pièces jointes ont disparu lors du changement de forum alors n’hésites pas à revenir si tu as des questions ou besoin d’exemples.
Merlin
Maître des clésBonjour
A priori le script est bon, ce qui coince ce sont les guillemets à chevron (et les espaces qui vont avec), en JavaScript on n’utilise que les guillemets droits
"
(et donc sans espace entre le nom du champ et le guillemet).C’est notamment pour éviter ce genre de problèmes qu’en programmation on n’utilise pas de logiciels de traitement de texte (Word, TextEdit, Bloc-Notes…) mais des logiciels « Editeur de texte », comme les logiciels gratuits Notepad++ (Windows) ou BBedit (Mac).
-
Cette réponse a été modifiée le il y a 3 années et 5 mois par
Merlin.
Merlin
Maître des clés👍
Merlin
Maître des clés1000 mercis.
Si tout le monde faisait comme vous…
🙏
Merlin
Maître des clésEn fait il n’y a pas besoin de JavaScript ni de calculs compliqués, il faut juste bien nommer les champs et éventuellement utiliser un champ masqué. J’ai aussi modifié la valeur d’exportation des coches Parution.
Ce tuto explique pourquoi j’ai renommé les champs avec des points et pourquoi ça simplifie les calculs : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/
😎
Attachments:
You must be logged in to view attached files.Merlin
Maître des clésCe que je voulais dire, et bebarth aussi je suppose, c’est qu’avec un menu déroulant on ne peut commander qu’un seul article, ou alors il faut remplir un bon de commande pour chaque article, ce qui n’est pas ergonomique ni très logique.
S’il y avait une case à cocher devant chaque article on pourrait en commander plusieurs avec un seul bon de commande.
Quel que soit ton choix on peut facilement remplir le champ tarif automatiquement.
Si tu choisis les cases à cocher il faut mettre le prix de l’article en “valeur d’exportation” dans chaque case.
Si tu choisis de conserver le menu déroulant il faut que tu le refasses en ajoutant pour chaque article le tarif en “valeur d’exportation”, mais comme Acrobat ne permet de modifier les articles existants il faut tous les supprimer et recommencer.
Attention : en “valeur d’exportation” il ne faut mettre que le chiffre, pas d’espace ni de symbole monétaire.
Une fois que tu auras fait ça, poste ton document et bebarth ou moi pourra t’ajouter le bout de script qui va bien.
Attachments:
You must be logged in to view attached files.Merlin
Maître des clésBonjour
Exemple ci-joint, qui n’utilise pas de JavaScript, seulement les fonctions de calculs intégrées à Acrobat.
Pour moi le défaut de ce bon de commande c’est qu’on ne peut commander qu’un seul article (à moins que ce soit exprès ?).
Un jeu de coches à gauche ou à droite de la liste des articles permettrait d’en sélectionner plusieurs.
Attachments:
You must be logged in to view attached files.9 novembre 2021 à 20:31 en réponse à : Mise à jour automatique d’un champ suite à un changement de chiffre #69922Merlin
Maître des clésBonjour
A priori ça ressemble plutôt à un problème d’ordre de calcul mais avec juste le script hors contexte il n’est pas facile de répondre. 🤔
Ce serait plus simple si tu pouvais partager tout ou partie de ton document.
Merlin
Maître des clésBonjour
Mauvaise nouvelle, Flash Player n’existe plus et Acrobat XI ne sera jamais mis à jour.
Il faut utiliser Acrobat Pro DC ou Acrobat Pro 2020 (sans abonnement) pour créer des porte-documents sans Flash Player.
Bonne nouvelle quand même, les porte-documents créés avec Acrobat XI (ou autre) avec Flash Player sont lisibles avec les versions actuelles (en mode “classeur”, sans l’interface Flash).
-
Cette réponse a été modifiée le il y a 3 années et 5 mois par
Merlin.
Merlin
Maître des clés👍
Merlin
Maître des clésPrincipe de base de tout éditeur de logiciel : laisser l’utilisateur croire que c’est de sa faute…
😉
Merlin
Maître des clésÇa fonctionne bien mais effectivement il faut valider 2 fois.
Bravo.
Merlin
Maître des clésMerci !
Merlin
Maître des clésS’il y a “export en PDF” ça concerne le format PDF et ça peut nous intéresser.
😎
Merlin
Maître des clésJe n’ai jamais essayé ça.
Merlin
Maître des clésJe trouve ça très inquiétant, on livre nos administrations aux multinationales américaines qui planquent la plupart de leurs bénéfices dans les paradis fiscaux…
😮
Merlin
Maître des clés.
Merlin
Maître des clésÀ moins que l’Éducation Nationale ait déjà son propre système de signature numérique pour s’éviter de payer des abonnements à des multinationales américaines et protéger la confidentialité des échanges.
Mais je suis certainement en plein rêve. 😀
Merlin
Maître des clés- Le gestionnaire raisonne à l’ancienne, il devrait refaire les comptes parce-que les abonnements sont généralement calculés pour être (un peu) moins chers que l’achat.
- De toute façon il n’y a pas besoin de logiciel payant, Acrobat Reader suffit. On peut aussi utiliser les signatures depuis Word ou d’autres logiciels.
Ce qu’il faut payer dans ce cas c’est juste un abonnement à Adobe Sign, pour un ou plusieurs utilisateurs. Il y a plusieurs formules avec plusieurs options. L’essai est gratuit : https://www.adobe.com/fr/sign/free-trial-global.htmlIl y a aussi des concurrents qui proposent des offres et des prix différents, DocuSign étant le principal. Là aussi l’essai est gratuit : https://go.docusign.com/trial/productshot-france/
Merlin
Maître des clésMerlin
Maître des clésBonjour
Le mieux c’est d’oublier tout de suite les signatures avec certificat et tous les trucs compliqués qui demandent à l’utilisateur d’avoir un logiciel spécifique et de faire des manipulations complexes.
L’ultra simple c’est de les “Envoyer pour signature”, c’est une fonction disponible dans Acrobat Pro et Standard (avec Acrobat Reader il faut payer un abonnement AdobeSign).
Les destinataires reçoivent un email avec un lien qui les invite à se connecter, ils remplissent le formulaire en ligne directement dans le navigateur web et ils signent, le tout en étant guidés par de grosses flèches.
Ensuite, expéditeur et destinataire(s) reçoivent un lien pour télécharger le PDF signé numériquement avec une vraie signature certifiée.
Avec en prime un gestionnaire qui permet de savoir qui a/n’a pas répondu, quand, etc.
Le seul inconvénient c’est qu’on ne peut pas utiliser de formulaires avec des calculs, des actions JavaScript ou des formats compliqués, mais dans ton cas ça devrait le faire.
Voir ce tuto : https://helpx.adobe.com/fr/acrobat/using/send-for-signature.html
Merlin
Maître des clés😀
Merlin
Maître des clésPour le champ de code postal, j’ai implémenté la contrainte d’un nombre de caractères requis (5) en action de validation et j’ai également implémenté le format nombre avec zéro directeur (à gauche) en action de frappe. Ces 2 scripts sont dans les scripts fournis et fonctionnent très bien
Pourquoi ne pas utiliser directement le format “Code Postal” ?
Attachments:
You must be logged in to view attached files.Merlin
Maître des clés👍
Merlin
Maître des clésEssaie de faire comme indiqué dans la réponse correcte de ce sujet (il y a un bouton “Traduire” sous chaque message) :
Merlin
Maître des clésMise à jour 4 ans et demi après : l’application mobile n’existe plus.
Maintenant il y a un site web normal et accessible avec n’importe quel appareil :
https://avignonguidehistorique.fr/
Merlin
Maître des clésBonjour et bienvenue
Dans le format PDF on peut :
- animer/faire défiler des images ou des champs de formulaires avec JavaScript, mais ce n’est pas simple.
- intégrer une vidéo au format MP4.
- importer un fichier 3D (simple) et lui ajouter des actions via JavaScript (pas simple).
Voir ces PDF de démo :
- https://www.abracadabrapdf.net/pdf-de-demo/multimedia-pdfs-de-demo/pdf-anime/
- https://www.abracadabrapdf.net/pdf-de-demo/3d-pdf/pdf-3d-douille/
- https://www.abracadabrapdf.net/pdf-de-demo/pdf-parlant/abecedaire-des-lettres-animees/
- https://www.abracadabrapdf.net/category/pdf-de-demo/
Le résultat dépend du logiciel utilisé, les logiciels lecteurs de PDF “par défaut” (Aperçu et Edge principalement) sont catastrophiques car ils ne supportent que peu des fonctionnalités du format PDF 1.7, alias norme ISO 32000.
Contrairement à des logiciels comme Acrobat ou Foxit (dont les versions Reader sont gratuites).
Voir comment pallier à ce problème : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/forcer-utilisation-pdf-avec-acrobat-reader/Merlin
Maître des clésMerlin
Maître des clésMerlin
Maître des clésMerci ca marche bien pour afficher le champ mais, lorsque j’enlève la donnée du champ1, le champ2 ne disparait pas
Dans l’exemple ci-joint ça fonctionne.
PS ou est ce que vous avez appris tout ca?
Tout est là :
Attachments:
You must be logged in to view attached files.Merlin
Maître des clésBonjour
Il faut placer ce script en script de validation dans le champ 1, après avoir ajusté le nom du champ n°2 :
if (event.value.toString().length > 0) {this.getField(“CHAMP2”).display = display.visible;}
else {this.getField(“CHAMP2”).display = display.hidden;}Merlin
Maître des clésS'il est KO, je le mettrai en ligne ici mais le souci est qu'il utilise pas mal de la charte graphique de l'entreprise et donc cela m'ennuie un peu de le publier tel que……!!!!
Tu traces des grands rectangles sur les zones à supprimer et tu nous laisse juste l'essentiel :
https://helpx.adobe.com/fr/acrobat/using/removing-sensitive-content-pdfs.htmlMerlin
Maître des clésBonjour et bienvenue
On peut forcer l'affichage de certains caractères en capitale après la saisie, qu'ils soient accentués ou non.
On peut aussi le faire à la volée lors de la saisie pour tous les caractères avec une simple ligne de JavaScript.Si j'ai bien compris ta demande, il faudrait développer un script qui détecte les sauts de ligne, les poins et autres ponctuations de fin de phrase, mais ça c'est a priori une autre paire de manches.
J'ai pensé à activer le correcteur orthographique dans le champ de saisie en question mais ça ne fonctionne que pour les noms propres, il ne détecte pas les débuts de phrase (merci Adobe !).
Quelqu'un aura peut être une autre idée ?Se as pas vis l'Ordecho, as d'jamal ràn vis!
Merlin
Maître des clésBonjour
Le script à l'air OK… Peux tu partager ce document (après avoir biffé son contenu si besoin) ?Merlin
Maître des clésBonjour et bienvenue
Ça requiert un bon niveau en JavaScript.
Ready ?15 octobre 2021 à 09:47 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #69701Merlin
Maître des clésDans ce cas le plus simple est d’utiliser ce script dans une Action, après l’avoir personnalisé, ensuite on peut appliquer l’Action sur un lot de fichiers.
// CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
for (var p = 0; p < this.numPages; p++) {
// Position du rectangle
var aRect = this.getPageBox( {nPage: p} );
// aRect[0] = zéro car on est dans la CROP box
aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
aRect[1] -= .5*inch; // 0,5 cm from the top of page
// aRect[3] = zéro car on est dans la CROP box
aRect[3] = aRect[1] - 15; // and 15 points high
var f = this.addField("btPageSuiv", "button", p, aRect )
f.setAction("MouseUp", "pageSuiv()");
f.userName = "Page suivante"; // infobulle
f.display = display.noPrint;
f.borderStyle = border.s;
f.highlight = "none";
f.textSize = 0; // 0 = corps automatique
f.textColor = color.black;
f.fillColor = color.white;
f.strokeColor = color.transparent;
f.textFont = font.Helv; // Helvetica
f.buttonSetCaption(">>>"); // flèche vers la droite
}
-
Cette réponse a été modifiée le il y a 3 années et 6 mois par
JR Boulay.
14 octobre 2021 à 20:26 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #69699Merlin
Maître des clésBonjour
Je crois que c'est typiquement un bouton qui ne sert pas à grand-chose car il existe déjà par défaut au-dessus de tous les documents.
Il y a aussi un raccourci-clavier.Merlin
Maître des clésAs-tu essayé de jouer avec les réglages d'éclairage ?
Sinon partage ton fichier qu'on puisse voir ce que ça donne sur d'autres écrans.Merlin
Maître des clésSi un formulaire est destiné à être imprimé ça n'a pas de sens d'interdire l'impression. :tutut:
L'utilisateur peut avoir plein de bonnes raisons pour vouloir imprimer un formulaire partiellement rempli et finir de le compléter à la main.Je suis donc à fond avec la proposition de bebarth.
Merlin
Maître des clésVers 2006/2007 un administrateur a dû changer mon pseudo en MagicPDF suite à un bug du forum de MacGé et depuis il est resté.
J'ai aussi reconnu ton pseudo, dès que j'ai reçu le message de confirmation d'inscription. :Smiley03:Merlin
Maître des clés(A ce propos es-tu MagicPDF, qui aidait les gens sur Macgénération dans le temps ?)
C'est bien moi, mais pourquoi “dans le temps” ? :geek:
Merlin
Maître des clésCeci dit, on peut leur conseiller d'utiliser Acrobat Reader (ce que la plupart font déjà je pense).
Le “conseil” ça ne fonctionne pas très bien, je te conseille plutôt d'utiliser ce truc de la mort qui tue efficace à 100% :
https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/forcer-utilisation-pdf-avec-acrobat-reader/Peux-tu me dire la marche à suivre pour aplatir à partir de Reader ?
Acrobat Reader ne permet pas d'aplatir les champs de formulaires.
Sur Windows il est toujours possible d'imprimer en PDF pour générer un nouveau PDF aplati mais ce n'est pas automatisable et ça ne fonctionne pas sur Mac.À ce stade je crois qu'il faudrait peut être penser à changer d'imprimeur (on n'est plus au XXe siècle), ça simplifierait beaucoup de choses. :Smiley15:
Merlin
Maître des clésBonjour et bienvenue
Les champs de formulaire ne sont pas des objets comme les autres et ils ne supportent que le mode colorimétrique RVB.
Mais ils devraient s'imprimer…Il faudrait prévoir dans ton formulaire la possibilité d'aplatir les champs de formulaire pour intégrer leur contenu à la couche graphique, et il faudrait aussi prévoir la conversion en CMJN. Mais ce n'est possible qu'avec Acrobat Pro, pas avec Reader.
Donc il faut savoir de quel logiciel ton client est équipé.
(L'aplatissement peut fonctionner avec Acrobat Standard mais pas la conversion CMJN)25 septembre 2021 à 08:57 en réponse à : Script d’impression se lance sur Acrobat Pro mais pas sur Acrobat Reader #69669Merlin
Maître des clésIl faut ajouter cette ligne :
var f = this.numPages
var pp = this.getPrintParams();
pp.printRange = 1,f -1;
pp.pageHandling = pp.constants.handling.fit; // ajuster au papier
this.print(pp);24 septembre 2021 à 09:26 en réponse à : Script d’impression se lance sur Acrobat Pro mais pas sur Acrobat Reader #69666Merlin
Maître des clésScripts qu'on peut améliorer ainsi pour éviter que l'utilisateur soit invité à enregistrer le document s'il n'a pas fait de modication avant de l'imprimer :
// Document sera imprimé (document will print)
var bSale = this.dirty;
this.deletePages({nStart: this.numPages-1});
console.println(“Suppression de la page modèle pendant l'impression…”);// Document a été imprimé (document did print)
this.spawnPageFromTemplate({cTemplate: “pageModele”});
this.dirty = bSale;
console.println(“…puis réaffichage de la page.”);:geek:
À propos de “this.dirty” voir : https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/Acro12_MasterBook/JS_API_AcroJS/Doc_properties.htm?rhhlterm=dirty&rhsyns=%20#XREF_39186_dirty
24 septembre 2021 à 09:23 en réponse à : Script d’impression se lance sur Acrobat Pro mais pas sur Acrobat Reader #69665Merlin
Maître des clésbebarth, merci pour l'exemple mais j'utiliserais les scripts autrement : placés en action “Document sera imprimé” et en action “Document a été imprimé”.
Ainsi il n'y a pas forcément besoin de bouton Imprimer et ça fonctionne quelle que soit la commande choisie par l'utilisateur (menu Fichier : Imprimer, raccourci-clavier, icône d'outil rapide…) pour imprimer.
:Smiley03:
// Document sera imprimé (document will print)
this.deletePages({nStart: this.numPages-1});
console.println(“Suppression de la page modèle pendant l'impression…”);// Document a été imprimé (document did print)
this.spawnPageFromTemplate({cTemplate: “pageModele”});
console.println(“…puis réaffichage de la page.”);24 septembre 2021 à 07:41 en réponse à : Script d’impression se lance sur Acrobat Pro mais pas sur Acrobat Reader #69663Merlin
Maître des clésL'autre méthode, plus “brutale”, c'est de recouvrir la page à ne pas imprimer avec un champ à fond blanc réglé pour être “invisible à l'écran et visible à l'impression”.
Ainsi ladite page ne s'imprime pas, mais ça ajoute une page blanche/vide lors de l'impression.
:Smiley03:24 septembre 2021 à 07:35 en réponse à : Script d’impression se lance sur Acrobat Pro mais pas sur Acrobat Reader #69662Merlin
Maître des clésPas besoin de bidouiller, la solution est simple.
Il faut générer une page à partir du template et masquer le template.Cette page générée “non statique” peut donc être supprimée avant l'impression, et re-générée ensuite à partir du template masqué.
:Smiley15:
22 septembre 2021 à 13:19 en réponse à : Script d’impression se lance sur Acrobat Pro mais pas sur Acrobat Reader #69660Merlin
Maître des clésOui, Acrobat Reader ne peut pas afficher/masquer des Templates.
Par-contre il* peut générer (spawn) des pages à partir de Templates et il peut supprimer les pages ainsi générées (mais il peut pas supprimer les pages statiques).Bizarrement, Foxit Reader permet lui aussi de générer des pages à partir de Templates mais pas de supprimer les pages ainsi générées… :oh:
* (Acrobat Reader DC et Adobe Reader XI seulement, pas les versions antérieures)
Merlin
Maître des clésbebarth, tu as complètement raison mais… Tu vas vite constater que dès que le champ est vidé ou réinitialisé il perd tous ses réglages RTF et revient aux valeurs par défaut.
Efface le texte dans ton document et essaie d'en saisir un autre.
Merci Adobe. :mur: :oh:Merlin
Maître des clésBonjour et bienvenue
J'avais écrit une réponse hier mais le forum s'est évaporé au moment de la poster, donc je recommence. :geek:
L'interlignage est ingérable dans un champ de formulaire PDF.
Mais ce n'est pas un drame car les formulaires numériques n'ont pas besoin de lignes ni de champs-peigne (précasés), je ne connais aucun type de champ de formulaire pouvant être rempli de travers ou en superposant les caractères.
Donc la solution est simple : attribuer un fond blanc aux champs text pour masquer les lignes et/ou les champs-peigne sous-jacents.Reste le cas du formulaire mixte papier/numérique, dans ce cas j'utilise deux scripts, un qui attribue un fond blanc au champ dès qu'il est activé, et un autre qui vérifie si le champ a été rempli quand il est désactivé.
Si le champ a été rempli il garde son fond blanc, sinon le script remet le fond transparent pour que ça puisse être rempli à la main.Donc en Action “Champ activé” (on Focus) je met ce script :
Code:event.target.fillColor = color.white ;Et en Action “champ désactivé” (on Blur) :
Code:if (event.value.toString().length > 0) {event.target.fillColor = color.white ;}
else {event.target.fillColor = color.transparent ;}Le script en Action “champ désactivé” peut fonctionner sans l'autre, mais dans ce cas le fond ne devient blanc que quand le champ est désactivé et que s'il a été rempli.
Merlin
Maître des clés:bravo:
Merlin
Maître des clésLa valeur du champ reste bloquée à la valeur précédente parce-que le script ci-dessus ne fonctionne pas.
Ce n'est pas la 1re fois que je me fais avoir : il ne faut pas mettre .value en variable quand on veut l'assigner, ça ne fonctionne qu'en lecture. :oh: :geek:
Par ailleurs j'ai aussi changé l'ordre des conditions, sinon dans certains cas certaines ne s'exécuteront pas.var f = this.getField(“Text8”).value;
var g = this.getField(“Text9.0”);if (f>11) {
(g.value = “- de 25”);
}
else if (f<1) {
(g.value = “+ de 30”);
}
else if (f<6) {
(g.value = “25 u00E0 30”); // u00E0 = “à” en Unicode
}
else if (f<12) {
(g.value = “25”);
}
else {
g.value = “”;
}Exemple ci-joint (parce-que cette fois j'ai testé…).
Merlin
Maître des clésSi c'est ça que tu appelles “un maximum de détails” je sens que ça va être laborieux… :Euuuh:
L'EPS est un format obsolète et périmé qu'il vaut mieux éviter d'utiliser.Peux-tu partager ton document ou un exemple ?
Voir : https://abracadabrapdf.net/forum/index.php/topic,2974.0.htmlMerlin
Maître des clésBonjour
La rubrique Support & Assistance ne concerne que les utilitaires (gratuit) fournis par le site abracadabraPDF, le reste se passe ici. :idee:
Ton script peut être amélioré ainsi :
– un peu d'Unicode pour la compatibilité, voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/pdf-javascript-et-unicode/
– “else if” fait que le script s'arrêtera dès qu'il aura trouvé une concordance au lieu de continuer à tester toutes les conditions.
– le “else” final sert à gérer tous les autres cas indéterminés et à vider le champ texte, qui sinon conserverait la valeur précédente.
– pourquoi mettre un champ en variable et pas l'autre ? Pour le coup ça ne fait pas une grosse différence mais ça permet aux scripts de s'exécuter beaucoup plus vite et qui simplifie la maintenance.
var f = this.getField(“Text8”).value;
var g = this.getField(“Text9.0”).value;if (f>11) {
(g = “- de 25”);
}
else if (f<12) {
(g = “25”);
}
else if (f<6) {
(g = “25 u00E0 30″); // u00E0 = “à” en Unicode
}
else if (f<1) {
(g = “+ de 30”);
}
else {
g = “”;
}
Modif : voir ci-dessous.Merlin
Maître des clésAvec quel logiciel ?
Avec quelles options d'exportation ?
…Merci de donner un maximum de détails, je suis magicien, pas devin. :Smiley01:
Merlin
Maître des clésMoi j'exporterais la nouvelle page du nouveau document et je la réimporterais dans l'ancien document, dans un premier temps avec ses champs de formulaire, et sans ses champs de formulaire si ça continue de bugger.
Rien n'empêche de travailler sur des templates existants, la petite case qui est en regard de chaque template sert à l'afficher/masquer.
Merlin
Maître des clésBonjour et bienvenue
Comment fais tu pour enregistrer/exporter ton formulaire en JPEG ?
Merlin
Maître des clésBonjour
Je les ai ouverts, quelque chose a foiré lors de la réalisation du nouveau document.
Moi je reprendrais l'ancien, et je recommencerais à partir de là.
:priere:13 septembre 2021 à 10:17 en réponse à : Extract Highlighted Text in a pdf file and export those text to a other pdf file #69604Merlin
Maître des clésI want both comments , highlighted text to be extracted.
So I repeat my question :
Rakesh Kumar, why can't you use the Acrobat Pro embedded tool “Create Comment Summary” ?
It look like we are trying to reinvent the wheel.Merlin
Maître des clésBonjour
Si le nombre de chiffres est fixe/toujours le même c'est typiquement un cas d'utilisation du Format : “Masque arbitraire”, comme ceci : FACT-99999999999999999
Voir : http://abracadabrapdf.net/forum/index.php/topic,1301.msg5905.html#msg5905Sinon il faut utiliser du JavaScript avec un peu de GREP.
4 septembre 2021 à 07:34 en réponse à : Extract Highlighted Text in a pdf file and export those text to a other pdf file #69600Merlin
Maître des clésRakesh Kumar, why can’t you use the Acrobat Pro embedded tool “Create Comment Summary” ?
It look like we are trying to reinvent the wheel.Merlin
Maître des clésétant d’un niveau “amateur” je voulais savoir où créer le code qui génèrera plusieurs fichiers à l’issue d’un import de données en .txt.
– Tous les scripts JavaScript ?
– Scripts JavaScript du document ?
– Action du document ?Il faut que tu lises cet article : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
Merlin
Maître des clésBonjour et bienvenue
Oui c’est possible mais ça demande un bon niveau de connaissances en formulaire PDF et (surtout) en JavaScript.
Il ne s’agit pas juste d’ajouter quelques champs de formulaire sur un document, c’est un projet de développement. -
AuteurRéponses