Donnez vie à vos documents numériques !
 

Sauvegarde et compteur. – RÉSOLU

abracadabraPDF Forums PDF – Général Sauvegarde et compteur. – RÉSOLU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44192
    RafaelLopes
    Membre

    Bonjour,

    Oui me revoilà, pardon  :Smiley11:
    J’utilise le combo Scribus(pour la création du formulaire)/Foxit Reader(pour la lecture).
    Je vais faire vite afin de vous déranger le moins possible :p.
    J’en suis à la toute fin de mon projet puisque je met en place un bouton permettant la sauvegarde du formulaire complété sous le format suivant : Variable1_Variable2_Compteur.pdf.
    Le problème se situe au niveau du compteur, en effet j’arrive déjà à sauvegarder en récupérant le nom des champs via cette fonction :
    function save()
    {
    if (this.getField(“sauvegardeReady”).value==1)
    {
    var random=Math.floor(Math.random()*100000) ;
    this.saveAs(“./Interim” + “_” + this.getField(“listeSite”).value + “_” + this.getField(“listeService”).value + “_” + random + “.pdf”);

    app.alert(“Le formulaire à bien été enregistré sous le nom de: Interim” + “_” + this.getField(“listeSite”).value + “_” + this.getField(“listeService”).value + “_” + random + “.pdf”);

    }

    else
    { app.alert(“Vous devez d’abord remplir tous les champs obligatoires puis Valider le formulaire avant de pouvoir sauvegarder”);}
    }

    Cependant comme vous pouvez le voir cela sauvegarde avec un nombre aléatoire à la fin, car je ne sais pas comment y mettre un compteur.
    Voici un exemple pour être plus clair.
    Admettons un fichier contenant deux listes, la première permettant de choisir un pays et la seconde permettant de choisir une ville de ce pays. Je le distribue sur le réseau d’une entreprise, j’aimerais que chaque personne le remplisse depuis son poste. Lorsque la personne appuie sur le bouton sauvegarder, cela sauvegarde le fichier sur le réseau en récupérant les valeurs des deux listes, et en y apposant le nombre 000 à la fin si aucun fichier n’existe, 001 si le fichier 000 existe …
    Nous aurons donc par exemple France_Paris_000.pdf, France_Paris_001.pdf, France_Lyon_000.pdf …
    J’ai pensé à deux solutions :

    La première, en JavaScript j’explore le dossier et je compte le nombre de fichier commencant par France_Paris… et j’utilise ce nombre pour le compteur.
    Problème, il faut utiliser le FileSystemObject et je n’y arrive pas, probablement car Foxit Reader ne prend pas en compte l’activeX.

    Deuxième, après la sauvegarde du fichier, je vide les listes et les champs afin de récupérer un formulaire vierge, je sauvegarde ce formulaire par dessus l’ancien en pensant à indiquer dans une variable qu’il y a déjà eu une sauvegarde pour France_Paris…
    Problème: le fichier étant ouvert dans Foxit Reader, je n’arrive pas à sauvegarder par dessus via la fonction saveAs.

    Je suis vraiment bloqué, je ne sais même pas si c’est possible à vrai dire, pourriez vous m’éclairer de vos lumières ?
    Je ne demande pas une réponse toute faite mais juste une piste à explorer.  :Smiley08:

    Merci d’avance.
    Cordialement

Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Auteur
    Réponses
  • #53141
    Merlin
    Maître des clés

    Je suis vraiment bloqué, je ne sais même pas si c’est possible à vrai dire, pourriez vous m’éclairer de vos lumières?

    Salut,

    Ce que je peux dire c’est que le chiffre incrémenté à partir de 1 ce n’est pas possible ni avec Acrobat ni avec Reader (sauf peut-être si on utilise des solutions serveurs bien péchues).
    Alors à moins que Foxit (que je ne connais pas du tout) soit mieux équipé que ces logiciels de référence je ne vois pas bien comment faire…

    :doute:

    #53142
    RafaelLopes
    Membre

    Oui c’est bien ce qui me fait peur, en javascript c’est possible avec le FileSystemObject grâce au plugin ActiveX mais que sur IE, pas en pdf que ce soit sur Acrobat Reader ou Foxit Reader. Du coup je cherche une “astuce” pour contourner ce problème grâce à un code bien pensé en Javascript, mais ce n’est peut être pas du tout possible. D’où l’idée de sauvegarder par dessus le modèle un nouveau modèle avec une variable incrémentée pour chaque sauvegarde. Mais la encore je n’y arrive pas, c’est peut être tout bonnement impossible!
    En tout cas merci pour ta réponse !

    #53143
    maxwyss
    Membre

    Une solution locale (avec Adobe Reader, mais j’ai mes doutes concernant Foxit Reader) est possible seulement si la copie du fichier utilisée est la seule en utilisation. Dans ce cas, on pourrait utiliser un champ invisible contenant les derniers noms sauvés. On peut donc utiliser ces noms sauvegardés comme base pour les noms suivants.

    Si ces conditions ne sont pas realisables, il faut une solution de support serveur. On pourrait, par example envoyer les données au serveur qui remplisserait le formulaire et, utilisant und base de données, sauverait le fichier sous un nom unique suivant les conventions.

    HTH.

    #53144
    RafaelLopes
    Membre

    Bonjour maxwyss, merci pour ta réponse.
    La liaison avec une BDD ne peut être réalisé (manque du temps) mais il est vrai que ça rendrait les choses plus facile.
    Concernant ta solution locale avec Adobe Reader, pourrais tu m’en dire un peu plus? que je voie si c’est réalisable sur Foxit.
    Merci d’avance.

    #53145
    maxwyss
    Membre

    Pour une solution locale, on pourrait additionner un champ invisible pour chaque localité. Dans ce champ on ecrit le nom du fichier quand on l’a sauve (événement “did Save”) (this.documentFileName). Puis, pour sauver le document une nouvelle fois, on va analyser le contenu du champ echeant, en trouvant le numero d’ordre (on pourrait par example utiliser la methode suivante:

    var orderNumber = this.getField(“nomSauve”).valueAsString.replace(/[^0-9]/gi, “”) * 1 ;

    Puis incrementer ce numero et reassembler le nom du fichier.

    HTH.

    #53146
    RafaelLopes
    Membre

    @ maxwyss : Oui j’ai bien pensé à ça, mais le problème est qu’il faut sauvegarder par dessus le modèle un nouveau modèle dans lequel est présent dans une variable le nombre d’enregistrement précédents… Or comme le modèle est ouvert, avec la fonction saveAs la sauvegarde échoue. De plus un autre problème se pose avec cette méthode, le fichier sera distribué sur un réseau d’entreprise, imaginons que deux personnes l’ouvrent en même temps, le dernier à sauvegarder remplacera le modèle sans prendre en compte l’augmentation de la variable que le 1er a engendré, je ne sais pas si je suis très clair ^^’.
    Dans tous les cas, j’ai trouvé une autre solution, je met tout simplement la date complète, année, mois, jour, heure, minute, seconde à la fin. Cela permet de classer les éléments et assure qu’il ne peut y avoir de doublons !
    Merci à vous !

Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.