Personnalisation d'un bouton permettant d'importer une pièce jointe  (Lu 2655 fois) Partager ce sujet Imprimer

1 B


célé  16 mai 2018 : 22:55

Bonjour,
J'utilise le tuto https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/importer-programmatiquement-une-piece-jointe-dans-un-pdf/ pour faire un bouton permettant d'importer une pièce jointe dans un formulaire pdf. Je souhaiterais le personnaliser en faisant apparaître, au survol de l'épingle, non pas l'auteur mais le nom du fichier joint. Est-ce possible et comment ?
Merci pour votre aide !

IP archivée


Merlin  17 mai 2018 : 00:38

Bonjour.


Il faut ajouter cette ligne après le script qui est donné dans le chapitre 2 :

annot.author = annot.attachment.name;

 :Smiley15:

IP archivée


célé  17 mai 2018 : 01:42

Extra !!  :bravo:

IP archivée


célé  17 mai 2018 : 21:58

Bonjour,
Pour continuer à personnaliser ce bouton d'import de PJ, je souhaiterais pouvoir facilement définir la position de l'épingle:
- pour l'instant je tâtonne pas à pas mais c'est laborieux, je suppose qu'il existe une méthode plus simple pour obtenir la position en px d'un point donné dans la page...
- autre idée: pourrait-on définir que l'épingle s'affiche systématiquement à gauche du bouton par exemple ?
Merci !

IP archivée


célé  17 mai 2018 : 22:26

Re-bonjour,
Je précise ma question précédente car la 2e solution (définir la position de l'épingle par rapport au bouton) serait plus adaptée à ma situation : car je crée le pdf avec Foxit Phantom, et quand je l'ouvre dans Acrobat DC pour tester le remplissage du formulaire par un utilisateur, je vois que la position des épingles n'est pas la même que celle que j'avais calibrée dans Foxit... :(
Merci si vous avez une explication à cela et une solution à me proposer !

IP archivée


bebarth  18 mai 2018 : 11:22

bonjour,
Voici un exemple pour faire apparaitre l'épingle (ou autre) à la gauche du bouton.
Attention, le point à indiquer pour la position de l'icône est le supérieur gauche, et la taille de l'icône ne varie pas en fonction de l'affichage.
Il faudra certainement ajuster la position Y en fonction de la hauteur du bouton.
@+
 :bonjour:

IP archivée


Merlin  19 mai 2018 : 10:47

Bonjour.


Il existe une autre méthode : ouvrir le panneau des pièces jointes (à l'ouverture du document ou via JavaScript) et placer les icônes en dehors de la page pour que l'utilisateur ne les voit pas.


L'avantage du panneau c'est qu'il n'y a pas besoin de réinventer la roue avec JavaScript, l'utilisateur a tout sous les yeux.


 :Smiley15:

IP archivée


Merlin  19 mai 2018 : 10:50

quand je l'ouvre dans Acrobat DC pour tester le remplissage du formulaire par un utilisateur, je vois que la position des épingles n'est pas la même que celle que j'avais calibrée dans Foxit
Avec Acrobat le point zéro/zéro se trouve en bas à gauche de la page, Foxit compte peut être différemment.

IP archivée


célé  19 mai 2018 : 10:54

Un grand merci Bebarth ! Je n'ai pas encore eu le temps de le tester dans mon formulaire mais c'est tout à fait la fonction que je cherchais ! @+

IP archivée


bebarth  20 mai 2018 : 18:54

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

IP archivée


Merlin  20 mai 2018 : 23:56

Pour peaufiner il ne reste plus qu'à ajouter un compteur :

- soit pour empêcher l'importation de plus d'une seule pièce jointe,

- soit pour calculer le décalage spacial nécessaire pour que les icônes ne se chevauchent pas quand on importe plusieurs pièces jointes.

IP archivée


célé  22 mai 2018 : 00:04

Hé hé, on ne les arrête jamais ^^

IP archivée


Merlin  22 mai 2018 : 10:55

  :Smiley03:

IP archivée


bebarth  22 mai 2018 : 13:16

bonjour,
Voilà, j'ai un peu peaufiné le sujet avec un maximum de 5 pièces jointes !
On pourrait encore l'améliorer et vérifier que les icônes ne soient pas hors pages...
@+
 :bonjour:

IP archivée


Merlin  22 mai 2018 : 14:01

La boucle est bouclée, j'ai intégré un lien vers ce sujet au tuto mentionné dans la question : https://www.abracadabrapdf.net/?p=4295
(Voir 4.)
La communauté vous remercie.

 :bonjour: 

IP archivée


PhDCus  04 juin 2018 : 11:53

Bonjour à tous,

merci pour cette contribution, c'est très pratique.
Savez-vous s'il est possible de diminuer la taille de l'icône "pièce jointe" insérée ?

Merci pour votre retour.

IP archivée


Merlin  04 juin 2018 : 12:04

Savez-vous s'il est possible de diminuer la taille de l'icône "pièce jointe" insérée ?
Non car la taille de l'icône est indépendante du zoom de l'affichage.C'est pour ça qu'il peut être astucieux de placer les icônes en dehors de la page et d'utiliser (afficher/masquer) un bouton contenant une (petite) icône pour que l'utilisateur visualise la PJ.

Ça évite aussi de devoir calculer le placement exact de l'icône, puisque si on fait apparaitre un bouton il est forcément déjà pré-positionné.
 :Smiley15:

IP archivée


PhDCus  04 juin 2018 : 12:16

je viens de trouver un bout de code sur Internet que j'ai modifié :

var r = annots.rect;
r[2] = r[2]-5;
r[3] = r[3]-5;
annots.setProps({rect: r})

Je l'ai intégré (comme j'ai pu, à l'ancienne...), la taille diminue, mais seulement après avoir recliquer sur le bouton...

IP archivée


bebarth  04 juin 2018 : 14:31

bonjour,
C'est tout à fait exact. Les coordonnées r[0], r[1], r[2], r[3] pour l'icône sont semblables à celles indiquées pour le champ.
Pour avoir la largeur de l'icône il faut donc faire r[2]-r[0] et pour avoir la hauteur r[1]-r[3] (le 0 est en bas à gauche).
De tête, je ne connais pas exactement la largeur des icônes (il me semble qu'elle n'est pas identique pour tous), il faut donc faire attention de ne pas trop réduire !

Si l'on veut placer l'icône à une position exacte par rapport au champ, j'avais écris un petit script dont je joint l'action pour connaitre exactement les coordonnées d'un champ.
@+
 :bonjour:

IP archivée


PhDCus  05 juin 2018 : 07:31

Merci pour le script !

Vous avez une idée pour que la réduction de l'icône se fasse sans recliquer sur le bouton ?

IP archivée


bebarth  05 juin 2018 : 12:08

bonjour,
Il faut mettre tes lignes en fin de script, sauf qu'avant il faut "re-scanner" les annotations.
Sauf qu'avec r[2]=r[2]-5 et r[3]=r[3]-5, l'icône est diminué à chaque fois qu'on en rajoute un autre...
Il faudrait donc lui donner directement sa taille avec r[2]=r[0]+largeur et r[3]=r[1]+hauteur (ici c'est bien un plus, car...)
Les coordonnées r[0], r[1], r[2], r[3] pour l'icône sont semblables à celles indiquées pour le champ.
...ça c'est faut ! Les coordonnées des l'icônes sont définis par le point inférieur gauche et le point supérieur droit (les champs sont définis par le point supérieur gauche et le point inférieur droit... il doit bien y avoir une explication mais je ne la connais pas).

J'ai vérifié les tailles des icônes et elles ne sont effectivement pas identiques :
Tombone = 7 x 17 pts
Punaise =  20 x 16 pts
Graphique = 20 x 20 pts
Etiquette = 20 x 16 pts
Attention donc de redéfinir les tailles proportionnellement par exemple r[2]=r[0]+10 et r[3]=r[1]+8 pour une punaise de moitié de taille originale.
Ci-joint le dernier fichier avec affichage dans la console des dimensions.
Dans ce fichier il faudra évidemment retirer les barres obliques et indiquer la largeur et la hauteur souhaitées.
//r[2] = r[0]+largeurSouhaitee;
//r[3] = r[1]+hauteurSouhaitee;

@+
 :bonjour:

IP archivée


PhDCus  05 juin 2018 : 13:46

Impeccable, merci !

le temps que je vois le message, j'ai trouvé cette solution.

IP archivée


bebarth  05 juin 2018 : 14:24

Ça marche, mais... ça manque d'homomorphisme !
Attention donc de redéfinir les tailles proportionnellement par exemple r[2]=r[0]+10 et r[3]=r[1]+8 pour une punaise de moitié de taille originale.
A mon avis, tu devrais écrire :
//...pour un icône à l'échelle 1/2
r[2] = r[0]+(r[2]-r[0])/2;
r[3] = r[1]+(r[3]-r[1])/2;
@+
 :bonjour:

IP archivée


PhDCus  05 juin 2018 : 16:21

Ca marche nickel, merci pour ton aide !

IP archivée


daninet  12 septembre 2019 : 17:03

È possibile utilizzare JavaScript per importare i dati dell'allegato?
Con Acrobat Reader DC ?
grazie
 :bonjour:
https://abracadabrapdf.net/forum/index.php/topic,3758.0.html

IP archivée


Merlin  12 septembre 2019 : 17:41


IP archivée


daninet  12 septembre 2019 : 18:49


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:

IP archivée


Merlin  12 septembre 2019 : 19:19

Exemple ci-joint.
 :Smiley03:

IP archivée


daninet  13 septembre 2019 : 08:21

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 ?

IP archivée


bebarth  13 septembre 2019 : 10:07

bonjour,
Dans mon exemple, j'importe les données de la pièce jointe sans la nommer avec :
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 :
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 :
var p = this.getDataObject("FDF");@+
 :bonjour:

IP archivée


daninet  13 septembre 2019 : 10:32

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


IP archivée


Merlin  13 septembre 2019 : 10:37

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:


IP archivée


daninet  13 septembre 2019 : 12:48

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





IP archivée


bebarth  13 septembre 2019 : 18:25

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 :
console.show();
console.clear();
var d = this.dataObjects;
for (var i = 0; i < d.length; i++) console.println("Data Object[" + i + "]=" + d[i].name);
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:

IP archivée


bebarth  13 septembre 2019 : 18:44

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

IP archivée


Merlin  14 septembre 2019 : 10:49

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).

IP archivée


bebarth  16 septembre 2019 : 08:04

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

IP archivée


daninet  16 septembre 2019 : 08:27

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

IP archivée


Merlin  16 septembre 2019 : 09:01

 :bravo:

IP archivée