Donnez vie à vos documents numériques !
 

Importer une ou des pièces jointes à la suite du document PDF

abracadabraPDF Forums PDF – Général Importer une ou des pièces jointes à la suite du document PDF

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46648
    ALFB
    Membre

    Bonjour à tousNouveau sur le forum j’ai cherché (peut être mal) sur l’historique des messages mais je n’ai pas encore trouvé la solution.
    Je souhaite créer un bouton me permettant d’importer une ou des pièces jointes , à la suite de mon doc PDF.Si je clique sur ce bouton alors en important ma PJ j’aurais une page de plus.Merci pour votre aide

Affichage de 19 réponses de 1 à 19 (sur un total de 19)
  • Auteur
    Réponses
  • #69546
    bebarth
    Maître des clés

    bonjour,
    Il faudrait voir ce que tu veux faire exactement, mais je ne sais pas si c’est une excellente idée.
    Pourquoi ne pas créer des pages modèles et les ajouter selon le besoin ?
    https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_spawnPageFromTemplatebc-105&rhtocid=_6_1_8_23_1_104
    @+
    :bonjour:

    #69547
    ALFB
    Membre

    bonjour,
    Il faudrait voir ce que tu veux faire exactement, mais je ne sais pas si c’est une excellente idée.
    Pourquoi ne pas créer des pages modèles et les ajouter selon le besoin ?
    https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_spawnPageFromTemplatebc-105&rhtocid=_6_1_8_23_1_104
    @+
    :bonjour:

    Merci , grace à ce super forum j’ai effectivement trouvé comment ajouté une page grace à la page modèle, avec ce code:
    this.getTemplate(“page1”).spawn({nPage:this.numPages, bRename:true, bOverlay: false});
    Et dans la page modèle j’ai mis ce coode:event.target.buttonImportIcon();

    mais si j’importe un document de plusieurs page alors il n’y a que la première page qui s’ajoute. Les autres ne s’ajoute pas.
    Le but final étant de pouvoir ajouter un ou des  documents de 1 à n page à la suite de ma première page.Je continue mes recherches ou alors une ame charitable

    #69548
    bebarth
    Maître des clés
    #69549
    Merlin
    Maître des clés

    Bonjour

    La génération (spawn) de modèles (templates) ne peut se faire que page par page.
    S’il y en a plusieurs à générer en même temps l’astuce c’est de commencer par la dernière.
    :Smiley03:

    #69550
    ALFB
    Membre

    Les utilisateurs du formulaires doivent pouvoir attacher des pièces jointes à la suite de la première page, qui elle ne bouge pas.
    Ce qui va varier d’un utilisateur à l’autre c’est le nombre de pages à ajouter au document (de 1 à X pages).
    Est-ce que this.insertPages en est capable ? –> En lisant la doc j’ai l’impression qu’il faut spécifié l’adresse du document. OU est-ce possible de combiner this.insetPages avec l’ouverture d’un explorateur pour aller chercher le document que l’on souhaite.
    Idem pour spawn template: Je sèche un peu sur le fait de commencer par la fin. comment s’y prendre ?
    Mais je cherche encore

    #69551
    ALFB
    Membre

    Voici le formulaire en PJ.
    L’idée c’est en cliquant sur le bouton PJ dans la marge à droite, l’utilisateur puisse ajouter un document à la suite de la première page.

    #69552
    Merlin
    Maître des clés

    Les utilisateurs du formulaires doivent pouvoir attacher des pièces jointes à la suite de la première page, qui elle ne bouge pas.

    Ce n’est pas possible avec Acrobat Reader.
    Dans ton formulaire tu as astucieusement créé des pages modèles qui permettent d’importer des images (pages PDF) dans des boutons-champs image mais tu vas te heurter à plusieurs limites :
    – l’utilisateur devra importer son document page par page, sans se tromper dans l’ordre…
    – si le document de l’utilisateur contient 10 pages et pèse 2 Mo cela reviendra à importer : 10 X 2 Mo = 20 Mo dans le formulaire.
    – il est impossible de récupérer ou d’exporter les documents placés en tant qu’image dans un bouton-champ image !

    Je crois qu’il va falloir changer ton fusil d’épaule et proposer à l’utilisateur d’utiliser l’outil de commentaires “Pièce jointe” qui est justement fait pour ça.
    Ça ajoute le document importé dans le panneau des pièces jointes et non pas à la suite des pages du formulaire, mais c’est tellement plus user-friendly.

    Tuto complet et exemple ici : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/importer-programmatiquement-une-piece-jointe-dans-un-pdf/
    Voir aussi ce sujet qui complète le tuto : https://abracadabrapdf.net/forum/index.php?topic=3476

    FileAttachment01.jpg

    #69553
    ALFB
    Membre

    Merci,

    j’ai finalement opté pour 2 boutons: 1 pour ajouter une photo et l’autre pour attacher des poèces jointes.Je me suis basé sur les tuto que tu m’a suggéré.
    Je me heurte maintenant à deux pb:1: si j’ai plusieurs PJ, elles se chevauchent2: J’ai un bouton PJ par intervenant (voir dans la marge à droite): Lorsque la personne 1 clique sur PJ1, cela fonctionne la PJ est mise en dessous du bouton PJ1 mais lorsque la personne 2 clique sur PJ2, cela ramene aussi les PJ de la personne 1.Comment faire pour chaque PJ reste bien en place en dessous de “son” bouton ?Je mets le fichier en PJ

    #69554
    Merlin
    Maître des clés

    Toutes les réponses à tes questions se trouvent dans le (long) sujet dont j’ai posté l’URL ci-dessus, avec des exemples à télécharger  :geek:
    https://abracadabrapdf.net/forum/index.php/topic,3476.html

    #69555
    ALFB
    Membre

    OK merci mais il me reste un mystère, non trouvé dans le sujet:Si j’ai deux boutons d’importation de PJ à deux endroits différents sur mon formulaire. Je n’arrive pas à importer les PJ à proximité de chaque bouton. Les boutons appellent toutes les pj du doc, meme celles qui déjà ont été mises avant.Peut-on paramétrer, sur 2 boutons différents, l’import de PJ à 2 ou plusieurs endroits différents du formulaire ?

    #69556
    Merlin
    Maître des clés

    Les boutons appellent toutes les pj du doc, meme celles qui déjà ont été mises avant

    Je ne comprend pas cette phrase.  :Euuuh:

    Peut-on paramétrer, sur 2 boutons différents, l’import de PJ à 2 ou plusieurs endroits différents du formulaire ?

    Oui, en utilisant un script différent dans chaque bouton, la différence étant les coordonnées de placement des PJ.
    C’est à dire la ligne : point: [400,500],

    #69557
    ALFB
    Membre

    Je ne comprend pas cette phrase.  :Euuuh:

    Oui, en utilisant un script différent dans chaque bouton, la différence étant les coordonnées de placement des PJ.
    C’est à dire la ligne : point: [400,500],

    L’exemple que je mets en pièce jointe est tres parlant. Tu peux tester en important une PJ avec le bouton PJ1 (dans la marge à droite) et ensuite avec le bouton PJ2. Tu verras que la pièce jointe 1 sera déplacée vers la PJ2 et ainsi de suite à chaque fois que l’on change de bouton PJ.

    #69558
    Merlin
    Maître des clés

    Supprime cette ligne dans les scripts des boutons, c’est elle qui déplace les icônes des PJ déjà importées :

    Code:
    annots.point =[aRect[0]-1*(j), aRect[1]-15];
    #69559
    ALFB
    Membre

    Supprime cette ligne dans les scripts des boutons, c’est elle qui déplace les icônes des PJ déjà importées :

    Code:
    annots.point =[aRect[0]-1*(j), aRect[1]-15];

    En la supprimant, la PJ ne s’importe plus. :mur: Par quoi je dois remplacer ce bout de code pour que les PJ se mettent à l’endroit voulu et quelles ne se déplacent pas.
    Oui je sais je suis mauvais, j’y arrive en tatillonant et en testant  :Smiley08:

    #69560
    Merlin
    Maître des clés

    Moi je trouve que ça fonctionne plutôt bien, j’en ai même profité pour modifier la première ligne du script de façon à avoir exactement le même script dans chaque bouton.
    Exemple ci-joint.
    :Smiley03:

    #69561
    ALFB
    Membre

    Moi je trouve que ça fonctionne plutôt bien, j’en ai même profité pour modifier la première ligne du script de façon à avoir exactement le même script dans chaque bouton.
    Exemple ci-joint.
    :Smiley03:

    C’est parfait,Me reste plus qu’à trouver comment mettre les PJ les unes en dessous des autres dans la marge. Ca doit être dans les parametre aRectMerci

    #69562
    Merlin
    Maître des clés

    Il y a deux approches, soit les placer en fonction de leur ordre d’arrivée (donné par la variable j), soit les placer sous le bouton cliqué (ce qui est déjà le cas) en modifiant le décalage par rapport aux coordonnées du bouton.

    #69563
    ALFB
    Membre

    Il y a deux approches, soit les placer en fonction de leur ordre d’arrivée (donné par la variable j), soit les placer sous le bouton cliqué (ce qui est déjà le cas) en modifiant le décalage par rapport aux coordonnées du bouton.

    Oui je vais les placer sous le bouton cliquer. J’ai réussi à les positionner comme je voulais (les unes en dessous des autres).Par contre, ci-j’ai 2 PJ sous le premier bouton, la PJ au second bouton se positionne en troisième place et non en dessous du bouton (je ne dois pas être tres clair)

    Code:
    var aRect = event.target.rect;
    this.syncAnnotScan();
    annots = this.getAnnots();
    var j=0;
    for (var i = 0; i < annots.length; i++) {
    if (annots.type==”FileAttachment”) {
    var j=j+1;
    // annots.point =[aRect[0]-1*(j), aRect[1]-15];
    }
    }
    if (j>4) {
    {app.alert({cMsg:”Vous ne pouvez importer plus de 5 pièces jointes.”, nIcon:2});}
    } else {
    var annot = this.addAnnot({
    page: this.pageNum,
    type: “FileAttachment”,
    contents: “Double-clic pour ouvrir la piu00E8ce jointe”,
    attachIcon: “Paperclip”,
    point: [aRect[0]-(0*(j+1)), aRect[3]-(18*(j))],
    strokeColor: color.blue,
    });
    annot.contents = annot.attachment.name;
    }

    Il faudrait que je crée une variable qui compte le nombre de PJ (exemple nbpj) et soustraire j-nbpj en lieu et place de j dans le code point:…

    #69564
    bebarth
    Maître des clés

    bonjour,

    Il faudrait que je crée une variable qui compte le nombre de PJ (exemple nbpj) et soustraire j-nbpj en lieu et place de j dans le code point:…

    Il me semble que c’est ce j’avais fait dans l’exemple que j’avais partagé dans l’autre sujet initial !
    @+
    :bonjour:

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