abracadabraPDF › Forums › PDF – Général › Conserver l’affichage ou le masquage des calques avec Reader.
- Ce sujet est vide.
-
CréateurSujet
-
29 novembre 2010 à 10:57 #43864
Yorigami
MembreBonjour à toutes et à tous.
Je suis à la recherche d’une solution pour permettre aux opératrices d’accueil de mon entreprise, d’enregistrer un PDF sous Reader (fonction étendue depuis Acrobat Pro) en gardant visibles certains calques visibles, d’autres masqués suivant le profil du client. Cette opération permettrait d’envoyer le PDF profilé, juste les informations qui concernent le client dessus et laisserait à l’opératrice un document de base avec toutes les données.
Je pensais que l’extension des fonctions depuis Acrobat Pro autorisée cela. Mais je vois que ce n’est pas le cas.
Entrevoyez-vous une solution ?Merci pour votre aide
-
CréateurSujet
-
AuteurRéponses
-
29 novembre 2010 à 21:09 #51174
Merlin
Maître des clésSalut,
non, pas de solution en vue avec les calques, par contre cela devrait être possible en affichant/masquant des champs de formulaire.
T’ai-je déjà parlé de la « Convention de nomage des champs de formulaire » de Adobe, et de l’importance du point dans les noms de champs ?
:idee:??:
30 novembre 2010 à 07:00 #51175Yorigami
MembreBonjour Merlin,
oui j’ai bien noté ces contraintes de nom de champs. Malheureusement, ça ne fonctionne pas non plus. L’enregistrement ramène à l’affichage de départ comme si le fichier était ouvert la première fois. Un autre problème est que le principe du formulaire ne semble pas pouvoir cumuler les calques en affichage. C’est chaque fois l’état d’affichage qui est applicable. Ça rend mon projet impossible, car j’aurais au bas mot 20 calques. Certains profils demandent 3 calques, d’autre 18 le nombre de boutons serait énorme pour proposer toutes les combinaisons possibles, et ce serait ingérable par les hôtesses.
J’avais pensé à une fonction pour exporter en JPG le cumul des calques visibles ou une fonction comme aplatir les calques en enregistrement sous, mais je n’ai rien trouvé de tel.
Dommage, l’idée aurait bien arrangé le service accueil.Merci pour ta réponse et bonne journée.
30 novembre 2010 à 10:40 #51176Merlin
Maître des clésEst-ce que tu peux m’envoyer un exemple de ce formulaire en m’indiquant sa base de fonctionnement désiré pour que je puisse m’en faire une meilleure idée ?
30 novembre 2010 à 12:27 #51177Yorigami
MembreJe t’envoie ça.
Merci de te pencher dessus. :soleil:
30 novembre 2010 à 13:01 #51178Yorigami
MembreVoici le lien Plan PDF. Pour chaque affichage, je crée un bouton. Là il n’y a que 5 calques, mais déjà c’est compliqué, sur la version finale il y en aurait plus de 20. Une trop grande quantité de combinaisons et je n’ai pas trouvé comment conserver une combinaison d’affichage sous Reader. :Euuuh:
2 décembre 2010 à 17:44 #51179Merlin
Maître des clésBon…
Je ne t’avais pas oublié, ça fait 2 jours que je pense à cette affaire mais je ne vois toujours pas de solution avec Adobe Reader.
On ne peut pas enregistrer la visibilité des calques, et ce ne serait que très difficilement gérable avec des champs de formulaire…
:Euuuh: :doute::joker:
3 décembre 2010 à 09:38 #51180alex
ParticipantOn pourrait peut-être résoudre ça par un petit JavaScript sur le principe suivant:
Lors de l’enregistrement du document, un champ caché embarquerait un code correspondant à la combinaison des calques à afficher.
Lors de l’ouverture du document, un script d’ouverture activerait les calques à afficher et désactiverait les autres en fonction de ce code.
De plus, pour éviter la consultation pirate avec d’autres « viewers » pdf tels que Aperçu sur Mac, on ajouterait un calque opaque activé par défaut et désactivé par le script d’ouverture. En effet la plupart des « viewers » ignorent les objets fields et il ne faut pas espérer les utiliser comme masques.Je propose tout ça au conditionnel, ça demande à être testé, si ça vous intéresse je fais une maquette…
3 décembre 2010 à 12:06 #51181Merlin
Maître des clésSuper Alex,
je n’y avais pas pensé, comme quoi plusieurs cerveaux valent mieux qu’un !
As-tu téléchargé le fichier de Yorigami ?3 décembre 2010 à 13:53 #51182alex
ParticipantSalut Merlin!
Oui, j’ai chargé ce fichier et je vais faire un essai… d’ici lundi j’espère.
A+4 décembre 2010 à 18:32 #51183alex
ParticipantJe cherche un moyen de vous mettre à disposition le document sous sa forme utilisable sous Adobe Reader (8,9,X), les fonctionnalités du Reader étant étendues.
Le bouton « Tout » affiche tous les calques.
Le bouton « Rien » les masque.
Les calques sont verrouillés et ne peuvent être manipulés à la main.
Les autres boutons permettent de sélectionner les calques à afficher. Le système fonctionne quelque soit le nombre de calques, il suffira de recopier ces boutons en leur attribuant le nom du calque.
Le bouton Masquer les boutons fait disparaître les boutons et le champ de code. Ainsi, le document envoyé sera propre.La procédure:
1-L’opératrice, à partir du MASTER joint, choisit les calques du client.
Quand le document est prêt, elle masque boutons (pression du bouton rouge).
Elle enregistre son document (sous un autre nom! Sinon, il faut reprendre l’original) et l’envoie.2-Le destinataire l’ouvre sous Adobe Reader, dans ses Préférences (Edition>Préférences>JavaScript) les cases à cocher « Activer Acrobat JavaScript » et « Autoriser les privilèges d’exécution JavaScript d’éléments de menu » sont cochées.
Seuls les calques présélectionnés apparaissent.Explications détaillées et code complet pour bientôt.
6 décembre 2010 à 07:04 #51184Yorigami
MembreMerci Merlin et merci Alex de vous être penchés sur mon problème.
Je suis très curieux de voir votre solution. :idee:6 décembre 2010 à 11:11 #51185alex
ParticipantProcédure de création du document MASTER (sous Acrobat 8 ou 9 de préférence)
Document Acrobat d’une seule page contenant des calques.
Boutons obligatoires:
« Tout », »Rien », »Masquer les boutons » ainsi qu’un bouton par calque à manipuler.
Champ obligatoire « Code » à placer dans un coin.Après création de votre MASTER:
1-protégez-le en modification par mot de passe.
2-Activez les fonctionnalités Reader Extensions pour les formulaires (NB:ne fonctionne pas avec Acrobat X, utiliser Acrobat 9)Procédure à suivre par l’opératrice: voir post ci-dessus.
Fonction associée à chaque bouton de calque (nom de calque identique au nom du bouton):
function GestionCalques()
{
console.clear();
//Activation du calque…
ocg=this.getOCGs(this.pageNum);
indexCalque=0;
while(indexCalque{
if(ocg[indexCalque].name==this.event.target.name)
{
ocg[indexCalque].state=true;
//app.alert(« Activation du calque correspondant au bouton sollicitu00E9:r »+this.event.target.name,3);
}
indexCalque=indexCalque+1;
}
//Analyse de la configuration des calques et élaboration du code.
console.println(« Analyse de la configuration des « +indexCalque+ » calques et u00E9laboration du code. »)
ocg=this.getOCGs(this.pageNum);
indexCalque=0;
code= » »;
TexteAlerte= »Calques activu00E9s suite à ajout « »+this.event.target.name+ » » »;
while(indexCalque{
if(ocg[indexCalque].state)
{
TexteAlerte=TexteAlerte+ »r* »+indexCalque+ »-« +ocg[indexCalque].name;
code=code+ »1″;
}
else
{
code=code+ »0″;
}
indexCalque=indexCalque+1;
}
if(this.getField(« Code »))
{
this.getField(« Code »).value=code;
app.alert(TexteAlerte+ »rCode de la configuration des calques:r » »+this.getField(« Code »).valueAsString+ » ». »,3)
}
else
{
app.alert(« Le champ de code manque!rIl faut le créer… »,1)
}
//console.show();
}Fonction associée aux deux boutons « Tout » et « Rien »:
function ToutRien()
{
//Affichage ou masquage de tous les calques.
console.clear();
ocg=this.getOCGs(this.pageNum);
if(this.event.target.name== »Tout »){statut=true;}else{statut=false;}
indexCalque=0;
code= » »;
while(indexCalque{
ocg[indexCalque].state=statut;
if(statut){code=code+ »1″;}else{code=code+ »0″;};
indexCalque=indexCalque+1;
}
this.getField(« Code »).value=code;
console.println(« Code: « +this.getField(« Code »).value+ ». »);
console.println(« Les « +indexCalque+ » calques sont de statut « +statut+ ». »);
}Fonction associée au bouton « Masquer les boutons »:
function MasquerBoutons()
{
statut=false;
reponse=app.alert(« Masquer les boutons?rAttention, cette opération est irréversible.rAssurez-vous de conserver un original de ce document. »,2,2)
if(reponse==4){statut=true;}
indexChamp=0;
while(indexChamp{
nom=this.getNthFieldName(indexChamp);
ff=this.getField(nom);
if(ff.type== »button »){ff.hidden=statut;}
indexChamp=indexChamp+1;
}
this.getField(« Code »).hidden=statut;
this.getField(« Code »).readonly=true;
}Fonction d’ouverture de la page du document:
function Ouverture()
{//Activation des calques en fonction du code
ocg=this.getOCGs(this.pageNum);
code=this.getField(« Code »).valueAsString;
indexCalque=0;
while(indexCalque{
statut=code.substring(indexCalque,(indexCalque+1));
console.println(« Rang « +indexCalque+ » statut: »+statut)
if(statut==1)
{
ocg[indexCalque].state=true;
}
else
{
ocg[indexCalque].state=false;
}
indexCalque=indexCalque+1;
}
}Extension de ce système à plusieurs pages, gestion interactive des calques par les destinataires…. Tout est possible!
6 décembre 2010 à 11:20 #51186Yorigami
Membre😮 impressionnant !
Je vais essayer de finaliser mon fichier à partir de vos explications.
Merci encore pour votre aide. :soleil:
6 décembre 2010 à 14:21 #51187Yorigami
MembreBon ben après plusieurs essais, je patauge complet.
J’ai ma page. Une dizaine de calques.
Je passe par clic droit sur chaque propriété de calque, je les masques et les verrouilles.
Je crées les boutons « TOUT » « RIEN » « Code » « Effacer et aplatir » plus mes calques et je copie colle les codes indiqués plus haut.Question 1/ comment dois-je coller le code qui doit-être se lancer à l’ouverture du fichier ? Est-ce dans les propriétés du document ?J’ai trouvé, c’est dans les propriété de la page.C’était une mauvaise manip de ma part.
Question 2/ une fois les premières opérations faites, si j’enregistre, mon PDF voit tous les calques (alors qu’ils sont masqués par leurs propriétés) et je ne peux plus accéder à la boite de dialogue des préférences de calques qui reste gris et non cliquable.Si je teste les boutons, rien ne se passe.
Chose curieuse également, sur le fichier que vous m’avez transmis par email ce matin, le code JS n’est visible que sur la première ligne. Mais le fichier se comporte très bien.Je continue à chercher ou je me trompe dans la mise en place du fichier.
6 décembre 2010 à 16:16 #51188alex
ParticipantOops!
1-Le champ « Code » est un champ texte. L’élaboration du code et son remplissage se font automatiquement par sélection des calques.
2-Les boutons de calque embarquent une simple ligne JavaScript :
GestionCalques();
Les boutons « Tout » et « Rien » embarquent une seule ligne de code:
ToutRien();
Le bouton « Masquer les boutons » embarque une seule ligne de code:
MasquerBoutons();3-Les scripts des fonctions GestionCalques(), ToutRien(), Ouverture(), MasquerBoutons() complets sont situés au niveau document et appelés par les actions sur les boutons. Il ne faut pas les recopier dans les boutons!
Explication suffisante?
6 décembre 2010 à 16:59 #51189Yorigami
MembreOui, je pense que j’ai pigé,
je m’y remets demain matin.Merci pour le temps passé et ces explications.
[édit] « 3-Les scripts des fonctions GestionCalques(), ToutRien(), Ouverture(), MasquerBoutons() complets sont situés au niveau document et appelés par les actions sur les boutons. Il ne faut pas les recopier dans les boutons! »
L’accès à ce niveau passe par quel chemin ? C’est par le menu document ?
Désolé, mais je suis perdu sur l’implantation du code à ce niveau.6 décembre 2010 à 17:41 #51190Merlin
Maître des clésLes scripts de document se trouvent dans : menu Options Avancées > Traitement du document > Scripts JavaScript.
6 décembre 2010 à 19:23 #51191Yorigami
MembreMerci Merlin,
cette fois j’ai tout compris.Merci pour votre aide. Je finalise le fichier demain. :soleil:
7 décembre 2010 à 10:35 #51192Yorigami
MembreJe viens de finir la mise en place du fichier et c’est du caviar. :bravo:
Quand on a pigé le principe :siffle:, ça va très vite et c’est très pratique à paramétrer en quelques minutes grâce à votre code.Merci beaucoup pour votre aide et pour le temps que vous m’avez consacré.
7 décembre 2010 à 11:08 #51193alex
ParticipantSur ce même principe qui consiste à stocker un code caché qui, relu à l’ouverture du document, définira sa présentation future , on peut imaginer beaucoup d’autres applications. A vous d’en imaginer d’autres… Comme indiqué au début, je vous conseille d’ajouter un calque opaque qui interdira toute lecture à l’aide d’un viewer autre que Adobe Reader (tels qu’Aperçu sur Mac ou PDF Opener et autres couteaux suisses proposés sur le NET)….
7 décembre 2010 à 18:43 #51194Merlin
Maître des clésBien, moi je viens de prendre une grande leçon, comme souvent avec Alex.
Concernant le calque opaque je ne le crois pas nécessaire dans ce cas particulier car l’usage du PDF de Yorigami se fait en interne dans sa société.
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.