Donnez vie à vos documents numériques !
 

DavidFeder

Toutes mes réponses sur les forums

Affichage de 20 réponses de 1 à 20 (sur un total de 20)
  • Auteur
    Réponses
  • en réponse à : Imprimer un formulaire sans les valeurs par défaut #63433
    DavidFeder
    Participant

    ok, fini de faire le mariole :)
    j’ai essayé de “condenser” mon code pour éviter de boucler 2x tous les champs en mettant le read-only et le nettoyage des valeurs par défaut comme ceci:

    Code:
    function finalize() {

    //DEFAULT TEXT IN FIELDS & READ ONLY
    for (var i=0; i    var oFld = this.getField(this.getNthFieldName(i));
        if((oFld.type == “text”) && (oFld.valueAsString == oFld.defaultValue)) {
                oFld.value = “”;
                oFld.defaultValue = “”;
        }
        oFld.readonly = true;
    }
    }

    mais ça ne fonctionne pas.
    Si je nettoie d’abord les valeurs par défaut, puis mets en read-only dans 2 fonctions séparées ça marche.
    Mais je suppose que c’est faire tourner la boucle pour rien, non?

    en réponse à : Imprimer un formulaire sans les valeurs par défaut #63432
    DavidFeder
    Participant

    Hello,

    Loin moi l’idée de faire le malin… Je me content de mettre ensemble les merveilles de code que je vois :)Pourquoi changer la couleur alors qu’on peut simplement remplacer la valeur par “”, comme ci-dessous?

    Code:
    for (var i=0; i    var oFld = this.getField(this.getNthFieldName(i));
        if((oFld.type == “text”) && (oFld.valueAsString == oFld.defaultValue)) {
                oFld.value = “”;
        }
    }

    En fait j’avais aussi un problème: dans mon cas c’est pour le print, mais aussi pour enregistrer une version “non modifiable” du document.
    du coup, avec le code ci-dessous, si après avoir enregistré la version “read only” du document, l’utilisateur cliquait sur le champs, la valeur par défaut revenait (j’ai un autre script qui remet la valeur par défaut si le champ a été cliqué, puis finalement laissé vide…), du coup j’ai ajouté
    oFld.defaultValue= “”;
    le code pour remettre la valeur par défaut si après avoir cliqué, finalement on ne rentre pas de contenu:

    Code:
    if (event.target.value==””) {
        event.target.value = event.target.defaultValue;
    }

    et le code avant enregistrer version “read only”:

    Code:
    for (var i=0; i    var oFld = this.getField(this.getNthFieldName(i));
        if((oFld.type == “text”) && (oFld.valueAsString == oFld.defaultValue)) {
                oFld.value = “”;
                oFld.defaultValue = “”;
        }
    }
    DavidFeder
    Participant

    WAAAAW!!!la grande classe :)Génial !je demandais un coup de main, tu m’as mis un coup de poing :D

    DavidFeder
    Participant

    Super!!Merci beaucoup :)En fait j’essayais de répondre depuis ce matin mais pour une raison étrange je dois partager ma connexion en 4g pour accéder au forum; ça timeout depuis ma connexion normale.
    Avec mon script plein de trucs inutiles (en effet:) ) je devais supprimer

    Code:
    annot.author = annot.attachment.name;

    Merci, je venais de comprendre que ça commençait par 0 la page 1 :)
    Là j’essaye de créer un bouton pour permettre à l’utilisateur de supprimer le(s) fichier de chaque bouton au cas où il fait une erreur, et lui éviter de devoir recommencer tout le formulaire.

    En fait j’ai décidé d’ajouter une description spécifique pour les fichiers de chaque bouton

    Code:
    contents: “nom de la section”

    et avec ce code sur le bouton “supprimer”, ça semble marcher :)

    Code:
    var l = this.getField(“files_field_names”);
    l.value = “”;
     

        var annotations = this.getAnnots({nPage: this.pageNum});
    for (var i = 0; i < annotations.length; i++) {
    if (annotations.type == “FileAttachment” && annotations.contents==”nom de la section”) {annotations.destroy();}
    }

    que du bonheur :)

    DavidFeder
    Participant

    Merci ! :) Je respire déjà mieux de savoir qu’il existe une solution :)Par contre je n’ai pas réussi… j’ai du foirer qqch dans ce code:

    Code:
    var filenamesfield = this.getField(“files_field_A”).rect;
    var nbPJ=0;
    this.syncAnnotScan();
    var annots=this.getAnnots();
    if (annots!=null) {
        for (var i=0; i        if (annots.type==”FileAttachment” && annots.author==event.target.name) {
                var j=j+1;
                annots.delay=true;
               
                annots.delay=false;
                nbPJ++;
            }
        }
    }
    if (nbPJ==2) {
        app.alert(“You can attach maximum 2 files. Please merge your documents if necessary.”);
        var attachbutton = getField(“attach_A”);
        var attachedbutton = getField(“attached_A”);
        attachbutton.display = display.hidden;
        attachedbutton.display = display.visible;
    } else {

    var annot = this.addAnnot({
    page: 2,
    type: “FileAttachment”,
    author: event.target.name,
    contents: “Double-clic to open”,
    attachIcon: “PushPin”,
    point: [-500,0],
    strokeColor: color.blue,
    });
    annot.author = annot.attachment.name;
    if (annot.attachment !== null) {
           

            var filenamesfield = this.getField(“files_field_A”);
            if (filenamesfield.value == “”) {
                filenamesfield.value = annot.attachment.name;
            }
            else {
                filenamesfield.value = filenamesfield.value + “n” + annot.attachment.name;
            }
            }

    }

    Tu pourrais me dire ce que je dois corriger?

    DavidFeder
    Participant

    Bonjour,

    Merci beaucoup! Malheureusement je ne pourrai pas utiliser ImportDataObject comme certains utilisateurs risquent de ne pas avoir les droits sur leurs machines :s
    avec Annot, est-ce que vous auriez une solution pour limiter le nombre de fichiers, mais par “bouton”, pas sur l’entièreté du document?

    DavidFeder
    Participant

    Bonjour Berbarth,

    Super!!
    L’import via le panel ne convient pas pour ce projet.
    Dans ce cas ci, je ne veux pas spécialement utiliser de commentaire lié à une icone oldschool “moche” (je l’ai mise en dehors de la page d’ailleurs) donc utiliser l’autre méthode pourrait être la solution :)Il y a certains “désavantages” à utiliser cette méthode? (ImportDataObject)Tu pourrais partager le code pour l’import via ImportDataObject, et ensuite pour qu’un bouton ouvre la pièce jointe?
    Sur mon pdf, je devrais mettre plusieurs boutons pour que l’utilisateur puisse attacher un certain nombre de fichiers à chaque bouton.
    Je devrais pouvoir définir un nombre max de pièces jointes spécifique à chaque bouton.

    En fait au final c’est plus important que d’avoir des boutons pour ouvrir ces pièces jointes, comme je peux ouvrir le panneau pièces jointes d’un click sur un bouton, mais si les 2 sont possibles, c’est encore mieux :)

    DavidFeder
    Participant

    Merci :) Même si c’est un non :D
    finalement j’ai décidé de simplement mettre un bouton qui va ouvrir le panneau “attachment”, avec ce javascript:
    app.execMenuItem(“ShowHideFileAttachment”);

    Par contre je suis bloqué par un autre truc :s
    La limitation du nombre de pièces jointes ne fonctionne pas correctement quand j’ai plusieurs boutons/champs sur une même page.
    En gros, sur une même page, j’ai un bouton qui permet d’ajouter max 1 pièce jointe, puis un autre qui devrait permettre d’en ajouter 2. Il semble qu’il compte le total de pièces jointes sur la page, et pas par “bouton”.

    J’ai utilisé ce code:

    Code:
    var filenamesfield = this.getField(“files_field_1”).rect;
    var nbPJ=0;
    this.syncAnnotScan();
    var annots=this.getAnnots();
    if (annots!=null) {
        for (var i=0; i        if (annots.type==”FileAttachment”) {
                annots.delay=true;
               
                annots.delay=false;
                nbPJ++;
            }
        }
    }
    if (nbPJ==1) {
        app.alert(“You can attach maximum 1 file. Please merge your documents if necessary.”);
        var attachbutton = getField(“attach_1”);
        var attachedbutton = getField(“attached_1”);
        attachbutton.display = display.hidden;
        attachedbutton.display = display.visible;
    } else {

    var annot = this.addAnnot({
    page: 4,
    type: “FileAttachment”,
    contents: “Double-clic to open”,
    attachIcon: “PushPin”,
    point: [-500,0],
    strokeColor: color.blue,
    });
    annot.author = annot.attachment.name;
    if (annot.attachment !== null) {
           

            var filenamesfield = this.getField(“files_field_1”);
            if (filenamesfield.value == “”) {
                filenamesfield.value = annot.attachment.name;
            }
            else {
                filenamesfield.value = filenamesfield.value + “n” + annot.attachment.name;
            }
            }

    }

    J’ai essayé en renommant “nbPJ” par “nbPJ1”, etc, mais ça le fait pas.
    Vous avez une idée de comment résoudre ce problème?

    en réponse à : Pièce jointe à un PDF (supprimer) #61681
    DavidFeder
    Participant

    Bonjour,

    Merci pour ta réponse.
    Du coup on devrait pouvoir supprimer les pièces jointes d’une page spécifique, sans pour autant qu’elle existe réellement?
    Et à l’attachment, est-il possible d’ajouter une pièce jointe à une autre page que celle depuis laquelle l’utilisateur finale est? C’est à dire celle où on a mis le bouton “ajouter une pièce jointe” ?

    en réponse à : Pièce jointe à un PDF (supprimer) #61678
    DavidFeder
    Participant

    Bonjour,

    Est-il possible de supprimer seulement certaines pièces jointes d’une page? (pas toutes celles de la page)Dans mon formulaire, j’ai plusieurs boutons “ajouter une pièce jointe”, dont les noms apparaissent dans des champs de texte respectifs.
    Je voudrais offrir la possibilité de supprimer une pièce jointe (ou toutes celles dont le nom est ajouté à un même champs de texte), mais pas toutes celles de la page.

    en réponse à : Taille de texte variable dans un champ multilignes #63188
    DavidFeder
    Participant

    oui, chez moi c’est pareil, même avec la version de Merlin
    tu utilises aussi Acrobat DC?Chez moi je dois cliquer en dehors du champs passé les 10 lettres, puis revenir pour commencer a avoir la taille auto

    en réponse à : Taille de texte variable dans un champ multilignes #63185
    DavidFeder
    Participant

    Bonjour,

    Merci :)Malheureusement chez moi c’est le même résultat; même dans ton fichier d’exemple.
    si je commence à écrire dans le champ, même si je dépasse 10 lettres, ça reste en taille fixe, et le texte ne commence à être en auto qu’après que j’ai cliqué hors du champs de texte, ensuite il faut recliquer pour continuer à écrire.
    J’utilise Adobe DC reader dernière version – ça serait lié à ça?

    en réponse à : Taille de texte variable dans un champ multilignes #63182
    DavidFeder
    Participant

    HelloMerci pour ta réponseChez toi ça repasse bien en auto à partir de 10 lettres?  Avec ton script, ça le fait chez moi, mais uniquement quand après avoir écrit, je clique en dehors du champs (acrobat DC).

    c’est bien ici que tu mets le script?

    en réponse à : Taille de texte variable dans un champ multilignes #63180
    DavidFeder
    Participant

    Bonjour,

    Merci pour ta réponse.
    Pour l’instant j’ai utilisé ce script:

    Code:
    if (event.value.length > 100) {

        event.target.textSize = 0;

    }

    else {

        event.target.textSize = 11;

    }

    Pour que ça passe en taille auto si je dépasse le nombre de caractères supposé du champs (ex 100 ici).

    J’ai essayé “On Blur” mais mon problème c’est que ça n’adapte que si je clique hors du champs pour ensuite y revenir.

    plutot que le value.lenght, j’ai essayé avec if event.fieldFullça aurait été idéal d’éviter de calculer le nombre de lettres mais pas le plus important.

    J’ai essayé aussi en mettant ça dans “Customer Keystroke Script” mais je n’y arrive pas.

    Penses-tu à une solution pour passer en taille auto à partir d’un nombre de lettres (ou fieldFull) sans devoir cliquer hors, puis dans le champs de texte?

    DavidFeder
    Participant

    Bonjour,

    Merci pour ta réponse.
    Je ne suis pas sûr de bien comprendre :)
    On ne sait pas nommer la pièce jointe au moment de l’ajouter, via le bouton qui exécute le script?Dans ce cas on pourrait nommer simplement genre “Annex1, Annex2, etc”.
    Sans devoir carrément indiquer le nom du fichier sur le bouton “ouvrir”, ça ne pourrait pas fonctionner?

    en réponse à : Taille de texte variable dans un champ multilignes #63178
    DavidFeder
    Participant

    Bonjour,

    Merci pour tes réponses.
    Dommage que la seule solution à mon problème soit de limiter par nombre de caractères mauellement; ça aurait été top de pouvoir limiter par taille du caractère

    DavidFeder
    Participant

    Bonjour Merlin,
    Du coup ce n’est pas possible de faire ça pour un pdf dans lequel l’utilisateur final ajoute lui même les pièces jointes? :s

    en réponse à : Taille de texte variable dans un champ multilignes #63176
    DavidFeder
    Participant

    Bonjour,

    J’espère bien faire en continuant sur ce post; il me semble le plus en rapport avec ce que je voudrais faire.
    N’hésitez pas à me signaler si je ferais mieux d’en créer un autre.

    Je voudrais des champs de texte:
    – sans défilement (problème à l’impression)- redimensionner le texte automatiquement (pour ne pas bloquer si vraiment plus de contenu que la taille du champs est nécessaire)Ok, ça se fait simplement avec les paramètres du champs comme expliqué dans cette discussion.

    Mais, serait-il possible de:
    – définir la taille par défaut du texte (quand on a moins de caractères que le champs)- définir une taille minimum du texte (pour éviter que ça devienne illisible, surtout à l’impression). Pour ça, je pourrais limiter à max un certain nombre de caractères, mais c’est un peu naze comme solution :) Surtout que j’ai 36 champs différents avec des tailles différentes… entre du texte et voir à l’oeil la taille de la typo, puis voir le nombre de lettres c’est pas génial.

    J’espère que oui :) Et que vous pouvez partager la solution ;)
    Merci

    DavidFeder
    Participant

    Bonjour Bebarth,

    Génial! Merci beaucoup :)
    Maintenant faut que je trouve un moyen de nommer chaque pièce jointe.
    D’après mes recherches, un truc du genre:
    (annots.name);Tu pourrais m’expliquer comment faire ça, et où le mettre?J’ai essayé en suivant la logique avec “SetProps”, sans pour l’instant y mettre de (nbPJ+1), pour commencer par “simple”, qu’au moins j’y arrive avec une seule pièce jointe, comme dans le code ci-dessous:

    Code:
    var filenamesfield = this.getField(“dlp_files_field”).rect;
    var nbPJ=0;
    this.syncAnnotScan();
    var annots=this.getAnnots();
    if (annots!=null) {
        for (var i=0; i        if (annots.type==”FileAttachment”) {
                annots.delay=true;
                annots.setProps({
                    name: “Attached_Document”,
                   
                });
               
                annots.delay=false;
                nbPJ++;
            }
        }
    }
    if (nbPJ==5) {
        app.alert(“You can attach maximum 5 files. Please merge your documents if necessary.”);
        var attachbutton = getField(“Attach_DLP”);
        attachbutton.display = display.hidden;
    } else {

    var annot = this.addAnnot({
    page: this.pageNum,
    type: “FileAttachment”,
    contents: “Double-clic to open”,
    attachIcon: “PushPin”,
    point: [filenamesfield[0]-15, filenamesfield[1]-(10*(nbPJ))],
    strokeColor: color.blue,
    });
    annot.author = annot.attachment.name;
    if (annot.attachment !== null) {
           

            var filenamesfield = this.getField(“dlp_files_field”);
            if (filenamesfield.value == “”) {
                filenamesfield.value = annot.attachment.name;
            }
            else {
                filenamesfield.value = filenamesfield.value + “n” + annot.attachment.name;
            }
            }

    }

    J’espérais que ça donne le nom “Attached_Document” à la pièce jointe (je ne sais pas comment vérifier).
    J’ai aussi essayé en mettant name: “Attached_Document” dans this.addAnnot({Après, sur le bouton “ouvrir”, j’ai mis ce script:

    Code:
    this.exportDataObject({cName: “Attached_Document”, nLaunch: 2});

    Mais ça ne fonctionne pas :s

    DavidFeder
    Participant

    Bonjour,

    Tout d’abord, merci beaucoup pour vos contributions; une mine d’or pour mon projet :)
    J’ai pu utiliser vos codes pour ce que je voulais faire; un bouton pour attacher jusqu’à 5 pièces jointes et indiquer leurs noms dans un champ de texte).
    Je voudrais toutefois permettre d’ouvrir ces pièces jointes sans devoir passer par le volet pièces jointes.
    Pour celà, les icones type Paperclip fonctionnent bien, et je vois comment les positionner, mais c’est gênant avec le zoom.

    Serait-il possible, selon vous, de faire apparaître un bouton (ou plusieurs si plusieurs pièces jointes) sur lequel cliquer pour ouvrir le pièce jointe? Ceci au lieu de l’icone type Paperclip.

    Voici mon bout de code actuel:

    Code:
    var filenamesfield = this.getField(“dlp_files_field”).rect;
    var nbPJ=0;
    this.syncAnnotScan();
    var annots=this.getAnnots();
    if (annots!=null) {
        for (var i=0; i        if (annots.type==”FileAttachment”) {
                annots.delay=true;
               
                annots.delay=false;
                nbPJ++;
            }
        }
    }
    if (nbPJ==5) {
        app.alert(“You can attach maximum 5 files. Please merge your documents if necessary.”);
        var attachbutton = getField(“Attach_DLP”);
        attachbutton.display = display.hidden;
    } else {

    var annot = this.addAnnot({
    page: this.pageNum,
    type: “FileAttachment”,
    contents: “Double-clic to open”,
    attachIcon: “PushPin”,
    point: [filenamesfield[0]-15, filenamesfield[1]-(10*(nbPJ))],
    strokeColor: color.blue,
    });
    annot.author = annot.attachment.name;
    if (annot.attachment !== null) {
           

            var filenamesfield = this.getField(“dlp_files_field”);
            if (filenamesfield.value == “”) {
                filenamesfield.value = annot.attachment.name;
            }
            else {
                filenamesfield.value = filenamesfield.value + “n” + annot.attachment.name;
            }
            }

    }

    Pour afficher le bouton, je suppose que je pourrais insérer qqch du genre :bouton_fichier_1.display = display.visible;   

    Mais le script à exécuter quand on clique sur ce bouton… une autre histoire… loin de mes compétences :s

Affichage de 20 réponses de 1 à 20 (sur un total de 20)