abracadabraPDF › Forums › PDF – Général › Afficher / Masquer des pages dans un fichier
- Ce sujet est vide.
-
CréateurSujet
-
2 mars 2018 à 15:47 #45816nicoricherMembre
Bonjour à tous,
Novice en Javascript, je cherche à reproduire ce cas de figure :
Faire apparaitre des pages existantes (mais masquée dans leur état initial) en cliquant sur une case à cocher.
Le fait de sélectionner une page la fait apparaître dans la structure au bon endroit…Cela va certainement vous paraitre basique, mais je ne suis pas familier avec le javascript.
Toutes les pages sont prêtes dans In-design…
Je cherche une solution rapide, un coup de main… ou une personne souhaitant collaborer avec moi sur ce projet (nn nn nn nn nn)
Bien à vous
Nicolas -
CréateurSujet
-
AuteurRéponses
-
2 mars 2018 à 18:18 #63528MerlinMaître des clés
Bonjour et bienvenue.
Je crois que ce tuto a été fait pour toi : https://www.abracadabrapdf.net/?p=3736
:Smiley15:2 mars 2018 à 19:29 #63529nicoricherMembreBonsoir
et merci du tuto que j’ai adapté comme suit pour ma case à cocher :console.clear();
if(this.event.target.isBoxChecked(0))
{
this.getTemplate(“Nom-du-modele”).hidden = false;
} else {
this.getTemplate(“Nom-du-modele”).hidden = true;
}Cela fonctionne ! Mais, affiche directement la page “créée”, alors que je souhaiterai rester sur ma page “Sommaire” pour effectuer un/des autres choix du même type.
Pouvez-vous me donner une indication ?
Merci
Nicolas3 mars 2018 à 09:36 #63530MerlinMaître des clésAjoute ceci à la fin du script pour revenir à la première page (page zéro en JavaScript).
Code:this.pageNum = 0;:Smiley15:
3 mars 2018 à 11:05 #63531bebarthMaître des clésbonjour,
…et si les cases à cocher ne son pas en page 1 mais que tu ne connais pas le numéro de la page, avant le script tu ajoutes :Code:var pg = this.pageNum;et après le script :
Code:this.pageNum = pg;@+
:bonjour:3 mars 2018 à 17:48 #63532bebarthMaître des clésre-bonjour,
Je n’avais pas regarder la copie d’écran et apparemment les cases à cocher sont bien en page 1… mais bon, maintenant tu sauras comment aller sur une autre page en javascript !
Ce n’est peut-être pas très “prudent” de laisser un numéro de téléphone sur un post !
Si tu cherches de l’aide pour ton projet, pose tes problèmes sur différents posts du forum. Lorsque ça devient un peu plus compliqué, il est préférable de partager un fichier exemple. C’est généralement plus simple à comprendre.
Tu peux également me contacter par Messagerie Personnelle si tu penses ne pas pouvoir/devoir partager des informations trop confidentielles. Je verrai ce que je peux faire pour t’aider.
@+
:bonjour:3 mars 2018 à 21:14 #63533MerlinMaître des clésCe n’est peut-être pas très “prudent” de laisser un numéro de téléphone sur un post !
Je n’avais pas fait attention, c’est corrigé.
5 mars 2018 à 18:12 #63534nicoricherMembreMerci pour toutes ces infos, qui m’ont été très utiles.
Je cherche maintenant à faire apparaitre ces pages toujours dans le même ordre, et au même emplacement, à l’instar de votre document “Generation-pages-modeles.pdf” dont voici une capture d’écran.
En fait c’est exactement cela que je cherche à réaliser.
J’aurai voulu apprendre en examinant votre code (sans vous solliciter :Ooops:), mais le document est protégé…
Comment m’en sortir ? avec un PageNum; ?
Merci de vos conseils.5 mars 2018 à 18:26 #63535nicoricherMembreJ’ai tenté ce bout de code :
this.spawnPageFromTemplate(“nom-modele”, this.numPages-4, false, false);
Mais ça ne fonctionne pas comme il faut !5 mars 2018 à 18:52 #63536bebarthMaître des clésbonjour,
C’est typiquement l’exemple où il serait bon de partager un fichier pour faciliter l’explication.
Regarde cette page :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_spawnPageFromTemplatebc-105&rhtocid=_6_1_8_23_1_104
@+
:bonjour:5 mars 2018 à 21:53 #63537MerlinMaître des clésJe cherche maintenant à faire apparaitre ces pages toujours dans le même ordre
Le secret est simple, à chaque fois qu’on clique sur un bouton ça supprime toutes les pages et ça re-génère un jeu complet (déterminé par les cases qui sont cochées) de pages qui arrivent donc forcément dans le bon ordre et sans prise de tête.
S’amuser à ajouter ou à supprimer des pages intercalaires, très peu pour moi.
:Smiley15:J’aurai voulu apprendre en examinant votre code (sans vous solliciter :Ooops: ), mais le document est protégé…
5 mars 2018 à 23:11 #63538nicoricherMembreBonsoir,
voici ou j’en suis (voir mon fichier exemple-test joint)…
Ajout et suppression de pages fonctionnent seulement si je les créées et les suppriment dans le bon ordre. :mur:
…
Le graphiste que je suis, va essayer de percer le secret de Merlin, même si je n’ai vraiment pas l’esprit d’un “magicien”.
Merci pour le “unlock”(…Pas fait par déontologie…)6 mars 2018 à 00:33 #63539MerlinMaître des clésAjout et suppression de pages fonctionnent seulement si je les créées et les suppriment dans le bon ordre.
Ben heu…
C’est le but, non ?
:Euuuh:6 mars 2018 à 00:35 #63540MerlinMaître des clésMerci pour le “unlock”(…Pas fait par déontologie…)
Quand je ne veux pas qu’on accède à mes fichiers, soit je les protège vraiment, soit je ne les met pas en ligne, soit les deux.
:Smiley15:6 mars 2018 à 00:53 #63541nicoricherMembreMerlin,Je me suis certainement mal exprimé ! (mais oui idéalement “c’est le but”)
A partir de mon exemple (fichier joint précédement) :
Je créé slide 1 (> ok elle se positionne bien après la slide 3 “Avertissement”)
Je créé slide 2 (> ok elle prend la suite)
Je décide de ne pas créé de slide 3 (car pas besoin, imaginons dans le cadre d’une “démo” par exemple)
Je créé slide 4 (> elle devrait se positionner après la slide 2 – car la 3 est absente…)—
Autre exemple :
Imaginons une autre démo : je coche 4 et 5 (elles se positionnent à la fin > alors que je voudrai garder mes 2 slides de conclusion en fin de fichier)
Et si je décoche 4 (car admettons qu’au final j’ai fait une erreur ou plus besoin, et bien c’est la 5 – la dernière qui s’en va)
—
Alors oui je sais ! ça correspond au code que j’ai écri avec les N° de page +1, etc…
Mais…
je n’y arrive vraiment pas (-> prob de logique et de connaissances limitées en prog…)
—Dernier point j’ai décrypté le fichier d’exemple, je tente une adaptation, mais j’y vais vraiment à tâtons.
6 mars 2018 à 07:44 #63542bebarthMaître des clésbonjour,
Ce qui ne va pas dans tes scripts, c’est qu’on ne peut pas indiquer comme ça (avec nPage) où il faut insérer le “template” sans tenir compte des “slides” précédents !
Ça marche avec le premier slide parce comme l’indique “premier” il n’y en a pas d’autre avant, mais pour les autres cela fonctionne uniquement si les slides précédents sont affichés.
Dans le fichier que je te propose, chaque slide possède une variable qui indique s’il est affiché ou pas. Ensuite, pour insérer le template on aditionne les variables des slide déjà affichés.
Il y avait déjà eu un post similaire à ce sujet : https://abracadabrapdf.net/forum/index.php/topic,3173.msg18509.html#msg18509
J’espère que j’ai été clair. Tu me dis.
@+
:bonjour:6 mars 2018 à 08:26 #63543nicoricherMembreBonjour Bebarth,
et merci de ton aide précieuse.
En fait, j’ai saisi le principe de fonctionnement, je vais pouvoir reprendre tout ça à tête reposée et explorer le post donné en exemple, pour voir les variantes et déclinaisons possibles. (il y a 3 jours, je n’avais jamais écris un script… Quel labeur !, mais on se prend vite au jeu…)
Encore merci, excellente journée ensoleillée.6 mars 2018 à 09:52 #63544bebarthMaître des clésre-bonjour,
Je viens de réaliser que j’ai oublier de te signaler que dans l’exemple précédent il y a un script de document pour vérifier à l’ouverture si des cases sont cochées ou non.
Dans le nouveau fichier joint, plus de script de document et on vérifie toutes les cases à chaque action.
Tu as le choix…
@+
:bonjour:6 mars 2018 à 09:55 #63545nicoricherMembreOui j’avais remarqué le script “init” :extra:
Merci je regarde6 mars 2018 à 10:17 #63546MerlinMaître des clésIl faut que toutes les cases utilisent un même script qui :
– commence par supprimer toutes les pages issues d’un template,
– génère ensuite toutes les pages nécessaires comme indiqué par bebarth (avec des variables qui re-génèrent un jeu complet).Astuce : pour éviter la grosse prise de tête de l’intercalage de pages, ne laisse pas les deux pages de conclusion en statique, génère les à partir d’un template en les supprimant et en les ajoutant à chaque fois comme les autres.
6 mars 2018 à 11:02 #63547MerlinMaître des clésSupprimer toutes les pages d’un document sauf la première :
if (this.numPages > 1) {this.deletePages({nStart: 1, nEnd: this.numPages-1});}
Remplacer les “1” en rouge par le nombre de pages d’en-tête à conserver.
Acrobat Reader (versions 11 et DC) ne peut supprimer que des pages issues d’un template, pas les pages statiques.25 avril 2018 à 16:04 #63548fasmMembreBonjour,
Je me permet de poursuivre ce topic car je l’ai suivi à la lettre ou presque, tuto, exemple BB, etc… – merci aux auteurs au passage !
Cela marche très bien sauf que… j’ai un tout petit problème…J’insère à la demande (via 4 checkbox) des pages en position 4 (si l’on part de 0…), j’ai 5 pages de ‘base’ et 4 pages à affichage ‘commandé’.
Si je choisi la première page elle s’affiche sans problème. Et ensuite je peux afficher/cacher n’importe qu’elle page.
Si je veux afficher à l’ouverture du fichier une des 2ème, 3ème, 4ème page cachées dès le départ il ne se passe rien tant que je n’ai pas affiché la première !?!
J’ai recommencé la manip maintes fois et je n’arrive pas à trouver la solution.
Je sèche.Je vous mets les scripts que j’utilise, le document est un peu lourd et un peu confidentiel.
SCRIPT ‘INIT’
if(this.getField(“CB1”).isBoxChecked(0))
{
var slide1=1;
} else {
var slide1=0;
}
if(this.getField(“CB2”).isBoxChecked(0))
{
var slide2=1;
} else {
var slide2=0;
}
if(this.getField(“CB3”).isBoxChecked(0))
{
var slide3=1;
} else {
var slide3=0;
}BOUTON CB1
var pg=this.pageNum;
var laPage=4;
if(this.event.target.isBoxChecked(0))
{
this.getTemplate(“s1”).spawn(laPage, false, false).hidden = false;
var slide1=1;
} else {
this.deletePages({nStart: laPage});
var slide1=0;
}
this.pageNum=pg;BOUTON CB2
var pg=this.pageNum;
var laPage=4;
if(this.event.target.isBoxChecked(0))
{
this.getTemplate(“s2”).spawn(laPage+slide1, false, false).hidden = false;
var slide2=1;
} else {
this.deletePages({nStart: laPage+slide1});
var slide2=0;
}
this.pageNum=pg;BOUTON CB3
var pg=this.pageNum;
var laPage=4;
if(this.event.target.isBoxChecked(0))
{
this.getTemplate(“s3”).spawn(laPage+slide1+slide2, false, false).hidden = false;
var slide3=1;
} else {
this.deletePages({nStart: laPage+slide1+slide2});
var slide3=0;
}
this.pageNum=pg;BOUTON CB4
var pg=this.pageNum;
var laPage=4;
if(this.event.target.isBoxChecked(0))
{
this.getTemplate(“s4”).spawn(laPage+slide1+slide2+slide3, false, false).hidden = false;
} else {
this.deletePages({nStart: laPage+slide1+slide2+slide3});
}
this.pageNum=pg;25 avril 2018 à 16:39 #63549bebarthMaître des clésbonjour,
Si je veux afficher à l’ouverture du fichier une des 2ème, 3ème, 4ème page cachées dès le départ il ne se passe rien tant que je n’ai pas affiché la première !?!
Je ne suis pas certain de comprendre !
Tu veux afficher directement la page cochée ???
Si c’est cela, tu retiresCode:this.pageNum=pg;en fin de chaque script de checkbox.
@+
:bonjour:26 avril 2018 à 08:28 #63550fasmMembreNon, je ne souhaite pas spécialement afficher (cad ‘aller’) directement sur la page.
Si je coche mon premier bouton à l’ouverture du fichier, ma première page (template s1) s’affiche (et je reste sur la première page). Et ensuite je peux cacher ou afficher n’importe quelle page template.
Mais si à l ouverture du fichier je coche un des 2,3 ou 4 ème bouton pour afficher les templates s2, s3 ou s4 il ne se passe rien !
tant que je n’aurai pas cocher le bouton 1 du template s1…Je me demande si le problème de viens pas de la procédure.
1 j’ajoute les boutons et leurs scripts.
2 j’ajoute le script javascript principal
3 je créé les templates et les cache
4 j’enregistre…26 avril 2018 à 09:34 #63551bebarthMaître des clésbonjour,
Comme ça je ne vois pas ! il faudrait voir le fichier… sur le dernier fichier que j’avais joint (exemple-test_BB1.pdf) ça fonctionne, non ???
@+
:bonjour:27 avril 2018 à 06:50 #63552fasmMembreJe viens de refaire la manip (proprement) et ça marche très bien !
J’ai du corrompre mon fichier à un moment donné…
Merci ! -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.