abracadabraPDF › Forums › PDF – Général › XML pour remplir un multi-formulaire.
- Ce sujet est vide.
-
CréateurSujet
-
20 novembre 2017 à 15:23 #45751
AQUOIBON
MembreBonjour à 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 #63034
Merlin
Maître des clésBonjour 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 #63035AQUOIBON
MembreOui, 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 #63036Merlin
Maî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 #63037AQUOIBON
MembreSuper ! 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 #63038Merlin
Maî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 #63039AQUOIBON
MembreDifficile 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 #63040AQUOIBON
Membreen 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 #63041AQUOIBON
MembreTops ! 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 #63042Merlin
Maître des clésSécurité oblige !
23 novembre 2017 à 13:03 #63043AQUOIBON
MembreJ’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 #63044Merlin
Maî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 #63045AQUOIBON
MembreMerci (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 #63046Merlin
Maî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 #63047AQUOIBON
MembreBon, 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 #63048Merlin
Maî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 #63049AQUOIBON
MembrePro 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 #63050Merlin
Maî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 #63051AQUOIBON
MembreMarche pas non plus « ReferenceError :doc is not defined ».
27 novembre 2017 à 15:43 #63052AQUOIBON
MembreJe 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 #63053Merlin
Maî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.