Donnez vie à vos documents numériques !
 

Personnalisation d’un bouton permettant d’importer une pièce jointe

abracadabraPDF Forums PDF – Général Personnalisation d’un bouton permettant d’importer une pièce jointe

  • Ce sujet est vide.
Affichage de 25 réponses de 26 à 50 (sur un total de 68)
  • Auteur
    Réponses
  • #63949
    daninet
    Participant

    J’ai demandé cela, parce que cela ne fonctionne pas … c’est-à-dire que cela fonctionne avec la pièce jointe (1 – les pièces jointes jointes au document que le public via les panneaux Pièces jointes,)

    Ne fonctionne pas avec la pièce jointe (2 pièces jointes attachées à une page (et une seule) que nous gérons avec l’outil de commentaire « Ajouter une nouvelle pièce jointe » et cela apparaît également dans le panneau Pièces jointes)

    :doute: :oh: :Euuuh:

    #63950
    Merlin
    Maître des clés

    Exemple ci-joint.
    :Smiley03:

    #63951
    daninet
    Participant

    Merci. Grazie

    Je ne me suis pas bien expliqué: je voulais prendre les données de la pièce jointe 1
    Je joins le fichier 2
    J’ai besoin des données de pièce jointe pour les cases ci-dessous.
    Est-ce possible avec Reader DC ?

    #63952
    bebarth
    Maître des clés

    bonjour,
    Dans mon exemple, j’importe les données de la pièce jointe sans la nommer avec :

    Code:
    var p = this.getDataObject(this.dataObjects[0].name);

    0 est l’indice de position de la pièce jointe, soit la première.
    Si tu veux importer la deuxième pièce jointe en indiquant sa position, il faut écrire :

    Code:
    var p = this.getDataObject(this.dataObjects[1].name);

    Sinon, tu peux aussi indiquer le nom de la pièce jointe sans tenir compte de sa position avec :

    Code:
    var p = this.getDataObject(« FDF »);

    @+
    :bonjour:

    #63953
    daninet
    Participant

    Merci beaucoup pour votre intérêt, dès que j’essaierai, je vous le ferai savoir. Gazie  :bonjour:

    #63954
    Merlin
    Maître des clés

    Merci. Grazie

    Merci de poster les messages en « texte seul » (text only) sans les balises de formatage qui ne fonctionnent pas bien.
    Voici ce que ça donne (en image) : c’est illisible.
    :Smiley01:

    #63955
    daninet
    Participant

    No, se allego il file Test.txt ..
    non ho letto il file allegato in seguito …
    Nell’esempio, il file vuoto senza allegato.
    :doute: :doute:

    #63956
    bebarth
    Maître des clés

    bonjour,

    Dans le format PDF il y a deux types de pièces jointes :
    1- les pièces jointes attachées au document que l’on ne gère que via le panneau Pièces jointes,
    2- les pièces jointes attachées à une page (et une seule) que l’on gère avec l’outil de commentaire « Ajouter une nouvelle pièce jointe » et qui apparaissent aussi dans le panneau Pièces jointes.

    D’après les premiers essais que je viens de faire, il me semble que getDataObject ne fonctionne qu’avec les pièces jointes attachées au document… mais il faudrait que j’approfondisse le sujet.
    Si on lance le teste :

    Code:
    console.show();
    console.clear();
    var d = this.dataObjects;
    for (var i = 0; i

    La console indique qu’il n’y a pas de pièce jointe si elle est attachée à la page.

    Merlin, as-tu des infos ? Je n’ai rien vu comme indication dans l’api reference !
    @+
    :bonjour:

    #63957
    bebarth
    Maître des clés

    …et s’il y a les 2 types de pièces jointes, la console n’indique que celle attachée au document !
    @+
    :bonjour:

    #63958
    Merlin
    Maître des clés

    Je n’ai pas d’info particulière mais je suppose que pour les PJ attachées à la page il faut chercher parmi les « objets » commentaires, pas parmi les « dataobjects »…
    Je vérifierai ça après le weekend (que je souhaite bon à tous).

    #63959
    bebarth
    Maître des clés

    bonjour,
    Voici une version qui fonctionne avec une pièce jointe attachée à la page.
    @+
    :bonjour:

    #63960
    daninet
    Participant

    Fantastique, mille, merci. Vraiment très compétent.
    :bravo: :bonjour: :bonjour: :priere:

    #63961
    Merlin
    Maître des clés

    :bravo:

    #63962
    Mary31
    Participant

    Bonjour,
    A priori ce sujet devrait correspondre à ma demande….

    Je souhaiterais envoyer un formulaire à des utilisateurs. Dans ce formulaire, il y a des champs à renseigner mais aussi des documents à importer en tant que pièce jointe.
    Je vous donne un exemple en pj.
    J’ai commencé à créer le bouton, le libellé et l’icône pour guider l’utilisateur.

    Ensuite si je comprends bien je dois me référer au tuto :
    Importer programmatiquement une pièce jointe dans un PDFet c’est là où je n’arrive pas à concrétiser mon action, la formule java script n’apporte pas grand chose…
    pouvez-vous m’aider…

    #63963
    Mary31
    Participant

    bonjour,Une petite variante pour choisir l’icône et sa couleur.@+ :bonjour:

    J’ai aussi ouvert le pdf de bebarth qui m’a l’air top mais quand je clique sur le champ « importer » j’ai l’image correspond au trombone mais il n’y pas d’autre fenêtre de type « parcourir » pour permettre à l’utilisateur d’aller chercher le doc à insérer…

    Je ne suis pas un pro… désolée mais je me dis qu’il n’y pas de raison de ne pas y arriver si la solution existe :priere: HELP ! :Ooops:

    #63964
    Merlin
    Maître des clés

    Si tu vois le trombone c’est que tu as déjà importé la pièce jointe.
    Il faut double-cliquer sur le trombone ou bien ouvrir le panneau « Pièces jointes » pour accéder à la pièce jointe.

    #63965
    Mary31
    Participant

    Merci Merlin, j’ai changé de version du logiciel et effectivement J’Y ARRIVE  :joker:

    #63966
    Merlin
    Maître des clés

    :extra:

    #63967
    Mary31
    Participant

    Bonjour,

    Mon formulaire a bien avancé. J’ai deux questions :

    – 1 sur un bouton d’importation de pj, j’ai indiqué le script suivant :

    var annot = this.addAnnot({
    page: this.pageNum,
    type: « FileAttachment »,
    author: « PJ 1 OK ! »,
    contents: « Double-clic pour ouvrir ou supprimer pour effacer »,
    attachIcon: « Paperclip »,
    point: [500,310],
    strokeColor: color.blue,
    });
    var annot = this.addAnnot({
    page: this.pageNum,
    type: « FileAttachment »,
    author: « PJ 2 OK ! »,
    contents: « Double-clic pour ouvrir ou supprimer pour effacer »,
    attachIcon: « Paperclip »,
    point: [510,310],
    strokeColor: color.blue,
    });
    var annot = this.addAnnot({
    page: this.pageNum,
    type: « FileAttachment »,
    author: « PJ 3 OK ! »,
    contents: « Double-clic pour ouvrir ou supprimer pour effacer »,
    attachIcon: « Paperclip »,
    point: [520,310],
    strokeColor: color.blue,
    });

    Je compte le dupliquer en 5 fois, afin que le trombone soit à chaque fois décalé sur le formulaire.
    En phase test, cela fonctionne sauf que la fenêtre parcourir reste ouverte et ne se ferme pas automatiquement. Du coup l’utilisateur va penser qu’il n’a pas correctement insérer la pj.
    J’imagine qu’il y a quelque chose à ajouter dans le code pour que la fenêtre se referme mais je ne suis pas développeur….

    Pourriez-vous me dire ???

    2- Je voulais savoir si en termes de signature vous auriez quelque chose de moins lourd que le bouton signature que propose acrobat reader
    Mais je vais d’abord recherche des sujets sur le forum

    Bonne journée !  :soleil:

    #63968
    Merlin
    Maître des clés

    Je compte le dupliquer en 5 fois

    5 x 5 = 25…
    Halte au feu  :geek:

    Il faut utiliser toujours le même script en utilisant deux variables :
    – une variable qui devrait être stockée dans un champ, celle qui compte le nombre de fois où une PJ a été importée. On la stocke dans un champ (masqué) parce-qu’elle doit être persistante (le document peut être fermé et rouvert sur un autre poste).
    – une variable volatile qui ajoute un décalage en fonction du nombre de PJ déjà importée.

    Exemple :

    if (this.getField(« compteur« ).value == 0) {var d = 0;}
    else if (this.getField(« compteur« ).value == 1) {var d = 5;}
    else if (this.getField(« compteur« ).value == 2) {var d = 10;}
    else if (this.getField(« compteur« ).value == 3) {var d = 15;}
    else if (this.getField(« compteur« ).value == 4) {var d = 20;}
    else if (this.getField(« compteur« ).value == 5) {var d = 25;}

    if (d > 20) {app.alert(« Il y a déjà 5 pièces jointes importées »)}
    else {
    var annot = this.addAnnot({
    page: this.pageNum,
    type: « FileAttachment »,
    author: « PJ 1 OK ! »,
    contents: « Double-clic pour ouvrir ou supprimer pour effacer »,
    attachIcon: « Paperclip »,
    point: [500 + d, 310 + d],
    strokeColor: color.blue,
    });
    this.getField(« compteur« ).value = this.getField(« compteur« ).value + 1;
    }

    #63969
    Merlin
    Maître des clés

    quelque chose de moins lourd que le bouton signature que propose Acrobat Reader

    Peux tu préciser de quel bouton tu parles et en quoi il est « lourd » ?
    :Euuuh:

    #63970
    bebarth
    Maître des clés

    bonjour,
    On peut aussi compter le nombre de pièces jointes déjà en place.

    Code:
    var nbPJ=0;
    this.syncAnnotScan();
    var annots=this.getAnnots();
    if (annots!=null) {
        for (var i=0; i        if (annots.type== »FileAttachment » && annots.attachIcon== »Paperclip » && annots.author.substr(0,2)== »PJ ») {
                annots.delay=true;
                annots.setProps({
                    author: « PJ « +(nbPJ+1)+ » OK ! »,
                    point: [500+(nbPJ*5), 310+(nbPJ*5)]
                });
                annots.delay=false;
                nbPJ++;
            }
        }
    }
    if (nbPJ==5) {
        app.alert(« Il y a déjà 5 pièces jointes importées »);
    } else {
        var annot = this.addAnnot({
            page: this.pageNum,
            type: « FileAttachment »,
            author: « PJ « +(nbPJ+1)+ » OK ! »,
            contents: « Double-clic pour ouvrir ou supprimer pour effacer »,
            attachIcon: « Paperclip »,
            point: [500+(nbPJ*5), 310+(nbPJ*5)],
            strokeColor: color.blue,
        });
    }

    Et il faut penser à les repositionner si une ou plusieurs ont été supprimées.
    @+
    :bonjour:

    #63971
    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

    #63972
    bebarth
    Maître des clés

    bonjour,

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

    Mais non ! On s’en fait toute une histoire pour pas grand chose…

    Code:
    this.exportDataObject({cName: « nomPJaOuvrir », nLaunch: 2});

    Je suis sûr que tu l’aurais trouvé tout seul !
    @+
    :bonjour:

    #63973
    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

  • Affichage de 25 réponses de 26 à 50 (sur un total de 68)
    • Vous devez être connecté pour répondre à ce sujet.