abracadabraPDF › Forums › PDF – Général › Exporter les champs d’un formulaire vers Excel
- Ce sujet est vide.
-
CréateurSujet
-
17 décembre 2018 à 10:06 #45946jeanrenovParticipant
Bonjour,
Dans le cadre du travail nous utilisons un PDF interactif qui est complété lors de chaque rendez-vous, nous renseignant sur chaque renseignement utile à la suite de notre activité.
Afin d’optimiser cette ressource nous aimerions extraire ces données (si possible celle de notre choix vu le nombre important de champs de formulaires) et les exporter vers un fichier Excel rendant la comparaison plus facile.Cependant je n’ai aucune idée de comment arriver à ce résultat, car pour avoir essayé la fonction de base de PDF qui permet l’exportation, celle-ci consiste juste à faire un copier-coller du document en lui-même, hors j’aimerais récupérer les informations qui correspondent à certains champs du formulaire (si possible pas tous) et pouvoir les trier plus tard sous une forme de tableau/base de données dans Excel.
Merci d’avance
(Je travaille sur Mac) -
CréateurSujet
-
AuteurRéponses
-
17 décembre 2018 à 10:16 #64730MerlinMaître des clés
Bonjour.
Deux dessins valent mieux qu’un long discours.
Au final on obtient un fichier .CSV utilisable avec n’importe quel tableur (Excel, LibreOffice…) ou base de donnée.
:Smiley15:17 décembre 2018 à 10:18 #64731MerlinMaître des clés1.
17 décembre 2018 à 10:18 #64732MerlinMaître des clés2.
17 décembre 2018 à 10:26 #64733jeanrenovParticipantMerci ça répond parfaitement à ma premiere question, cependant comment puis je choisir les champs que je veux garder ? Du fait du nombre (vraiment vraiment) important de champs de formulaire present je devrais travailler avec 808 colonnes une fois le tout extrait, y’a t’il un moyen de réduire en choisissant les champs important?
17 décembre 2018 à 17:44 #64734MerlinMaître des clésIl faudra faire ce nettoyage dans le tableur.
Pour faire le tri avant, depuis Acrobat, il faudrait développer un script JavaScript personnalisé, mais le jeu en vaut il la chandelle ?18 décembre 2018 à 11:35 #64735jeanrenovParticipantLe soucis c’est qu’il y’a tellement de champs de formulaire, bouton etc, que le nombre de colonne dépasse les 255, après n’ayant pas de connaissance dans le développement de script la tache me parait compliqué mais m’aiderai grandement dans l’automatisation de la collecte des données.
Y’a t’il un post sur ce forum ou des tutos facile d’accès de préférence pouvant m’aider à réaliser ce script?18 décembre 2018 à 13:32 #64736bebarthMaître des clésbonjour,
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_getDataObjectContentsbc-43&rhtocid=_6_1_8_23_1_42
A cette adresse, tu trouveras l’exemple qui me semble le plus approprié à ce que tu veux faire.
Tu regardes et tu demandes si tu veux de l’aide…
@+
:bonjour:18 décembre 2018 à 14:13 #64737jeanrenovParticipantOk merci, ça a l’air assez complexe tout de même et je n’aurai pas le temps de voir ça en details aujourd’hui.
Mais pour résumé je dois utiliser la “formule” getdataobjectcontent ?Et en reprenant l’exemple la partie “get the name” reprends tout ce qui est texte et la partie “get budget number” tout ce qui est chiffre? Si oui je listerai mes champs dans cette partie et en indiquant vers quelle feuille de calcul je veux les rediriger en théorie ça fonctionnerai? (Encore une fois je n’ai jamais fais ça donc désolé si ce que je dis semble confus)
Code:// Get the name and department of the current recipient
var champ1 = this.getField(“champ1”).value;
var champ2 = this.getField(“champ2t”).value;
var champ3 = this.getField(“champ3).value;
// Get the budget number
var champ4 = this.getField(“champ4”).value;
if ( app.viewerVersion >= 7 ) {
// Get the file stream object of the embedded file
var oFile = this.getDataObjectContents(“données.xls”);
Etc…18 décembre 2018 à 14:37 #64738bebarthMaître des clésoui, c’est ça !
Mais maintenant il faut intégrer tous les formulaires à ce script, et ça dépend complètement de ce que tu peux/veux faire…
Ou se trouvent les fichiers ? Peut-on les déplacer ?
Comment sont-il nommés ? Peut-on trouver un algorithme pour appeler les fichiers ou doit-on copier/coller les noms quelque part ?
…en découlera la faisabilité et la complexité du script !
@+
:bonjour:18 décembre 2018 à 15:41 #64739jeanrenovParticipantCe sont des fichiers pdf, pour chaque client son fichier pdf, le nommage se fait en fonction du nom mais attribuer un numero ou une date est possible et facilitera peut être le procédé? Ils sont rangés aux meme endroit et le but est qu’une fois par semaine ou mois on puisse récupérer toutes les infos contenues dans ces documents pour les extraire dans une base de données.
19 décembre 2018 à 11:08 #64740bebarthMaître des clésbonjour,
Voici ce que je te propose :
Tu places tes formulaires à traiter dans un même dossier “Formulaires” qui se trouve dans le même répertoire que “Exporter les champs vers Excel_BB.pdf”.
Tu lances ce fichier, tu renseignes les noms de champs à extraire (j’en ai mis jusqu’à dix mais on peut modifier).
Tu copies/colles les noms de fichiers dans le champ approprié (comme tu es sur Mac, ça se fait tout seul… je crois que ce n’est pas possible sur PC sans un utilitaire).Et tu appuies sur le bouton. Toutes les données seront copiées dans le fichier Excel attaché.
Si tu veux une sauvegarde automatique de ce fichier pdf, il faudra passer par une action (fichier .sequ joint) ou ajouter un script d’application si tu veux absolument resté avec le bouton.
Tu testes et tu me dis…
@+
:bonjour:19 décembre 2018 à 12:55 #64741MerlinMaître des clésJ’avais bien pensé à utiliser le “fichier réponse” qu’on peut créer avec Acrobat parce-que ça aurait été plus simple, mais je viens de tester : il ne permet pas de trier ni de supprimer les colonnes avant exportation.
:mur:19 décembre 2018 à 14:49 #64742jeanrenovParticipantTout d’abord, merci beaucoup de l’aide et du travail apporté, c’est vraiment sympa.
Pour la partie technique malheureusement je suis confronté à deux erreurs, peut être proviennent t’il d’une mauvaise manipulation de ma part.
J’ai une erreur qui me dit “au moins un nom de fichier doit être renseigné”, alors que la liste est remplis. Et une autre erreur “le champ “undefined” n’a pas été trouvé. Aucune donnée n’a été importée dans le fichier Excel.” qui elle semble provenir une fois la recherche lancée.Et dernière question si cette méthode fonctionne comment je fais pour augmenter la liste du nombre de champs?19 décembre 2018 à 15:06 #64743bebarthMaître des clésbonjour,
Avec les fichiers exemples?
Peux-tu faire les 2 mêmes copies d’écrans que j’ai faites, juste pour voir.
@+
:bonjour:19 décembre 2018 à 15:30 #64744bebarthMaître des clésJ’ai oublié de préciser, pour que l’on puisse copier les valeurs des champs des formulaires, il faut que les formulaires aient tous un script de document :
Code:this.disclosed = true;C’est obligatoire pour copier d’un document à un autre !
Et dernière question si cette méthode fonctionne comment je fais pour augmenter la liste du nombre de champs?
Pour augmenter le nombre de champs, tu créés des champs supplémentaires nommés champ.10, champ.11, champ.12, etc.
et tu modifies le script :Code:…
for (var i=0; i<=9; i++) {
…
Ici 9 était le numéro du dernier champ. Tu le remplaces par le numéro de ton dernier champ.
@+
:bonjour:19 décembre 2018 à 15:38 #64745bebarthMaître des clésJ’ai une erreur qui me dit “au moins un nom de fichier doit être renseigné”, alors que la liste est remplis. Et une autre erreur “le champ “undefined” n’a pas été trouvé.
C’est parce que j’avais laissé le script d’enregistrement dans le bouton alors qu’il ne peut fonctionner qu’avec une action.
Remplace ce fichier, ça devrait mieux marcher.
Essaye aussi l’action (fichier .sequ) qui fonctionne avec en plus un enregistrement avec la date.
@+
:bonjour:19 décembre 2018 à 15:46 #64746MerlinMaître des clésExcellent !
:bravo:(par-contre je précise pour ceux qui liront ça plus tard que ça ne fonctionne pas avec Acrobat Reader, Acrobat Pro ou Acrobat Standard est requis)
20 décembre 2018 à 09:08 #64747jeanrenovParticipantVraiment excellent, merci beaucoup pour le travail et les explications, t’as pas idée du nombre d’heure que tu viens de me faire économiser !
Dernières questions, la à chaque fois ça crée un fichier excel c’est ça? y’a t’il moyen d’enregistrer ça dans un fichier excel déjà existant à la suite d’autre enregistrement ? (Au pire si c’est pas possible c’est pas grave, tellement le gain de temps engendrer par ta création est énorme, copier coller à la suite me dérange pas vraiment)
Et enfin je comprends pas trop l’intérêt du fichier sequ tu peux m’expliquer ça de façon plus explicite?20 décembre 2018 à 10:12 #64748bebarthMaître des clésbonjour,
y’a t’il moyen d’enregistrer ça dans un fichier excel déjà existant à la suite d’autre enregistrement ?
Pour Enregistrer à la suite du documen Excel, Tu enlèves ces 4 lignes :
Si tu ne veux pas supprimer les lignes, tu places 2 slash en début de ligne (comme avant Initialisation…).Code:…
// Initialisation du fichier Data.xls
for (var j=0; jvar oFile=util.streamFromString(lesDonnees);
this.setDataObjectContents(“Data.xls”, oFile);
…Mais tu n’auras plus les titres des colonnes automatiquement. Tu peux les créer lorsque ton fichier Excel est vierge, ils seront conservés.
Par contre, ce sera toujours le même fichier attaché au document. Si les champs à extraire varient, les colonnes ne seront plus correctes.
Tu peux extraire ce fichier Excel.Et enfin je comprends pas trop l’intérêt du fichier sequ tu peux m’expliquer ça de façon plus explicite?
Si tu double-cliques sur le fichier .sequ, tu vas importer une action dans Acrobat Pro.
Ensuite, au lieu d’appuyer sur le bouton “EXPORTER”, tu lances l’action (outil Assistant d’actions). Ça fait exactement la même chose, et en plus ça t’enregistre ton document sous le nom “Données Formulaires du “+jour+”-“+mois+”-“+annee+”.pdf”
Ce document est enregistré au même niveau que ton document d’origine. Si la prochaine fois tu reparts de ce nouveau document, les données seront enregistrées à la suite du document Excel (à condition de supprimer les 4 lignes) et un nouveau document sera re-créé avec une nouvelle date… A tester !
@+
:bonjour:20 décembre 2018 à 12:29 #64749jeanrenovParticipantbonjour,Pour Enregistrer à la suite du documen Excel, Tu enlèves ces 4 lignes :
Si tu ne veux pas supprimer les lignes, tu places 2 slash en début de ligne (comme avant Initialisation…).Code:…
// Initialisation du fichier Data.xls
for (var j=0; jvar oFile=util.streamFromString(lesDonnees);
this.setDataObjectContents(“Data.xls”, oFile);
…J’ai pas compris la partie “si tu ne veux pas supprimer les lignes”, en fait ce que je veux c’est ajouter a chaque fois au meme fichier (contenant deja une base d’informations) des lignes contenant les données exportés des nouveaux documents, pour qu’a chaque fois que j’ai un nouveau document, je puisse complèter mon fichier excel a l’aide de ton script.
Une autre question (décidément :siffle: ) comment je change le fiichier excel qui répertorie mes données? A chaque fois ça va dans le fichier data je n’arrive pas à exporter les données dans un fichier déjà existant.
20 décembre 2018 à 13:51 #64750bebarthMaître des clésJ’ai pas compris la partie “si tu ne veux pas supprimer les lignes”
Ce sont les lignes du script qu”il faut modifier comme ceci :
Code:…
// Initialisation du fichier Data.xls
// for (var j=0; j// var oFile=util.streamFromString(lesDonnees);
// this.setDataObjectContents(“Data.xls”, oFile);
…ou les supprimer complètement.
Une autre question (décidément :siffle: ) comment je change le fiichier excel qui répertorie mes données? A chaque fois ça va dans le fichier data je n’arrive pas à exporter les données dans un fichier déjà existant.
Regarde les icônes au dessus du fichier, tu peux ouvrir le fichier, l’enregistrer, l’exporter ou le supprimer et en importer un autre !!!
@+
:bonjour:20 décembre 2018 à 14:26 #64751jeanrenovParticipantOui j’ai essayé ça mais ça me dis Au moins un nom de fichier doit être renseigné. Peut être parce que le fichier doit s’appeler data, si oui peut être puis je changer ça quelque part dans le script?
20 décembre 2018 à 15:15 #64752bebarthMaître des clésOui, il faut remplacer 2 fois le nom de fichier Data.xls par le nom de ton fichier Excel.
Attention, ça ne foctionne pas avec l’extension .xlsxCode:…
var oFile=this.getDataObjectContents(“Data.xls”); // <- ICI
var lesDonnees=util.stringFromStream(oFile);
var lesDonnees=lesDonnees+”rn”;
for (var j=0; jvar oFile=util.streamFromString(lesDonnees);
this.setDataObjectContents(“Data.xls”, oFile); // <- ICI
…@+
:bonjour:21 décembre 2018 à 08:12 #64753jeanrenovParticipantAh oui en effet mon fichier était en xlsx, et j’avais pas changé le script.
Encore merci pour l’aide et le travail, logiquement j’ai tout ce qu’il me faut.
Passez de bonnes fêtes!21 décembre 2018 à 08:46 #64754MerlinMaître des clésIl m’a semblé que le fichier XLS incorporé dans l’exemple de bebarth est en réalité un fichier CSV (parce-que LibreOffice l’ouvre comme un CSV).
Me trompe-je ?21 décembre 2018 à 10:02 #64755jeanrenovParticipantUtilisant excel c’est un bien un fichier xls chez moi.
Ah vraiment la dernière question, y’a t’il un moyen d’exporter les données meme si un champs n’est pas remplis? Afin de respecter a chaque fois le meme format d’exportation des donnes pour que ça corresponde aux titres du fichier excel?21 décembre 2018 à 10:05 #64756bebarthMaître des clésbonjour,
Dans mon exemple j’ai créé un fichier sous Excel enregistré au format .xls (j’avais fait un teste au format .xlsx pour vérifier si ça fonctionnait aussi, mais non…).
Peut-être qu’une fois attaché au formulaire, Acrobat le transforme en .csv !!!
@+
:bonjour:21 décembre 2018 à 10:22 #64757MerlinMaître des clésJe crois plutôt que c’est LibreOffice qui est myope.
J’essaierai avec Excel…
:geek:21 décembre 2018 à 11:01 #64758bebarthMaître des clésy’a t’il un moyen d’exporter les données meme si un champs n’est pas remplis? Afin de respecter a chaque fois le meme format d’exportation des donnes pour que ça corresponde aux titres du fichier excel?
Code:for (var j=0; jif (otherDoc.getField(lesChamps[j]).value==””) {
var lesDonnees=lesDonnees+”–t”;
} else {
var lesDonnees=lesDonnees+otherDoc.getField(lesChamps[j]).value+”t”;
}
}@+
:bonjour:10 février 2020 à 10:19 #64759frataxxMembreBonjour,
je rebondis sur ce sujet très intéressant car je souhaiterais reprendre les valeurs de mes radio boutons et j’obtiens la valeur “off” peu importe si ce dernier est coché.
Une idée ? :Euuuh:10 février 2020 à 11:29 #64760bebarthMaître des clésbonjour,
Je pense qu’il faudrait que tu partage ton fichier, car ça ne me parait pas possible…
@+
:bonjour:10 février 2020 à 12:05 #64761frataxxMembreEn fait, j’ai un fichier PDF dans lequel j’ai des valeurs que je reprends(comme le matricule par ex) mais également des radio boutons ici ex Charge, j’ai 4 choix possibles donc 4 boutons appelés respectivement par leur chiffre.
J’essaye de reprendre la valeur du radio bouton sélectionné dans mon tableur, mais je n’y parviens pas, j’obtiens OFF comme dans la capture ci-dessous. :doute:10 février 2020 à 12:31 #64762bebarthMaître des clésSans savoir comment tu procèdes, je ne peux pas te dire !
@+
:bonjour:10 février 2020 à 12:37 #64763frataxxMembreJe procède simplement avec la méthode présentée dans ce topic avec le fichier “exporter les champs vers excel.pdf”
2 mars 2020 à 13:31 #64764frataxxMembreRe, j ai reussi à faire fonctionner mes radios boutons, en revanche je ne parviens pas a traiter plus de 50 fichiers, j’ai beau eplucher le javascript je ne trouve pas…
2 mars 2020 à 15:05 #64765bebarthMaître des clésbonjour,
Peut-être le même souci que pour ce post : https://abracadabrapdf.net/forum/index.php/topic,3165.55.html
“There’s a bug in some versions of Acrobat DC that causes the closeDoc method to not work. Try updating to the latest version available. If that doesn’t work you’ll need to look for a workaround.” https://community.adobe.com/t5/acrobat/you-reached-the-maximum-number-of-files-that-can-be-opened/m-p/10801060?page=1#M232639
Mais sans voir, je ne peux pas te dire !
@+
:bonjour:3 mars 2020 à 13:53 #64766frataxxMembreBonjour,j’utilise comme base ton fichier d’export de pdf vers excel que j’ai interfacé mais cela reviens au meme, en essayer d’exporter 100 fichiers pdf dans mon excel seul 49 le sont, j ai lu tes autres postes et cela ne semble pas ressemble car ici on ne produit pas de pdf comme en publipostage, amoins qu ils ne se ferment pas à l’extraction des données, et qu’ acrobate limit a 50 fichiers?
3 mars 2020 à 14:15 #64767bebarthMaître des clésbonjour,
Toujours la même réponse pour moi !!! Sans voir ton fichier il m’est très difficile de comprendre pourquoi…
Il y a apparemment un bug sur la gestion de la mémoire de certaines versions d’Acrobat qui limite le nombre de fichiers ouverts (comme indiqué dans les liens précédents).
Par contre, il y a peut-être moyen d’écrire le script différemment… va savoir !!!
@+ :bonjour: -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.