abracadabraPDF › Forums › PDF – Général › Formulaire PDF – format des champs lors d’un import de données
- Ce sujet est vide.
-
CréateurSujet
-
3 novembre 2016 à 12:20 #45519YannMembre
Bonjour,
Tout nouveau sur le forum et novice en JavaScript, j’aimerais votre aide pour un problème dont je n’ai pas trouvé la solution dans les différents sujets.
J’ai créé un formulaire PDF (j’utilise Adobe Acrobat Pro XI) à partir d’un fichier PDF existant à imprimer et à compléter à la main (voir 1er fichier joint). J’ai simplement ajouté des champs par dessus les zones en pointillés ou les cases (voir 2e fichier joint).Le remplissage des champs que j’ai créés se fait à partir des données d’un fichier .FDF en faisant “Importer des données…” et en sélectionnant le fichier FDF approprié. Lorsque j’importe les données, le format d’arrivée est le format d’origine du fichier FDF et n’est donc pas ajusté à la trame (voir 3e fichier joint avec exemple du numéro de téléphone).
Je voudrais, avec un script au bon endroit, soit au moment de l’import (idéalement), soit juste après (peut-être avec un bouton), que le format, par exemple du numéro de téléphone, puisse entrer dans les cases de la trame. Pour cela, les chiffres doivent prendre la forme “9 9 9 9 9 9 9 9 9 9”
En mettant “9 9 9 9 9 9 9 9 9 9” dans “Format > Spécial > Masque arbitraire”, au moment de l’import des données il renvoie un message d’erreur en disant que “La valeur indiquée ne correspond pas au format du champ”, ce qui est normal.Donc ma question est : quel script mettre et où pour que le format s’adapte lors de l’import, ou (si pas possible), comment mettre un bouton avec le bon script au bon endroit pour que tous les formats à changer s’adaptent lorsque je clique sur ce bouton ?
En effet, là j’ai donné l’exemple du numéro de téléphone, mais j’ai le même souci avec la date de naissance qui arrive au format “dd/mm/yyyy” et que je dois avoir au format “d d m m y y y y” (donc prévoir la suppression du symbole “/”.
Merci d’avance pour votre aide.
-
CréateurSujet
-
AuteurRéponses
-
3 novembre 2016 à 12:44 #61545MerlinMaître des clés
Bonjour et bienvenue.
Changer ainsi les formats de plusieurs champs lors de l’importation est possible mais ça requiert de bonnes connaissances en JavaScript et en manipulation de données.
Donc je crois que la vraie première bonne question à se poser c’est de savoir s’il ne serait pas plus simple d’importer des fichiers FDF correctement formatés ?
Parce-que c’est très facile à refaire, même si tout dépend de la quantité…3 novembre 2016 à 13:15 #61546YannMembreMerci pour ce retour.
Le fichier FDF est créé à partir d’un autre formulaire PDF (en faisant “exporter les données”).
Mais j’ai la sensation que modifier les formats dans le fichier FDF requiert les mêmes manipulations que celles qui m’intéressent, non?J’aurai à chaque fois un fichier PDF différent (même format) duquel je vais extraire les données dans un FDF (qui aura donc le même format), et duquel je vais importer les données dans différents autres formulaires PDF différents, dont celui que j’ai montré.
Une piste? Si trop complexe je ferai manuellement.
3 novembre 2016 à 14:54 #61547MerlinMaître des clésLe fichier FDF est créé à partir d’un autre formulaire PDF (en faisant “exporter les données”).
…
J’aurai à chaque fois un fichier PDF différent (même format) duquel je vais extraire les données:Euuuh:
Combien de formulaires différents servent à générer les FDF ?
As-tu la main dessus et la possibilité de les modifier ?
Parce-qu’a priori le plus simple c’est de formater les champs dans un formulaire “de base” et ensuite de les copier-coller dans les autres formulaires. Quitte à les réajuster et à les redimensionner au besoin.4 novembre 2016 à 07:38 #61548YannMembreLes formulaires de base qui servent à générer les FDF ont tous le même format d’origine et la même configuration (juste pas le même contenu ni le même nom) et j’ai effectivement la main dessus pour faire ce que je veux de ce formulaire (du moment que c’est automatisé). Mais évidemment chaque formulaire PDF de base qui est généré (export automatique d’un logiciel) a le format de base.
Ce que je ne comprends pas c’est la différence entre modifier le format du formulaire PDF de base et modifier le format du formulaire final après l’import. En gros c’est comme si le formulaire final devenait un formulaire de base.
Mais je suis preneur, c’est ce qui m’intéresse, je veux modifier les formats des différents champs de façon automatique (même si cela demande plusieurs manipulations).
4 novembre 2016 à 09:47 #61549MerlinMaître des clésJe crois qu’on ne parle pas le même langage. :doute:
Pour moi il ne peut y avoir qu’un seul formulaire de base : c’est celui qui contient les champs de formulaire qui seront ensuite copiés-collés à l’identique dans les autres formulaires.
Ce que je ne comprends pas c’est la différence entre modifier le format du formulaire PDF de base et modifier le format du formulaire final après l’import.
Une fois que tous les formulaires auront des champs identiques il n’y aura plus besoin de modifier quoi que soit lors de l’importation d’un formulaire à l’autre puisque les données auront par conséquent elles aussi le même format.
C’est de loin la méthode la plus simple et la plus facile pour exporter-importer des données, sans se prendre la tête avec des conversions multiples et des kilomètres de JavaScript lors de l’importation.
:Smiley15:
4 novembre 2016 à 09:52 #61550YannMembreOk. Et comment je fais pour modifier le format dans le formulaire d’origine? Par exemple pour le champ numéro de téléphone?
4 novembre 2016 à 10:49 #61551MerlinMaître des clés– À partir de n’importe lequel des formulaires il faut faire un enregistrer-sous et nommer le nouveau formulaire : Ma-bibliotheque-de-champs.pdf (par exemple).
– Dans ce formulaire il faut formater tous les champs comme ils doivent l’être au final, en les paramétrant correctement dans l’onglet Format des Propriétés du champ.
– Ensuite il faut ouvrir tous les formulaires un par un, y supprimer les champs existants et les remplacer par ceux de Ma-bibliotheque-de-champs.pdf (copier-coller). (D’où ma question sur la quantité de formulaires à gérer…)
– Les paramètres de l’onglet Apparence des Propriétés du champ (police, couleur, contour…) peuvent être modifiés pour adapter chaque champ à chaque formulaire, ça n’a pas d’incidence sur le format des données échangées.
4 novembre 2016 à 11:45 #61552YannMembre– À partir de n’importe lequel des formulaires il faut faire un enregistrer-sous et nommer le nouveau formulaire : Ma-bibliotheque-de-champs.pdf (par exemple).
– Dans ce formulaire il faut formater tous les champs comme ils doivent l’être au final, en les paramétrant correctement dans l’onglet Format des Propriétés du champ.
Je dois mal me faire comprendre. J’ai un logiciel de CRM dans lequel j’ai entré tout un tas de données sur des clients, plusieurs dizaines de clients, et je ne peux pas modifier le formalisme dans ce logiciel.
J’ai la possibilité, pour chaque client, d’exporter depuis le logiciel toutes ses données dans un formulaire pdf modifiable, que j’appelle, le formulaire pdf de base et dont le texte des champs a le format des données du logiciel (donc numéro de tel sous la forme XX XX XX XX XX, et date de naissance sous la forme dd/mm/yyyy, etc.).Par ailleurs, j’ai des documents pdf différents (disons une dizaine), qui ne sont pas des formulaires (et que je n’ai pas le droit de recréer de toute pièce comme ça m’arrange), et que je devais, jusqu’à présent, imprimer et compléter au stylo (voir 1er fichier joint de mon message initial). Au lieu d’écrire à la main, j’ai mis, par dessus la trame existante, des champs de formulaire pour pouvoir entrer les données directement au clavier, mais c’est fastidieux (voir 2ème fichier joint dans mon message d’origine). Appelons ces formulaires des bulletins.
Donc j’ai pensé à importer directement les données du formulaire pdf de base, dans ces champs des bulletins. Je fais ça pour ne pas avoir à taper au clavier, pour chaque client et dans différents bulletins par client, alors que beaucoup d’informations (état civil, adresse, mobile,…) sont identiques.
Pour importer les données du formulaire de base vers le bulletin pour un client, j’ai nommé les champs du bulletin avec le même nom que les champs du formulaire de base. Pour importer les données, il faut le faire depuis un fichier FDF, d’où le fait, depuis le formulaire de base, d’exporter vers un fichier FDF.
Donc depuis le bulletin je fais “importer des données” et et je sélectionne le fichier FDF que j’ai créé à partir du formulaire de base.Le problème est que, les formats de certains champs (du formulaire de base, du fichier FDF) ne collent pas à la trame du bulletin (voir 3ème fichier joint).
Mais pour chaque client dans le logiciel, je vais exporter ses données dans un formulaire de base, mais qui n’est pas le même fichier que pour un autre client par définition (et je ne peux pas choisir le nom du fichier pour éventuellement écraser les anciennes données d’un autre client avec les nouvelles en conservant le format).
Donc ce que tu me demandes dans ton étape 2, ne me permet pas d’automatiser le process. En gros tu me dis, pour chacun de mes clients, je dois modifier à la main le format du champ pour que ça colle au bulletin. Dans ce cas, autant taper les données directement à la main dans le bulletin, dont le champ aura le bon format, et c’est ce que je veux éviter.
4 novembre 2016 à 12:17 #61553MerlinMaître des clésJe dois mal me faire comprendre.
Effectivement, quand tu expliques la problématique depuis le départ je comprend mieux. :geek:
Dans ce cas il n’y a pas d’autre choix que de convertir les formats de données lors de leur importation, mais j’espère que le format d’arrivée est le même dans tous les bulletins…
4 novembre 2016 à 12:33 #61554YannMembremais j’espère que le format d’arrivée est le même dans tous les bulletins…
Euh…lol…pas tous :jerisjaune:, mais je peux me contenter de ceux pour lesquels le format est identique et qui correspondent à la demande initiale.
Peut-être qu’une solution “simple” serait de séparer la chaine de caractère au niveau de chaque caractère, et de reconstruire le format final en alignant les caractères avec le bon format (le bon nombre d’espaces aux bons endroits). J’ai cru voir des scripts avec (de mémoire) chaque caractère de la chaine qui était identifiable avec un numéro.J’essaie d’illustrer mon propos :
J’ai la chaine de caractères “doremifasol” du champ “notes”, je sépare chaque caractère, donc notes(0), notes(1), notes(2), qui correspondrait à “d”, “o”, “r” etc.
Et ensuite, je les aligne (je ne connais pas la syntaxe) du genre notes(0)[espace espace]notes(1)[espace espace espace espace]notes(2) etc..4 novembre 2016 à 12:38 #61555YannMembreOu alors, dans le bulletin je crée un champ de formulaire par caractère (et bien positionné pour que ça corresponde à la trame de mon bulletin), et je mets un script qui va sélectionner et importer uniquement le 1er caractère de la chaine dans le 1er champ, le 2ème caractère de la chaine dans le 2ème champ, etc..
En gros il me faudrait un exemple de syntaxe, et surtout savoir où le mettre (dans l’onglet format personnalisé par exemple), et ensuite je pourrai peut-être adapter.
Mais peut-être que le faire au moment de l’import complexifie largement le travail, et dans ce cas, je peux importer dans le bulletin sous le mauvais format (comme ça, c’est fait). Ensuite j’ai des boutons (discrets, voire invisibles si on ne sait pas où les chercher), et quand je clique sur le bouton ça fait la manipulation sur les caractères comme j’ai expliqué avant.4 novembre 2016 à 13:05 #61556MerlinMaître des clésOu alors, dans le bulletin je crée un champ de formulaire par caractère (et bien positionné pour que ça corresponde à la trame de mon bulletin),
Le mieux est d’oublier ça tout de suite. :tutut:
En gros il me faudrait un exemple de syntaxe, et surtout savoir où le mettre
On va te trouver ça, mais d’abord il faudrait que tu postes une maquette avec les champs aux formats de départ (de base) et avec les champs aux formats d’arrivée bulletin).
Parce-que sans ça on ne peut rien faire.Mais peut-être que le faire au moment de l’import complexifie largement le travail, et dans ce cas, je peux importer dans le bulletin sous le mauvais format (comme ça, c’est fait). Ensuite j’ai des boutons (discrets, voire invisibles si on ne sait pas où les chercher), et quand je clique sur le bouton ça fait la manipulation sur les caractères comme j’ai expliqué avant.
Que dirais tu d’une simple Action, à exécuter d’un clic depuis le panneau Actions d’Acrobat (ou depuis la barre d’icônes “Outils rapides”) ?
4 novembre 2016 à 16:52 #61557YannMembreOn va te trouver ça, mais d’abord il faudrait que tu postes une maquette avec les champs aux formats de départ (de base) et avec les champs aux formats d’arrivée bulletin).
Parce-que sans ça on ne peut rien faire.J’ai joint le formulaire de base, le fichier FDF (si nécessaire), et le bulletin (j’ai ajusté les chiffres à la main pour montrer ce que je veux obtenir, mais après l’import ils ont le même format que le fichier d’origine, et si je modifie le format d’arrivée dans les propriétés du bulletin, l’import ne se fait pas).
Que dirais tu d’une simple Action, à exécuter d’un clic depuis le panneau Actions d’Acrobat (ou depuis la barre d’icônes “Outils rapides”) ?
Oui ça me va parfaitement.
Merci pour ton aide.
5 novembre 2016 à 13:59 #61558MerlinMaître des clésJ’ai une bonne nouvelle : en fait je crois que les conversions sont inutiles…
Il me semble que tu étais passé à coté d’une option importante, celle qui permet de “tirer” la chaine de caractères bord à bord à l’intérieur d’un champ texte : l’option Bande de n caractères.Regarde dans le PDF ci-joint, aucune conversion n’a été effectuée, j’ai juste adapté les peignes et les champs.
Est-ce que c’est OK ?6 novembre 2016 à 00:05 #61559YannMembreOui c’est pas mal, c’est une solution possible sans script.
Avant de voir ton dernier message, j’avais un peu bossé aussi dessus et j’ai réussi à le faire avec un script très “artisanal” qui fonctionne en simultané avec l’import. J’ai mis le script dans l’onglet Calcul des Propriétés de champ -> Script personnalisé, et j’ai mis les champs en lecture seule parce que si on s’amuse à cliquer dessus et à les désactiver ensuite je crois que le script s’applique de nouveau et ça change tout (voir modèle joint).
Voici la forme des scripts que j’ai mis :var A = this.getField(“mobile”).valueAsString;
var B = A.charAt(0) + ” ” + ” ” + A.charAt(1) + ” ” + ” ” + ” ” + ” ” + A.charAt(3) + ” ” + ” ” + A.charAt(4) + ” ” + ” ” + ” ” + ” ” + A.charAt(6) + ” ” + ” ” + A.charAt(7) + ” ” + ” ” + ” ” + ” ” + A.charAt(9) + ” ” + ” ” + A.charAt(10) + ” ” + ” ” + ” ” + A.charAt(12) + ” ” + ” ” + A.charAt(13);
event.target.value = B;Du coup, 2 solutions au même problème, c’est vraiment cool.
Je te remercie pour ton aide.
6 novembre 2016 à 09:53 #61560YannMembreAh ben non, fausse joie.
Dès qu’un autre champ du formulaire est activé, les scripts s’appliquent à nouveau et la mise en forme s’applique au format qui avait déjà été ajusté.Une idée?
6 novembre 2016 à 10:19 #61561MerlinMaître des clésvar A = this.getField(“mobile”).valueAsString;
var B = A.charAt(0) + ” ” + ” ” + A.charAt(1) + ” ” + ” ” + ” ” + ” ” + A.charAt(3) + ” ” + ” ” + A.charAt(4) + ” ” + ” ” + ” ” + ” ” + A.charAt(6) + ” ” + ” ” + A.charAt(7) + ” ” + ” ” + ” ” + ” ” + A.charAt(9) + ” ” + ” ” + A.charAt(10) + ” ” + ” ” + ” ” + A.charAt(12) + ” ” + ” ” + A.charAt(13);
event.target.value = B;Du coup, 2 solutions au même problème, c’est vraiment cool.
– Non, non, non. :tutut:
Ce que tu proposes ci-dessus n’est pas une solution, c’est un bricolage.
Ajouter des espaces partout c’est “interdit”, aussi bien en programmation qu’en mise en page.Imagine la tête de celui qui devra récupérer les données ! J’espère qu’il sera chauve, ça lui évitera de s’arracher les cheveux. :Smiley08:
– Si tu comptais quand même l’utiliser, tu devrais placer ton script en script de validation, et non pas en script de calcul.
6 novembre 2016 à 11:08 #61562YannMembre– Si tu comptais quand même l’utiliser, tu devrais placer ton script en script de validation, et non pas en script de calcul.
Le traitement du bulletin c’est impression papier pour signature des clients, donc aucun traitement numérique prévu derrière, d’où le fait que je me contente du bricolage.
ça ne fonctionne pas en script de validation. Aucun conversion n’est faite. Et en plus dans le formulaire complet, lorsque je coche une case par exemple, les scripts s’exécutent à nouveau (avec ou sans script en validation).
6 novembre 2016 à 11:11 #61563MerlinMaître des clésLes scripts de calcul se déclenchent à chaque action de l’utilisateur, contrairement aux scripts de validation.
Voir absolument L’ordre d’exécution des événements dans les champs de formulaire PDF enfin expliqué clairement :
http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/6 novembre 2016 à 11:27 #61564MerlinMaître des clésLe traitement du bulletin c’est impression papier pour signature des clients
Avec mise sous pli, timbrage et envoi par La Poste ?
C’est cher, lent et totalement has-been, pour mémoire nous sommes en 2016. :geek: :Smiley03:
Que ce soit demain ou après-demain, tu risques d’être em**rdé avec tes kilomètres d’espaces le jour où le processus passera en signature numérique.Aujourd’hui c’est devenu simple : on envoie le PDF par email et le destinataire a juste à cliquer dans le champ “Signature”. Il n’a pas besoin d’avoir Acrobat ni Acrobat Reader ni rien de spécial : un navigateur web suffit.
Le destinataire n’a pas non plus d’inscription ni de formulaire long et chiant à remplir préalablement, ça se fait en un tournemain.Bien entendu tout ceci est parfaitement légal et compatible internationalement (Europe, États-Unis et quasiment tous les pays stables).
==> https://na1.documents.adobe.com/account/home
:idee:6 novembre 2016 à 14:21 #61565YannMembreLes scripts de calcul se déclenchent à chaque action de l’utilisateur, contrairement aux scripts de validation.
Voir absolument L’ordre d’exécution des événements dans les champs de formulaire PDF enfin expliqué clairement :
http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/Ok, je suis bien d’accord, mais le script ne fonctionne tout simplement pas quand il est placé en validation.
6 novembre 2016 à 16:29 #61566MerlinMaître des clésMais euuhhh… Ce n’était pas plus simple d’utiliser les “Bande de” ?
:Euuuh:6 novembre 2016 à 18:42 #61567YannMembreMais euuhhh… Ce n’était pas plus simple d’utiliser les “Bande de” ?
:Euuuh:En théorie oui, mais la réalité me rattrape parce que les changements que tu fais dans l’espacement de la trame (les cases prévues pour les chiffres) doivent s’intégrer dans le document complet et demandent de bouger les autres éléments à côté.
Au final, ça revient à adapter l’architecture du document aux contraintes de programmation, et ce n’était pas l’idée de départ.Mais laisse, j’ai mis un bouton invisible pour effectuer les conversions basées sur mon script, et du coup tant que je ne clique pas dessus à nouveau, la conversion reste conforme même si je clique sur les autres champs.
Oui, c’est du bricolage.
7 novembre 2016 à 10:17 #61568MerlinMaître des clésEffectivement, vu sous cet angle là seule la bricole permet de s’en sortir.
L’essentiel est que ça fonctionne et que tu sois satisfait.
:Smiley15:Mais promet moi de penser aux signatures numériques. :Smiley03:
7 novembre 2016 à 10:29 #61569YannMembreMais promet moi de penser aux signatures numériques. :Smiley03:
Ah mais tu prêches un convaincu sur ce sujet. Mais je n’ai pas d’autres choix que d’aller au rythme de certaines institutions qui n’ont pas franchi le cap psychologique. En gros ce n’est pas moi qui décide si ces institutions acceptent les signatures électroniques ou pas, même si un certain lobbying est en cours.
Ceci étant dit, dans certains domaines, il existe certaines considérations juridiques, voire des vides juridiques qui ne sont pas encore tranchés. Parfois, il est nécessaire d’avoir la certitude absolue que c’est bien la personne en question qui a signé le document (avec conséquence de responsabilité pénale), et avec la signature numérique, actuellement le doute peut subsister sur les possibilités de fraude ou de se faire passer pour quelqu’un.Mais c’est en train de changer à toute vitesse.
7 novembre 2016 à 10:41 #61570MerlinMaître des clésOui, je me doute bien que ça fait beaucoup de vieilles habitudes à bousculer, mais ça va dans le bon sens puisque déjà ils n’utilisent plus de fax… :jerisjaune:
Sinon il faut absolument démentir ceci : “il est nécessaire d’avoir la certitude absolue que c’est bien la personne en question qui a signé le document” (avec conséquences de responsabilité pénale), et avec la signature numérique, actuellement le doute peut subsister sur les possibilités de fraude.
Le seul moyen vraiment blindé juridiquement d’avoir un recours contre la contestation de mauvaise foi c’est de faire signer la personne “en personne” et en présence d’au moins un témoin (de préférence 2).
Qu’il s’agisse de papier ou de numérique n’y change pas grand-chose, la principale différence c’est qu’il est beaucoup plus difficile de contester de mauvaise foi une signature numérique (qui a enregistré l’adresse email, l’adresse IP, la date, l’heure, la localisation, etc., etc.) qu’une signature papier.
:idee:7 novembre 2016 à 10:49 #61571YannMembreLe seul moyen vraiment blindé juridiquement d’avoir un recours contre la contestation de mauvaise foi c’est de faire signer la personne “en personne” et en présence d’au moins un témoin (de préférence 2).
Et c’est exactement ce que je suis tenu de faire, avec vérification de l’identité. J’imprime les bulletins (entre autres documents réglementaires et légaux) et le client signe en ma présence (je suis habilité et ma responsabilité peut être engagée). Les raisons : lutte anti-blanchiment et contre le financement du terrorisme.
Mais c’est en train de changer, sur certains contrats il peut signer, toujours en ma présence, mais numériquement.7 novembre 2016 à 11:31 #61572MerlinMaître des clésMais c’est en train de changer, sur certains contrats il peut signer, toujours en ma présence, mais numériquement.
Comme quoi il ne faut jamais désespérer. :extra:
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.