Donnez vie à vos documents numériques !
 

Convertir/exporter les données du formulaire PDF vers CSV

abracadabraPDF Forums PDF – Général Convertir/exporter les données du formulaire PDF vers CSV

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46013
    iRaJaaa
    Membre

    Bonjour,

    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!

Affichage de 25 réponses de 26 à 50 (sur un total de 66)
  • Auteur
    Réponses
  • #65321
    Merlin
    Maître des clés

    Est-il possible que je t’explique le contexte d’utilisation par mail

    OK
    ==> https://www.abracadabrapdf.net/contact/

    #65322
    iRaJaaa
    Membre

    Je t’ai envoyé un mail afin de bien expliquer le contexte de mon besoin.

    #65323
    Merlin
    Maître des clés

    Pour l’heure je n’ai toujours rien reçu.
    ?

    #65324
    iRaJaaa
    Membre

    Je viens de revérifier ton adresse mail, et sauf erreur de ma part, je t’ai bien envoyé un mail Mercredi soir.

    #65325
    Merlin
    Maître des clés

    Soit 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:

    #65326
    iRaJaaa
    Membre

    On 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.

    #65327
    Merlin
    Maître des clés

    OK, 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:

    #65328
    iRaJaaa
    Membre

    Heureux 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.)

    #65329
    bebarth
    Maître des clés

    bonjour,

    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:

    #65330
    iRaJaaa
    Membre

    Merci 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)

    #65331
    bebarth
    Maître des clés

    Si tu peux me faire parvenir ton/tes fichiers(s), je pourrai regarder demain matin !
    @+
    :bonjour:

    #65332
    iRaJaaa
    Membre

    As-tu une adresse mail afin que je t’explique, comme pour Merlin, le contexte, et par la même occasion joindre les fichiers ?

    #65333
    bebarth
    Maître des clés

    …si tu cliques sur mon pseudo, tu devrais la trouver !!!
    @+
    :bonjour:

    #65334
    Merlin
    Maître des clés

    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.

    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:

    #65335
    iRaJaaa
    Membre

    Lorsque 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

    #65336
    bebarth
    Maître des clés

    bonjour,
    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:

    #65337
    iRaJaaa
    Membre

    Merci 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.

    #65338
    bebarth
    Maître des clés

    Voici 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:

    #65339
    bebarth
    Maître des clés

    Je 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:

    #65340
    iRaJaaa
    Membre

    J’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 ?

    #65341
    bebarth
    Maître des clés

    Si 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:

    #65342
    Merlin
    Maître des clés

    Lorsque 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.

    #65343
    bebarth
    Maître des clés

    bonjour,
    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; i    var 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:

    #65344
    iRaJaaa
    Membre

    Oui 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 ?

    #65345
    bebarth
    Maître des clés

    Je 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:

Affichage de 25 réponses de 26 à 50 (sur un total de 66)
  • Vous devez être connecté pour répondre à ce sujet.