abracadabraPDF › Forums › PDF – Général › XML pour remplir un multi-formulaire.
- Ce sujet est vide.
-
CréateurSujet
-
20 novembre 2017 à 15:23 #45751AQUOIBONMembre
Bonjour à tous,
Tout nouveau, je tente de me lancer dans la création de formulaires et leur remplissage depuis un XML, pour des conseils de classe.
Je sais à peu prêt créer un formulaire en PDF (sous Indesign).
J’ai compris comment remplir un (et un seul) formulaire en faisant concorder les noms de champs avec les balises XML…
Là où ça se gâte, c’est que j’aimerais remplir plus d’une trentaine de formulaires (plus de 30 pages d’un seul PDF) identiques, avec un et un seul XML ! Comment baliser ce XML ?Merci à tous pour vos réponses et votre future clémence !
-
CréateurSujet
-
AuteurRéponses
-
20 novembre 2017 à 18:38 #63034MerlinMaître des clés
Bonjour et bienvenue.
Superbe avatar !
Est-il “perso” où l’as tu trouvé dans les galeries du forum ?Pour répondre à ta question : Acrobat n’importe les données qu’aux formats FDF, XFDF et CSV.
Donc il faudrait commencer par une conversion…
Est-ce possible ?21 novembre 2017 à 10:47 #63035AQUOIBONMembreOui, j’ai trouvé cet avatar parmi ceux proposés !
Sinon… Très étonné… Ou me suis-je mal exprimé ?
Dans Acrobat Pro, lorsque j’ai un PDF avec formulaire ouvert, je peux faire : Outils / Formulaires / Autres options de formulaires / Gérer les données de formulaire / Importer des données ! Et là j’ai le choix du type d’import (FDF, XFDF, XML, FormFlow99 et TXT) et je peux importer mon XML… qui rempli mes champs si les noms de balises correspondent aux noms de champs…21 novembre 2017 à 12:28 #63036MerlinMaître des clésOups !
Je me suis concentré sur l’avatar et du coup j’ai écrit n’importe quoi… :geek:Je crois que ce tuto devrait bien t’aider, le principe est le même avec des données en XML : http://khkonsulting.com/2015/10/batch-import-excel-data-into-pdf-forms/
21 novembre 2017 à 14:40 #63037AQUOIBONMembreSuper ! Top !
C’est presque à peu prêt () ce que je cherchais !
Par contre vu que je suis plus qu’une brelle, je vais avoir besoin de détails.
Pour lancer ce script (ou un autre) j’ai over mon fichier PDF, suis allé dans la vignette de ma première page, puis Propriétés de la page et dans la popup j’ai choisi “Actions”.
– Déclencheur : “Ouverture de la page”.
– Action : “Executer un Javascript”, puis “Ajouter”.
Dans la nouvelle Popup je colle mon Javascript genre : “app.alert(“Hello !”);”
Je sauve, je quitte, je réouvre mon PDF… Personne pour me dire bonjour
Y’a que’que chose qui cloche là d’dans !
Help ! Merci21 novembre 2017 à 17:47 #63038MerlinMaître des clésDifficile de répondre sans voir ledit PDF… :joker:
Par-contre ce script serait certainement mieux placé en script de document, voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
22 novembre 2017 à 11:46 #63039AQUOIBONMembreDifficile de répondre sans voir ledit PDF… :joker:
Par-contre ce script serait certainement mieux placé en script de document, voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
Bon…
1) J’ai passé mon script en script de document. et j’ai un “Hello” c’est mieux ! Cool merci !
2) Par contre, impossible d’importer un txt comme l’indique notre ami Karl ! et même plus simplement d’utiliser la fonction “importTextData()” !!
Je joins donc pour ce faire mes fichiers… attention à bien changer le “MonNom” (nom d’utilisateur) et de mettre les fichiers dans un dossier appelé “TEST” sur le bureau !
Merci de m’éclairer (je suis sous Acrobat pro 10.1)23 novembre 2017 à 10:45 #63040AQUOIBONMembreen fait, le débogueur m’indique :
“NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
Doc.importTextData:3:Document-Level:TEST”
Merci de votre aide (je débute) !23 novembre 2017 à 10:56 #63041AQUOIBONMembreTops ! compris, je devrais en faire un script d’application et non de document ! Mais c’est triste, j’aurais aimé lier ce script à un fichier PDF.
23 novembre 2017 à 11:10 #63042MerlinMaître des clésSécurité oblige !
23 novembre 2017 à 13:03 #63043AQUOIBONMembreJ’ai trouvé le dossier “externe” des JavaScripts, dans lequel j’ai mis mon .js
Mais maintenant, comment lancer ce script depuis Acrobat Pro 10.1 ??? Mystère !23 novembre 2017 à 13:21 #63044MerlinMaître des clés1. Il faut emballer tout le script entre deux accolades précédées des caractères magiques qui vont transformer le script en fonction, exemple :
Code:function maSuperFonction() {
// ici on place le script
}2. Depuis n’importe quel champ ou n’importe quel autre script on appelle la fonction avec :
Code:maSuperFonction();Et puis c’est tout !
Attention :
function : mot-clé JavaScript invariable qui doit nécessairement être suivi d’une espace.
maSuperFonction : peut importe le nom tant qu’il est suivi des deux parenthèses et qu’il respecte la syntaxe JS (pas de caractères spéciaux, pas d’espace, pas de mot-clé, ne pas commencer par un chiffre…)23 novembre 2017 à 13:58 #63045AQUOIBONMembreMerci (encore) Merlin.
Mais :
– J’ai mis le script dans Applications/Adob Acrobat X Pro/Contents/Resources/Javascripts/
– J’ai appelé le script comme tu me l’as indiqué, en l’inscrivant dans une fonction.
– Ca marche… MAIS j’ai toujours en réponse :
“Fonctions intégrées d’Acrobat EScript v.10.0
Acrobat SOAP 10.0TypeError: this.importTextData is not a function
8:Folder-Level:User:test.js
NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
Doc.importTextData:9:Document-Level:AA”23 novembre 2017 à 15:13 #63046MerlinMaître des clésVoilà ce qu’en dit la documentation :
For security reasons, this property or method may be available only during certain events. These
events include batch processing, application start, or execution within the console. (See the
event object for details of the Acrobat events.)
Beginning with Acrobat 7.0, to execute a security-restricted method through a menu event, one
of the following must be true:
– The JavaScript user preferences item Enable Menu Items JavaScript Execution Privileges is
checked.
– The method is executed through a trusted function. For details and examples, see the
app.trustedFunction method.
See Privileged versus non-privileged context for more information.
Note: (Acrobat 6.0 or later) Methods marked with S will execute without restriction in a certified
document provided the certifier’s certificate is trusted for running embedded high
privilege JavaScript and other limitations in the quick bar fields are met.En clair il faut utiliser une “trusted function”, on en a déjà parlé quelques fois sur le forum.
24 novembre 2017 à 15:06 #63047AQUOIBONMembreBon, merci à toi Merlin, mais je crois que je vais laisser tomber !
J’ai refais mon script avec le app.TrustedFunction quand même compliqué à mettre en place !
Et voilà que j’ai maintenant un message au deboguage :
“TypeError: this.importTextData is not a function
8:Folder-Level:User:test.js” !
!!!!!24 novembre 2017 à 15:43 #63048MerlinMaître des clésEt voilà que j’ai maintenant un message au deboguage :
C’est Acrobat Reader ou Acrobat Pro qui dit ça ?
Ou les deux ?24 novembre 2017 à 16:22 #63049AQUOIBONMembrePro 10.1 !
Je serai curieux de savoir comment Karl a réussi ! Il aurait pu mettre les sources sur son site !24 novembre 2017 à 16:36 #63050MerlinMaître des clés“TypeError: this.importTextData is not a function
À vue de nez je dirais que le problème vient du “this”.
Quand on l’utilise depuis un document ça pose rarement des problèmes car le document source et le document cible sont considérés par défaut comme étant les mêmes.Mais quand le script est exécuté au niveau de l’application ça change tout.
Donc il faudrait essayer en remplaçant “this” par “doc” :doc.importTextData
24 novembre 2017 à 16:43 #63051AQUOIBONMembreMarche pas non plus “ReferenceError :doc is not defined”.
27 novembre 2017 à 15:43 #63052AQUOIBONMembreJe désespère ! A tout hasard, je joins le script, la base et mon PDF.
Attention à bien changer les adresses dans le script (MAC).
Merci27 novembre 2017 à 16:37 #63053MerlinMaître des clés1. Essaye en utilisant :
this.doc.importTextData(fileName, 0);2. Sinon en utilisant :
var myDoc = event.target.doc;
myDoc.importTextData(fileName, 0); -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.