Toutes mes réponses sur les forums
-
AuteurRéponses
-
26 mai 2015 à 10:31 en réponse à : Bouton à double action : envoi mail PDF en PJ + sélection de pages du PDF #58981psykolivierMembre
Merlin,
Très informatif le PDF exemple, mais on peut pas bidouiller ton JS pour voir comment tu as fait :Smiley01:
Bon, sinon mon script fonctionne plutôt bien.
Seul bémol, l’extraction de page génère un PDF “temporaire” avec un nom très… aléatoire ! :Euuuh:Je suis en train de tester différentes méthodes pour pour renommer le PDF.
Mais ça sent encore la complication ^^26 mai 2015 à 10:04 en réponse à : Bouton à double action : envoi mail PDF en PJ + sélection de pages du PDF #58980psykolivierMembreAh ? j’ai essayé un mailto et cela n’a rien donné.
Bon j’ai dû faire une fausse manip !J’étais en train de tester un truc du genre
Code:var TempDoc = this.extractPages({nStart: 2, nEnd: 3});
TempDoc.mailDoc(true, “mail du destinataire”, “mail en CC”, “mail en BCC”, “Corps du message”, “Sujet du mail”);
TempDoc.closeDoc(true);Le comportement est un peu… particulier, mais cela semble fonctionner.
Merci pour ton lien, je vais regarder cela de suite !!!
26 mai 2015 à 09:48 en réponse à : Bouton à double action : envoi mail PDF en PJ + sélection de pages du PDF #58978psykolivierMembreHum… alors oui effectivement
Je viens de voir qu’en passant par la commande :
ENVOYER UN FORMULAIRE, il y a les options FDF, HTML, XFDF, Document intégral PDF.Sauf que là, c’est j’imagine pour des traitements de données et l’envoi via un serveur ?
Car il faut saisir un URL !?Moi j’étais tout simplement parti d’un script JS tout simple this.mailDoc(…blabla…);
20 mai 2015 à 07:57 en réponse à : Bouton à double action : envoi mail PDF en PJ + sélection de pages du PDF #58976psykolivierMembreMerlin,
Merci tout d’abord pour ta réponse.
Oui oui, le PDF est réalisé avec Acrobat PRO.
Alors… concernant l’export en FDF ou XFDF puis après traiter les données… oula
C’est au delà de mes compétences !!!
Et puis c’est surtout que ce PDF allégé est destiné à un “tout public”, donc l’idéal est qu’il est un PDF imprimable.psykolivierMembreEssayes sans, d’autant que pour le coup, construire un array ne sert pas à grand-chose.
Si un peu quand même, j’ai un quantité de champs !!
Et ca evite de faire des conditions pour chaque champs.
Une boucle et hop !psykolivierMembreje ne saurais te dire…
J’ai modifier ton PDF, pour tester en mettant les CheckBox dans un ARRAY
var chobliZ = new Array() ;
chobliZ[0] = “Check Box7” ;for (var co = 0 ; co < chobliZ.length ; co++) {
if (this.getField(chobliZ[co]).value == “”) {
this.getField(chobliZ[co]).lineWidth = 1 ;
this.getField(chobliZ[co]).strokeColor = color.red;
} else {
this.getField(chobliZ[co]).lineWidth = 1 ;
this.getField(chobliZ[co]).strokeColor = color.transparent;
}
}Et là, il ne se passe rien.
Donc le soucis, viendrait de là :doute:psykolivierMembreCode:this.getField(ChOblig[co]).lineWidth = 2 ;Par-contre cette ligne m’apparait inutile car le script passe son temps à mettre le contour sur 2 points quel que soit le cas.
Il suffirait peut être de le fixer à 2 points au départ et de le laisser tel quel ensuite.Oui je suis 100% tout à fait parfaitement totalement d’accord.
Mais euh… autant j’ai vu qu’on pouvait mettre du JS sur une page (qui donc s’excute à chaque fois qu’on retourne sur cette page).
Mais globalement sur le doc c’est possible aussi ?psykolivierMembreOk merci Merlin.
Bon au moins c’est clair et net et précis….Bonjour,
Ca peux effectivement fonctionner avec Reader X et versions antérieures, mais :
– soit c’est un PDF-XFA créé avec LiveCycle Designer,
– soit il doit bénéficier des “super” droits étendus délivrés par les serveurs Adobe LiveCycle, mais ça coûte plus que les deux bras.Voir aussi ce nouvel article : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/dupliquer-des-pages-dans-un-formulaire-pdf/
psykolivierMembreBon, le this.insertPages() ne semble pas la bonne solution… maintenant que j’ai compris que c’était pour appeler à partir d’un autre fichier.
A priori, la solution n’est pas dans les pièces jointes non plus.
Sur les forums LiveCycle, je vois souvent : .presence = “hidden”;
psykolivierMembre[font=verdana, arial, sans-serif]Oui… sauf que j’ai un fichier PDF (protégé) où l’apparition de page fonctionne parfaitement sur Reader version 10.[/font]
[font=verdana, arial, sans-serif]Alors, peut-être est-ce une astuce autre que SPAWN.[/font]
[font=verdana, arial, sans-serif]Mais les pages sont invisibles à l’ouverture, et lors du choix dans le menu déroulant, les pages apparaissent.[/font]psykolivierMembreFonctionne très bien sur PRO.
Mais pas sur Reader X, meme “Extend Reader” > “Activer les options supplémentaires”
:mur:Je vais tester avec la fonction this.insertPages()
psykolivierMembreWoah, merci d’avoir pris le temps
je reste cela de suite !psykolivierMembreIl est “protégé”, impossible de voir les sources du javascript.
Et c’est un peu délicat de le rendre public c’est du domaine banquaire.Sinon, je suis tombé sur ce lien :
http://www.pdfshareforms.com/wp-content/uploads/2013/03/Showing-and-hiding-document-pages-using-Client-side-Scripting.pdfOù il est évoqué :
if (Default.resolveNode(“#subform[1]”).presence ==”hidden”) {
Default.resolveNode(“#subform[1]”).presence=”visible”;
} else {
Default.resolveNode(“#subform[1]”).presence=”hidden”
}psykolivierMembreJ’ai Acrobat Reader X.
Oui, je lis ici et là, que cela ne peut fonctionner que sur PRO et à partir de READER XI.
Mais je sais que c’est possible, car j’ai obtenu un fichier PDF exemple où l’apparition de page fonctionne.Aussi bien sur Pro que Reader.
Alors, peut-être que ce n’est pas du SPAWN.
Mais simplement des pages cachées, qui sont ensuite rendu visible ?psykolivierMembreOui, il y a bien les 2 valeurs.
Arf, sur mon iPad je peux pas joindre de fichierpsykolivierMembreJe vais mettre sur le compte du ARRAY.
Car je créé un ARRAY pour lister mes champs obligatoire.
var ChOblig = new Array() ;
ChOblig[0] = “FIELD_A” ;
ChOblig[1] = “FIELD_B” ;Et après une boucle
for (var co = 0 ; co < chobli.length ; co++) {
if (this.getField(ChOblig[co]).value == “”) {
this.getField(ChOblig[co]).lineWidth = 2 ;
this.getField(ChOblig[co]).strokeColor = color.red ;
} else {
this.getField(ChOblig[co]).lineWidth = 2 ;
this.getField(ChOblig[co]).strokeColor = color.transparent ;
}
}psykolivierMembreMouhahaha :mur:
Ca fonctionne bien avec ton PDF !
psykolivierMembreOK, merci pour l’info…
très bizarre alors que moi ca ne fonctionne pas…psykolivierMembreBonjour,
Il y a un bug quelque part, normalement ça fonctionne très bien, y compris sur les cases-à-cocher.
:joker:Hum… alors peut-être parce que j’ai des cases à cocher qui ont le même nom ?
(oui des cases à cocher qui fonctionne comme des boutons radio)psykolivierMembrePas trouvé de solution sur le net… j’ai suis donc passé par ARRAY
var ChOblig = new Array() ;
ChOblig[0] = “FIELD_A” ;
ChOblig[1] = “FIELD_B” ;
etc…Un peu fastidieux, mais seul solution pour le moment
psykolivierMembreJe me permets de rebondir sur ce sujet déjà créer.
Concernant le script que l’on peut trouver sur le lien :
Code:function validateFields() {
//a counter for the number of empty fields
var flg = 0// count all the form fields
var n = this.numFields//create an array to contain the names of required fields
//if they are determined to be emptyvar fArr = new Array();
//loop through all fields and check for those that are required
// all fields that have a ‘*’ in their tool tip are requiredfor(var i = 0;i0){
app.alert(‘There are ‘+flg+’ fields that require a valuenn’+ fArr,3)
}
else{
this.print();
}}
validateFields();
Cela check TOUS les champs en supposant qu’ils sont tous obligatoire.
Il n’y a donc pas de trie entre les champs obligatoire et les champs NON obligatoire.Existe-t-il un moyen semblable de controler uniquement les champs obligatoires ?
Sans avoir à tous les lister 1 à 1 ? Car ca peut vite devenir fastidieux, et donc source d’erreur4 septembre 2014 à 12:36 en réponse à : La recopie de valeur avec des "0" au début… les "0" sont zappés #57562psykolivierMembreAh !?
Très bonne info ça !
Je n’aurais pas cru qu’un JS d’un PDF aurait pu agir sur un autre fichier ouvert.psykolivierMembreHum… ok effectivement, cela est plus compliqué qu’il ne me paraissait.
4 septembre 2014 à 11:05 en réponse à : La recopie de valeur avec des "0" au début… les "0" sont zappés #57560psykolivierMembreGreat !
Merci pour l’info !!!psykolivierMembreOK, je vais suivre ton conseil alors
psykolivierMembreUne bonne galère en perspective.
LoL ok
psykolivierMembreHello,
Je viens de tester ton fichier d’exemple, avec la duplication de template (modèle).
Cette partie là c’était OK.
Mais comment faire pour savoir combien de duplication ont été créé au total ?un truc du genre : template(“MonModele”).count :idee:
/// EDIT ///
Ceci étant, le sujet initial de la duplication est réglé
Mon code un peu tordu :
Code://ADHERENTS
var NewPageA = getTemplate(“ADHERENT”);
var NewPageB = getTemplate(“ADHERENT_COMPLETEMENT”);
var TotalAdherents = this.getField(“NOMBRE_ADHERENTS”).value;var j = pageNum;
if (TotalAdherents > 0) {
for (var i =0; i < TotalAdherents; i++) {
NewPageA.spawn({nPage: j + 1, bRename: false, bOverlay: false});
NewPageB.spawn({nPage: j + 2, bRename: false, bOverlay: false});
j = j+2;
}
}Je me permets d’ouvrir un autre sujet pour la suite de mon questionnement
psykolivierMembrePour l’ordre de “spawn” des pages, j’ai fais un truc pas très propre… mais qui fonctionne.
Code://ADHERENTS
var NewPage = getTemplate(“ADHERENT”);
var TotalAdherents = this.getField(“NOMBRE_ADHERENTS”).value;var j = pageNum;
if (TotalAdherents >= 0) {
for (var i =0; i < TotalAdherents; i++) {
NewPage.spawn({nPage: j + 1, bRename: false, bOverlay: false});
j = j+1;
}
}Me reste mon soucis de pages en trop
psykolivierMembreCa avance, ca avance…
Voici mon état d’avancement.
– Ma PAGE 1 présente une formulaire qui permet entre autre de choisir le nombre d’adhérents (jusqu’à 6) – régler à 0 à l’ouverture.
– Ma PAGE 2 est nommée en template ADHERENT
– Ma PAGE 2 est cachée, pour ne pas être visible à l’ouverture– Sur ma PAGE 1, je valide mon formulaire par un bouton et une action javascript.
Avec notamment cette partie, pour afficher/créer autant de fiche adhérent que nécessaire :Code://ADHERENTS
var NewPage = getTemplate(“ADHERENT”);
var TotalAdherents = this.getField(“NOMBRE_ADHERENTS”).value;if (TotalAdherents >= 0) {
for (var i =0; i < TotalAdherents; i++) {
NewPage.spawn(numPages,true,false);
}
}De base, ca fonctionne.
Mais 2 points me posent encore un petit soucis.1 : les pages ajoutées s’ajoutent à la fin de mon PDF.
Or, cela doit s’ajouter après la page 1.
J’imagine que cela se joue avec “numPages”, mais je ne pige pas très bien le principe avec true, false2 : Si au départ, j’ai choisir 2 adhérents, cela m’ajoute 2 fiches : OK
Mais si finalement je veux mettre 3, cela m’ajoute +3 fiches.
Je m’en retrouve donc avec 5 !
Arf… je ne trouve pas comment détecter le nombre de fiche déjà “spawner” pour ne créer que les supplémentaires, et par reprendre à 0.Et effet inverse.
Si j’avais choisi 3, cela me créé 3 fiches.
Mais si je change à 2, cela me rajoute 2 fiches.
Donc au total 5 fiches.
Alors que l’idéal serait de détecter le nombre déjà de fiches déjà “spawner” pour supprimer celle(s) en trop.Bref… dans les 2 cas, c’est une détection de nombre total de fiche déjà présentes.
psykolivierMembreSeulement, je n’ai pas encore trouvé où nommer mes pages-templates. Je n’ai pas cette option dans mes outils.
Pour ce point c’est trouvé !
Bien cachéDans le tout petit icône “Afficher ou masquer les panneaux”.
Et activer “Traitement du document”J’avais jamais autant trifouiller dans Acrobat
Bon reste à faire la suite…
psykolivierMembreJ’avance dans ma recherche…
A priori, il faut pouvoir nommer les pages pour pouvoir les identifier en template (un simple “Page 2” ne semble pas convenir).
Et ensuite, utiliser “spawn” pour dupliquer la page.Par exemple :
var MyTemplate;
MyTemplate = this.getTemplate(“AssoAdhesion”);
MyTemplate.spawn (this.pageNums);Seulement, je n’ai pas encore trouvé où nommer mes pages-templates. Je n’ai pas cette option dans mes outils.
Et je ne comprends pas trop l’intérêt de “pageNums”
psykolivierMembreArf OK.
Bon d’un côté ca me rassure, j’ai tellement trifouillé du script sans réussirJ’ai cru comprendre qu’il était possible de “cacher” des pages.
Autrement-dit, il serait possible d’avoir la même page 4 fois, toute cacher.
Et grâce au choix du menu déroulant, les rendre visibles… je vais testouillé vers cette piste.psykolivierMembreLa conception du formulaire est faites avec Acrobat Pro oui.
Mais la consultation sera faire avec Acrobat Reader dans la très grande majorité des cas je pense.
C’est là que ça coince ?psykolivierMembreAaaaah OK
Merci Merlin.Ca va m’être pratique cette option.
Mais cela manque quand même d’une gestion de texte un peu plus élaboré dans Acrobat Pro.psykolivierMembreMerci Merlin !
Effectivement, trop facile maintenant
-
AuteurRéponses