abracadabraPDF › Forums › PDF – Général › envoi mail avec PDF et XML en pièce jointe
- Ce sujet est vide.
-
CréateurSujet
-
2 août 2016 à 07:59 #45472porschelegendMembre
Bonjour,
j’ai réalisé un formulaire en pdf. Ce formulaire une fois saisi et validé, est enregistré sur l’ordinateur puis est envoyé par mail.
Le mail est créé automatiquement et reçoit automatiquement en pièce jointe le pdf. J’aimerais y associé un xml qui reprendrait un certain nombre de champs du formulaire pour réaliser ensuite des études sur les données.
Comment puis-je faire pour que les 2 fichiers soient envoyés en même temps ?
Merci à vous
-
CréateurSujet
-
AuteurRéponses
-
2 août 2016 à 13:17 #61085MerlinMaître des clés
Bonjour.
Quand et comment comptes tu créer le fichier XML ?
Ne serait-ce pas plus simple de le créer après réception du formulaire rempli ?3 août 2016 à 09:54 #61086porschelegendMembreC’est bien là la question :Euuuh: :mur:
J’ai créé un javascript qui code tout le xml mais je ne sais pas comment le ressortir dans un fichier (là il est dans un messagebox).
La question est comment faire pour que mes utilisateurs (médecins) qui vont recevoir tous ces formulaires pdf sache ressortir les xml simplement sans mon aide !
L’autre possibilité serait de garder un bouton xml dans le fichier pdf et qu’en cliquant dessus le fichier xml se crée. Et comme cela ce n’est pas envoyé par mail puisque c’est eux qui le génère.
Si je ne suis pas clair, dites le moi :jerisjaune:
3 août 2016 à 12:10 #61087MerlinMaître des clésL’autre possibilité serait de garder un bouton xml dans le fichier pdf et qu’en cliquant dessus le fichier xml se crée. Et comme cela ce n’est pas envoyé par mail…
Veux tu l’envoyer par email ou non ?
En tous cas, à mon avis le plus simple serait d’enregistrer le XML en pièce jointe dans le formulaire PDF, comme ça il suivra automatiquement sans plus s’en soucier.
:Smiley15:3 août 2016 à 12:21 #61088porschelegendMembreJe n’ai pas réussi à changer mon titre.
Donc non plus d’envoi par mail. Après réflexion, il faut que mon xml se génère à la fin du remplissage du PDF.
J’ai trouvé ça : https://eligrey.com/demos/FileSaver.js/ mais je ne sais pas si on peut le faire dans un pdf.
Et le code apparemment ici : https://developers.google.com/web/updates/2011/08/Saving-generated-files-on-the-client-side
N’étant pas un vrai développeur mais plus un bidouyeur, je ne sais pas si ça peut m’aider.
3 août 2016 à 12:38 #61089MerlinMaître des clésJ’ai trouvé ça : https://eligrey.com/demos/FileSaver.js/ mais je ne sais pas si on peut le faire dans un pdf.
Non, ça ne fonctionnera pas : exécuté depuis un document PDF un JavaScript ne peut pas sortir dudit document, contrairement à ce qui peut se faire dans les navigateurs web.
On peut enregistrer un fichier texte en pièce jointe dans le PDF mais ça passe par une autre méthode.
3 août 2016 à 12:45 #61090porschelegendMembreet quelle est cette méthode ?
Si pas d’autres solutions
3 août 2016 à 13:58 #61091MerlinMaître des cléscreateDataObject
openDataObject
getDataObjectContents
removeDataObject
Etc.Tous les détails dans : help.adobe.com/livedocs/acrobat_sdk/9.1/Acrobat9_1_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm
:soleil:3 août 2016 à 14:35 #61092porschelegendMembreMerci
je vais regarder ça
3 août 2016 à 14:43 #61093porschelegendMembreJ’ai le débogueur de script qui s’ouvre et qui me dit :
NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
Doc.createDataObject:58:FieldOr, quand je vais dans les paramètres du document, il me dit qu’il n’y a pas de protection.
Ca vient d’où ?
5 août 2016 à 11:14 #61094MerlinMaître des clésDans la doc. JavaScript il faut que tu cherches “Quickbars”.
C’est le truc qui détaille toutes les limitations de chaque fonction ou propriété.Ce problème n’a rien à voir avec la protection du document, c’est une question de niveau d’utilisation du script.
Voir absolument : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/:idee:
9 août 2016 à 08:12 #61095porschelegendMembreIl faut donc que je crée un script d’application à placer dans le répertoire javascript d’adobe reader.
Je vais voir comment créer cela
9 août 2016 à 09:20 #61096MerlinMaître des clésLe plus simple c’est de créer une fonction dans le script d’application.
Du genre :
Code:function maSuperFonction()
{
// blablabla
}Et d’appeler cette fonction depuis les évènements du document.
:soleil:9 août 2016 à 12:15 #61097porschelegendMembreBon ça ne marche pas :Euuuh:
Message d’erreur est :
Plugin enregistrement Document en place.SyntaxError: illegal character
1:Folder-Level:App:piecejointe.js
ReferenceError: piecejointe is not defined
65:Document-Level:Generer XMLPour rappel j’utilise Adobe Accrobat Reader DC
Voilà ce que j’ai fait :
dans le script .js j’ai mis ça :
piecejointe=app.trustedFunction(function()
{
cpath=global.nomfichier;
cdata=global.donnee;
app.beginPriv();
this.createDataObject(cpath, cdata);
app.endPriv();
})dans mon pdf j’ai mis çà :
global.nomfichier= “depistage.” +nompatient +prenompatient +”.xml”;global.donnees = stAlert;
piecejointe();
avec stAlert qui est la variable contenant tout mon code xml
Merci de ton aide au grand magicien du javascript
9 août 2016 à 12:59 #61098MerlinMaître des clésIl faudrait essayer d’emballer la trusted function dans une fonction “normale” du type :
function mesPiecesJointes() {
piecejointe=app.trustedFunction(function()
{
cpath=global.nomfichier;
cdata=global.donnee;
app.beginPriv();
this.createDataObject(cpath, cdata);
app.endPriv();
})
}Et ensuite appeler la fonction “normale” depuis le document…
9 août 2016 à 13:32 #61099porschelegendMembreJe n’ai désormais plus que l’erreur :
ReferenceError: mesPiecesJointes is not defined
65:Document-Level:Generer XMLune idée ?
Veux-tu les fichiers ?
9 août 2016 à 13:59 #61100MerlinMaître des clésune idée ?
Non. :Euuuh:
Veux-tu les fichiers ?
Oui…
9 août 2016 à 14:13 #61101porschelegendMembrele fichier txt bien sûr à mettre en .js
pour le pdf, le script se trouve dans le dernier bouton de la page 4
merci à toi
9 août 2016 à 14:58 #61102MerlinMaître des clésJe ne comprend pas tout dans tes scripts mais je comprend mieux ce que tu veux faire.
Dans le document ci-joint, qui fonctionne un peu sur le même principe, on génère un fichier TXT qu’on place en pièce jointe sans avoir besoin de trusted function ni d’un script de document.
Je te laisse examiner le script (dans le bouton gris).
:Smiley15:9 août 2016 à 15:07 #61103MerlinMaître des clésMauvaise nouvelle : je viens de tester le PDF que je viens de poster avec Reader et ça ne fonctionne pas.
Ce que confirme la documentation : la fonction createDataObject requiert les file attachment rightsEn clair il faudrait que ton formulaire PDF soit activé via un serveur LiveCycle d’Adobe, Acrobat Pro ne pouvant activer que les droits F, C et S, c’est-à-dire juste au niveau inférieur.
Je cite :
The property or method is allowed in Acrobat Pro and Acrobat Standard. It can be accessed in Adobe Reader (version 5.1 or later) depending on additional usage rights that have been applied to the document:
F — Requires forms rights
C — Requires the right to manipulate comments
S — Requires the document save rights
D — Requires file attachment rights
G — Requires digital signature rights10 août 2016 à 06:30 #61104porschelegendMembreBon bah tant pis. :Smiley02:
Merci en tout cas pour le temps que tu m’a consacré.
10 août 2016 à 09:08 #61105porschelegendMembreJ’ai pensé à une autre solution mais je ne sais pas si c’est réalisable.
J’ai créé un champ texte avec à l’intérieur l’ensemble de mes données séparées par un “;” afin de copier celles-ci dans un fichier excel. Le médecin pourra ensuite les remettre en colonne.
Il faudra donc pouvoir créer une fonction via un bouton pour réaliser la copie de ce champ afin d’aller simplement coller dans excel ce qu’on a copié.
Penses-tu que cela est réalisable dans ma configuration ?
10 août 2016 à 17:02 #61106MerlinMaître des clésTant qu’à faire intervenir l’utilisateur, je crois que le plus simple serait d’envoyer les données structurées* dans la Console et ensuite de lui afficher la Console sous les yeux.
À charge pour lui de copier-coller les données (on peut éventuellement le briefer avant, via une alerte).:geek:
* Mais rien n’empêche d’utiliser un champ préalablement pour structurer les données, ou juste parce-que le script est existant, et de les envoyer ensuite à la Console
10 août 2016 à 17:09 #61107MerlinMaître des clésDu style :
Code:var sMesDatas = this.getField(“CHAMP-TEXTE”).valueAsString;
console.clear();
console.show();
console.println(“Merci de copier-coller les données ci-dessous :rr” + sMesDatas);Et le tour est joué !
:geek:11 août 2016 à 07:09 #61108porschelegendMembreMerci à toi Merlin.
cette façon d’afficher le message est tout de suite plus PRO.
:bonjour:
11 août 2016 à 09:21 #61109MerlinMaître des clésPour faire vraiment Pro je te conseille plutôt d’afficher une grande et belle fenêtre JavaScript sous les yeux ébahis et admiratifs de tes utilisateurs.
Exemple ci-joint.:soleil:
11 août 2016 à 11:36 #61110porschelegendMembreOui en effet, c’est bien plus joli :extra:
Pour faire vraiment Pro je te conseille plutôt d’afficher une grande et belle fenêtre JavaScript sous les yeux ébahis et admiratifs de tes utilisateurs.
Exemple ci-joint.:soleil:
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.