abracadabraPDF › Forums › PDF – Général › Convertir/exporter les données du formulaire PDF vers CSV
- Ce sujet est vide.
-
CréateurSujet
-
14 février 2019 à 09:55 #46013
iRaJaaa
MembreBonjour,
Suite à la consultation de nombreux sujets présents dans ce forum, j’ai réussi à construire un formulaire PDF selon mes besoins, merci à tous.
Cependant, j’ai un besoin que je n’arrive pas réellement à résoudre. En effet, je souhaite « convertir/exporter » mes données vers un autre format (CSV). Il n’y a aucun problème, j’arrive à le faire de manière manuelle (grâce aux actions dans les menus), et également grâce à un bouton, où j’implémente un script Javascript que j’ai récupéré sur ce forum.
Mon besoin étant, que je ne souhaite pas passer par un bouton dans le formulaire pour convertir, mais par un script (de manière générale), qui puisse réaliser la même action. L’idée ensuite est de pouvoir appliquer ce script à des formulaires PDF qui seront complétés dans le temps, afin de traiter les données sous un format adapté.
Bonne journée!
-
CréateurSujet
-
AuteurRéponses
-
6 mars 2019 à 13:06 #65321
Merlin
Maître des clésEst-il possible que je t’explique le contexte d’utilisation par mail
8 mars 2019 à 08:31 #65322iRaJaaa
MembreJe t’ai envoyé un mail afin de bien expliquer le contexte de mon besoin.
8 mars 2019 à 12:30 #65323Merlin
Maître des clésPour l’heure je n’ai toujours rien reçu.
?8 mars 2019 à 14:37 #65324iRaJaaa
MembreJe viens de revérifier ton adresse mail, et sauf erreur de ma part, je t’ai bien envoyé un mail Mercredi soir.
8 mars 2019 à 18:15 #65325Merlin
Maître des clésSoit il y a du cafouillage, soit il y a des pièces jointes trop lourdes… :Euuuh:
Quoi qu’il en soit, garde le même nom, remplace la fin de l’adresse par @laposte.net et renvoie le moi STP.
Ça finira bien par passer.
:priere:11 mars 2019 à 09:15 #65326iRaJaaa
MembreOn va bien y arriver!
Je t’ai envoyé un mail Samedi sur ta nouvelle adresse. Si tu n’as rien reçu encore une fois, je t’invite à m’envoyer directement un mail à mon adresse mail que tu trouveras sur mon profil.
Il n’y aucune pièce jointe dans mon mail.
11 mars 2019 à 11:45 #65327Merlin
Maître des clésOK, j’ai retrouvé tes emails bien rangés tout au fond de la boite à spams (mais quelle idée aussi d’utiliser hotmail… :Smiley03: )
Et je crois que j’ai compris.
C’est quand le client renvoie le formulaire PDF par email que le processus n’est pas bon. Dans ton cas, l’utilisation de la fonction « submit » (envoi direct des données au serveur) n’aurait que des avantages :
– sécurité des données transmises (alors qu’aucune protection n’est vraiment possible par email),
– sécurité du transfert (pas d’email « perdu » en route),
– récupération et injection directe des données ainsi recueillies dans « l’outil »,
– confirmation instantanée de bonne réception à l’utilisateur.Voir :
– https://acrobatusers.com/tutorials/print/submitting-data
– https://acrobatusers.com/tutorials/form-submit-e-mail-demystified
– https://answers.acrobatusers.com/Submit-and-gDrive-q152400.aspx?tc=8832509113003201479400#postComments152406:Smiley15:
11 mars 2019 à 12:58 #65328iRaJaaa
MembreHeureux que mes mails sont bien arrivé ahah.
Merci d’avoir pris le temps de lire le mail. Cependant, tu ne réponds pas à la problématique principale, qui est de pouvoir importer les données d’un fichier CSV joint à mon formulaire PDF, afin de compléter certains champs de mon formulaire avant de l’envoyer au client.
J’ai pris le temps de lire la fonction « submit », cependant je ne pense pas que cela soit compatible (ou pas aussi simple) pour « récupération et injection directe des données ainsi recueillies dans « l’outil ».
Mon formulaire PDF ne contiendra aucun bouton (de validation, d’envoi, etc.)
11 mars 2019 à 13:23 #65329bebarth
Maître des clésbonjour,
Cependant, tu ne réponds pas à la problématique principale, qui est de pouvoir importer les données d’un fichier CSV joint à mon formulaire PDF, afin de compléter certains champs de mon formulaire avant de l’envoyer au client.
Je n’ai pas suivi ce post depuis le début, mais pour ce point n’est-il pas possible d’utiliser plutôt un fichiet .txt et d’adapter le script de ce post ?
https://abracadabrapdf.net/forum/index.php/topic,3498.msg20950.html#msg20950
@+
:bonjour:11 mars 2019 à 14:03 #65330iRaJaaa
MembreMerci pour ton intervention.
En effet, j’ai déjà regardé cette discussion, mais je n’arrive pas à faire fonctionner le bout de script qui est important pour moi. C’est la raison pour laquelle je me tourne vers vous.En effet, je pense que ces trois lignes de codes devraient pouvoir remplir les champs de mon formulaire à l’aide du fichier joint :
var p = this.getDataObject(this.dataObjects[0].name)
// importer le contenu de la pièce jointe
var fi = this.getDataObjectContents(p.name)
var fit = util.stringFromStream(fi)11 mars 2019 à 14:28 #65331bebarth
Maître des clésSi tu peux me faire parvenir ton/tes fichiers(s), je pourrai regarder demain matin !
@+
:bonjour:11 mars 2019 à 14:32 #65332iRaJaaa
MembreAs-tu une adresse mail afin que je t’explique, comme pour Merlin, le contexte, et par la même occasion joindre les fichiers ?
11 mars 2019 à 15:01 #65333bebarth
Maître des clés…si tu cliques sur mon pseudo, tu devrais la trouver !!!
@+
:bonjour:11 mars 2019 à 23:00 #65334Merlin
Maître des clésMerci d’avoir pris le temps de lire le mail. Cependant, tu ne réponds pas à la problématique principale, qui est de pouvoir importer les données d’un fichier CSV joint à mon formulaire PDF, afin de compléter certains champs de mon formulaire avant de l’envoyer au client.
Extrait de ton email :
« …l’idée c’est de pouvoir envoyé par mail, le formulaire PDF avec les champs obligatoires qui ont été complété précédemment.
D’où l’intérêt d’avoir une étape « d’export » des données.
En effet, je suis capable d’exporter les données précises des champs qui m’intéresse de l’outil en un fichier CSV. De plus, afin de les importer dans les champs de mon formulaire PDF, la solution que j’ai trouvé (pour que ça automatique), c’est d’attacher ce fichier CSV à mon formulaire, pour ainsi remplir les champs avec du JavaScript.
Une fois envoyé par mail, le client rempli, il nous le renvoie par mail……J’ai déjà réalisé l’aspect Import qui fonctionne parfaitement, avec les différentes étapes, à l’aide d’un script Bash…«
Tu dis que tu as trouvé une solution, et ensuite tu dis que tu n’en as pas…
Comprend que j’aie un peu de mal à te suivre. :geek:12 mars 2019 à 08:49 #65335iRaJaaa
MembreLorsque que j’indique « l’aspect Import qui fonctionne », il s’agit de l’import des données de mon PDF vers mon outil, et non l’import des données du fichier CSV (attaché en pièce jointe) vers le formulaire PDF
12 mars 2019 à 10:37 #65336bebarth
Maître des clésbonjour,
Si j’ai bien compris, le fichier csv ne comprend qu’une seule ligne à chaque fois, correct ?
Voici donc un exemple qu’il faudra certainement adapter en fonction du nom des champs à remplir.
…après, je ne sais pas si le script doit importer le fichier csv, le supprimer après remplissage des champs, enregistrer le fichier sous un nom (lequel), etc.
@+
:bonjour:12 mars 2019 à 12:15 #65337iRaJaaa
MembreMerci pour ton exemple. Mon fichier CSV comprends deux lignes, une correspondant aux noms des champs, la deuxième pour la valeur de celles-ci. Dans ton cas les champs se suivent, mais supposons que c’est le premier champs, le 5e, et le dernier qui nous intéresse etc.
Je pensais attaché le fichier CSV avec un outil linux « pdftk » grâce à l’option attach_files. En effet, il serait intéressant de le supprimer (le fichier CSV) une fois remplis et pourquoi pas l’enregistré quelque part sous un autre nom.
12 mars 2019 à 13:53 #65338bebarth
Maître des clésVoici un nouvel exemple pour un fichier csv avec 2 lignes et qui est supprimé après importation des données.
Si tu utilises l’action (uniquement si), tu peux en plus enregistré le fichier complété sous un nouveau nom : nomFichier (Nom Prenom).pdf
@+
:bonjour:12 mars 2019 à 14:07 #65339bebarth
Maître des clésJe n’avais pas vu que tu m’avais envoyé un fichier teste sur ma boite mail.
J’ai essayé et ça fonctionne mais il va falloir modifier le nom de certains champs pour ne pas avoir de caractères accentués ni de caractères spéciaux (et je crois pas d’espace… en tout cas moi je n’en mets jamais !).
…et bien sûr indiquer le nom correct du fichier .csv dans le script.
@+
:bonjour:12 mars 2019 à 14:44 #65340iRaJaaa
MembreJ’ai essayé dans le cadre de mes documents et cela fonctionne (également dans le cadre de liste à puces (je n’ai pas essayé avec les mère/fille)). Cependant, comme tu as pu le voir, cela ne fonctionne pas avec les caractères spéciaux tels que les espaces, accents, etc.
En effet, je ne peux pas changer le nom de mes champs car ce sont les mêmes champs que l’on retrouve dans mon outil, et pour une histoire de compatibilité, je me dois de faire coïncider les champs pour pouvoir exporter/importer « facilement ».
Avez vous une solution qui permet de contourner cela ?
12 mars 2019 à 17:43 #65341bebarth
Maître des clésSi les infos du fichier csv sont toujours identiques, on peut ignorer la première ligne :
Code:var laLigne1= lesLignes[0].split(« ; »);et la remplacer par une table avec les noms corrects des champs renommés dans le pdf, par exemple :
Code:var laLigne1= [« Client », »Description », »Reference », »Titre », »Site »];@+
:bonjour:12 mars 2019 à 17:45 #65342Merlin
Maître des clésLorsque que j’indique « l’aspect Import qui fonctionne », il s’agit de l’import des données de mon PDF vers mon outil…
Oui, du coup j’ai compris mais reconnait que ton explication est un peu confuse. :oh:
Avez vous une solution qui permet de contourner cela ?
Il faut que le fichier CSV soit encodé en Unicode UTF-8.
L’encodage Windows et l’encodage MacOS ne sont pas supportés par Acrobat.13 mars 2019 à 08:24 #65343bebarth
Maître des clésbonjour,
Voici un script pour une action adaptée spécialement pour ton fichier avec les champs renommés (je ne savais pas si je pouvais poster ton fichier).Code:var Chemin=this.path;
var donneesCSV=this.getDataObjectContents(« test.csv »);
var lesDonnees=util.stringFromStream(donneesCSV);
var lesLignes=lesDonnees.split(« r »);
var laLigne1=[« Client », »Description », »Reference », »Titre », »Site »];
var laLigne2=lesLignes[1].split(« ; »);
for (var i=0; ivar n=laLigne2.charCodeAt(0);
if (n==10) laLigne2=laLigne2.substring(1); // Spécialement pour fichier csv fourni ???
this.getField(laLigne1).value=laLigne2;
}
this.removeDataObject(« test.csv »);
this.saveAs(Chemin.substring(0,Chemin.length-4)+ » (« +this.getField(« Client »).value+ »).pdf »);@+
:bonjour:13 mars 2019 à 09:50 #65344iRaJaaa
MembreOui en effet mon explication n’est pas forcément clair Merlin, désolé ahah
bebarth, les éléments de script que tu m’a fourni fonctionne, merci.Cependant, j’ai réalisé le test et pour le champ « Référence » cela fonctionne (même avec les accents) y compris si l’on inclue des « espaces » dans les champs. Cependant, pour ce caractère spéciaux « -> », cela ne fonctionne plus. Avez-vous une solution de contournement ?
13 mars 2019 à 11:13 #65345bebarth
Maître des clésJe comprends que tu ne puisses pas renommer les noms de champs de l’application web, mais pourquoi ne pas renommer les champs du formulaire ???
Ensuite si le nom du champ récupéré commence par « Site de l’incident » tu renvoies vers le nom de champ « Site » par exemple !
@+
:bonjour: -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.