Donnez vie à vos documents numériques !
 

Afficher / Masquer des pages dans un fichier

abracadabraPDF Forums PDF – Général Afficher / Masquer des pages dans un fichier

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45816
    nicoricher
    Membre

    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

Affichage de 25 réponses de 1 à 25 (sur un total de 25)
  • Auteur
    Réponses
  • #63528
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Je crois que ce tuto a été fait pour toi : https://www.abracadabrapdf.net/?p=3736
    :Smiley15:

    #63529
    nicoricher
    Membre

    Bonsoir
    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
    Nicolas

    #63530
    Merlin
    Maître des clés

    Ajoute ceci à la fin du script pour revenir à la première page (page zéro en JavaScript).

    Code:
    this.pageNum = 0;

    :Smiley15:

    #63531
    bebarth
    Maître des clés

    bonjour,
    …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:

    #63532
    bebarth
    Maître des clés

    re-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:

    #63533
    Merlin
    Maître des clés

    Ce 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é.

    #63534
    nicoricher
    Membre

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

    #63535
    nicoricher
    Membre

    J’ai tenté ce bout de code :

    this.spawnPageFromTemplate(« nom-modele », this.numPages-4, false, false);
    Mais ça ne fonctionne pas comme il faut !

    #63536
    bebarth
    Maître des clés

    bonjour,
    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:

    #63537
    Merlin
    Maître des clés

    Je 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é…

    lol
    ==> https://smallpdf.com/fr/unlock-pdf

    #63538
    nicoricher
    Membre

    Bonsoir,
    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…)

    #63539
    Merlin
    Maître des clés

    Ajout 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:

    #63540
    Merlin
    Maître des clés

    Merci 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:

    #63541
    nicoricher
    Membre

    Merlin,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.

    #63542
    bebarth
    Maître des clés

    bonjour,
    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:

    #63543
    nicoricher
    Membre

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

    #63544
    bebarth
    Maître des clés

    re-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:

    #63545
    nicoricher
    Membre

    Oui j’avais remarqué le script « init » :extra:
    Merci je regarde

    #63546
    Merlin
    Maître des clés

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

    #63547
    Merlin
    Maître des clés

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

    #63548
    fasm
    Membre

    Bonjour,
    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;
    #63549
    bebarth
    Maître des clés

    bonjour,

    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 retires

    Code:
    this.pageNum=pg;

    en fin de chaque script de checkbox.

    @+
    :bonjour:

    #63550
    fasm
    Membre

    Non, 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…

    #63551
    bebarth
    Maître des clés

    bonjour,
    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:

    #63552
    fasm
    Membre

    Je viens de refaire la manip (proprement) et ça marche très bien !
    J’ai du corrompre mon fichier à un moment donné…
    Merci !

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