Inscrivez-vous

abracadabraPDF Forum

Le seul forum francophone entièrement dédié au format PDF

AQUOIBON

20 novembre 2017 : 16:23
Apprenti sorcier Messages: 12
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 !


  • Grand magicien
  • Messages: 7 286

Re : XML pour remplir un multi-formulaire.

Merlin Réponse 1 20 novembre 2017 : 19:38

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 ?
« Modifié: 21 novembre 2017 : 13:24 par Merlin »
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 2 21 novembre 2017 : 11:47

Oui, 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...

  • Grand magicien
  • Messages: 7 286

Re : XML pour remplir un multi-formulaire.

Merlin Réponse 3 21 novembre 2017 : 13:28

Oups !
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/
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 4 21 novembre 2017 : 15:40

Super ! 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 ! Merci

  • Grand magicien
  • Messages: 7 286

Re : XML pour remplir un multi-formulaire.

Merlin Réponse 5 21 novembre 2017 : 18:47

Difficile 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/
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 12

Re : Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 6 22 novembre 2017 : 12:46

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

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 7 23 novembre 2017 : 11:45

en 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) !

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 8 23 novembre 2017 : 11:56

Tops ! 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.

  • Grand magicien
  • Messages: 7 286

Re : XML pour remplir un multi-formulaire.

Merlin Réponse 9 23 novembre 2017 : 12:10

Sécurité oblige !
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 10 23 novembre 2017 : 14:03

J'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 !

  • Grand magicien
  • Messages: 7 286

Re : XML pour remplir un multi-formulaire.

Merlin Réponse 11 23 novembre 2017 : 14:21

1. 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 :

function maSuperFonction() {
// ici on place le script
}


2. Depuis n'importe quel champ ou n'importe quel autre script on appelle la fonction avec :

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…)
« Modifié: 23 novembre 2017 : 14:22 par Merlin »
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 12 23 novembre 2017 : 14:58

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

TypeError: 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"

  • Grand magicien
  • Messages: 7 286

Re : XML pour remplir un multi-formulaire.

Merlin Réponse 13 23 novembre 2017 : 16:13

Voilà 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.
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 14 24 novembre 2017 : 16:06

Bon, 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" !
!!!!!

  • Grand magicien
  • Messages: 7 286

Re : Re : XML pour remplir un multi-formulaire.

Merlin Réponse 15 24 novembre 2017 : 16:43

Et voilà que j'ai maintenant un message au deboguage :
C'est Acrobat Reader ou Acrobat Pro qui dit ça ?
Ou les deux ?
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 16 24 novembre 2017 : 17:22

Pro 10.1 !
Je serai curieux de savoir comment Karl a réussi ! Il aurait pu mettre les sources sur son site !

  • Grand magicien
  • Messages: 7 286

Re : Re : XML pour remplir un multi-formulaire.

Merlin Réponse 17 24 novembre 2017 : 17:36

"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
Acrobate du PDF, InDesigner et Photoshopographe

  • Apprenti sorcier
  • Messages: 12

Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 18 24 novembre 2017 : 17:43

Marche pas non plus "ReferenceError :doc is not defined".

  • Apprenti sorcier
  • Messages: 12

Re : Re : XML pour remplir un multi-formulaire.

AQUOIBON Réponse 19 27 novembre 2017 : 16:43




Je  désespère ! A tout hasard, je joins le script, la base et mon PDF.
Attention à bien changer les adresses dans le script (MAC).
Merci

  • Grand magicien
  • Messages: 7 286

Re : XML pour remplir un multi-formulaire.

Merlin Réponse 20 27 novembre 2017 : 17:37

1. Essaye en utilisant :
this.doc.importTextData(fileName, 0);


2. Sinon en utilisant :
var myDoc = event.target.doc;
myDoc.importTextData(fileName, 0);
Acrobate du PDF, InDesigner et Photoshopographe