Donnez vie à vos documents numériques !
 

Navigation

abracadabraPDF Forums PDF – Général Navigation

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45552
    passifacile
    Participant

    Bonjour,

    Je souhaite faciliter la navigation dans un gros document pour permettre aux utilisateurs de passer d’une page à l’autre (uniquement si elle contient un champ “hidden”).

    Description :

    • Document de plusieurs centaines de pages
    • [/list]

    • Toutes les pages sont différentes
    • [/list]

    • Selon les actions de saisie et les choix faits par l’utilisateur, des pages “cachées” par des champs blancs sont affichées (paramètre des champs changé en “hidden”)
    • [/list]

      Pour compléter les pages “visibles”, et plutôt que de faire défiler tout le document ou toutes les vignettes pour rechercher les pages non vides, je voudrais obtenir les effets suivants, à choix :
      Afficher des vignettes (ou des signets) de pages uniquement pour les pages qui contiennent des champs (blanc.0, Blanc.1 etc.) “hidden”, ou
      insérer des script dans des boutons de navigation qui permettent aux utilisateurs de pointer directement sur la page suivante (ou précédente) avec un tel champ “hidden”

      Le document initial étant très lourd, et confidentiel, je joins un petit exemple.

      Pourriez-vous, svp, m’aider ? :priere:

      Bonne journée à toutes et à tous

      P.S : passant de PC à MAC, je m’emmêle un peu le clavier, raison pour laquelle j’ai dû modifier plusieurs fois mon message… désolé. :Ooops:

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

    Bonjour.

    Je crois que la “bonne” réponse pourrait venir de l’abandon de la “mauvaise” question.  :doute:

    Plutôt que de masquer des pages avec des caches et de créer une mécanique complexe pour sauter les pages blanches, pourquoi ne pas simplement faire disparaitre la page ?
    Ce qui résoudrait tous les problèmes de navigation du même coup.  :idee:

    Ce document est un cas typique d’utilisation des pages modèles, qu’on peut faire apparaitre et disparaitre à volonté, mais il y a un impératif : l’utilisateur final doit avoir Acrobat Reader XI (11) ou DC, ça ne fonctionne pas avec les versions antérieures (de Reader, ça fonctionne avec toutes les versions d’Acrobat Pro et Standard).

    #61813
    passifacile
    Participant

    Bonjour Merlin.

    La disponibilité de Reader XI devrait pouvoir devenir une condition “obligatoire” pour tous les utilisateurs (déploiement systématique à l’intérieur de l’entreprise).

    Pour ce qui est des pages, celles, disparues, doivent pouvoir “réapparaître” automatiquement selon les choix faits, avec les valeurs saisies précédemment dans es différents champs propres à ces pages.

    Compte tenu que le document fait plusieurs centaines de pages, est-ce que les pages modèles peuvent toutes être différentes ?

    #61814
    Merlin
    Maître des clés

    En fait une page modèle reste toujours masquée, ce qui apparait/disparait dans le document c’est un double/duplicata du modèle. (to spawn en anglais)
    Si on n’active pas le renommage des champs, les données saisies sur une page dupliquée se retrouvent en double dans le modèle, parce-que les champs ont les même noms.
    Que l’on supprime le duplicata ou non, les données restent stockées dans le modèle et réapparaissent à chaque duplication.

    Regarde cet exemple : https://files.acrobat.com/a/preview/3df0dcac-a987-4d6a-94a5-2783838584bf

    #61815
    bebarth
    Maître des clés

    bonsoir,
    Est-ce bien cela que tu voulais faire ?
    Les flèches ne renvoient que sur les pages contenant un champ dont le nom comprend “Blanc.” et qui est visible (cf. fichier joint).
    Pour plusieurs centaines de pages, tu copies ces boutons sur la première page et clique droit “dupliquer dans toutes les pages”.
    @+
    :bonjour:

    #61816
    Merlin
    Maître des clés

    Mesdames, messieurs, chapeau bas !
    :bonjour:

    Là je m’incline devant autant de bon sens.
    :joker:

    #61817
    passifacile
    Participant

    Oui, c’est exactement ça.
    Bravo et merci !
    :bravo:

    Ce qui ne va pas, c’est que je sais ce que fait le script, mais que je ne le comprends pas…  :Smiley08:

    Va falloir que je le re-re-relise et le dé-dé-décortique :oh:

    #61818
    passifacile
    Participant

    Aïe, j’ai un problème quand je l’adapte à mon projet.  :Euuuh:

    Tous mes champs “Blanc.” existent systématiquement en duo minimum. J’ai ainsi les champs suivants (avec dès dièses) :
    Blanc.0#1
    Blanc.0#2
    Blanc.1#1
    Blanc.1#2
    Blanc.1#3
    Etc.

    Et, dans cette configuration, le script ne s’applique malheureusement pas  :Smiley02:

    Y a-t-il un moyen de contourner cette difficulté par une adaptation du script, ou est-il préférable de “dédoubler” les champs et de ne créer que des champs “xxx.nn” ?

    #61819
    bebarth
    Maître des clés

    bonjour,
    S’il y a systématiquement un # dans le nom, il faut aussi tester cette condition.
    J’ai remplacé la propriété “hidden” par la propriété “display” comme conseillé par l’api reference.

    // Bouton “Aval”
    var nomChamp=””;
    var laPage=this.pageNum; // Numéro de la page courante
    var allerPage=this.numPages; // Numéro de la page cible, temporairement la dernière page
    for (var i = 0; i < this.numFields; i++) { // Teste tous les champs
    var nomChamp=this.getNthFieldName(i); // Nom du champ testé
    var f = this.getField(nomChamp); // Champ testé
    var str=nomChamp;
    var OK = str.indexOf(“Blanc.”); // Le nom du champ testé contient-il “Blanc.”
    var diese = str.indexOf(“#”); // Le nom du champ testé contient-il “#”
    if (OK > -1 & diese > -1 & f.page>laPage & f.hidden==true) { // Teste 4 conditions :
    // OK > -1 : Le nom du champ testé contient “Blanc.”
    // diese > -1 : Le nom du champ testé contient “#”
    // f.page>laPage: Le numéro de page du champ testé est supérieur à celui de la page courante
    // f.display==display.hidden : Le champ testé (carré planc) n’est pas visible
    var pageToGo = f.page; // Variable temporaire égale au numéro de page du champ testé
    switch (pageToGo < allerPage) { // Cette variable temporaire est-elle inférieure à la page cible ?
    case true: // si OUI
    var allerPage=pageToGo; // Le numéro de la page cible devient celui du champ testé
    this.pageNum=allerPage; // Affichage de la page cible
    break;
    default:
    break;
    }
    }
    }

    // Bouton “Amont”
    var nomChamp=””;
    var laPage=this.pageNum;
    var allerPage=0; // Numéro de la page cible, temporairement la première page
    for (var i = 0; i < this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    var f = this.getField(nomChamp);
    var str=nomChamp;
    var OK = str.indexOf(“Blanc.”);
    var diese = str.indexOf(“#”);
    if (OK > -1 & diese > -1 & f.page // f.page var pageToGo = f.page;
    switch (pageToGo > allerPage) {
    case true:
    var allerPage=pageToGo;
    this.pageNum=allerPage;
    break;
    default:
    break;
    }
    }
    }

    @+
    :bonjour:

    #61820
    passifacile
    Participant

    Bonsoir, Bebarth.

    Merci infiniment : pour l’adaptation ainsi que pour les explications détaillées. C’est vraiment super.
    :bravo:

    Je vais mettre en pratique dès demain matin  :Smiley08:

    Cordialement

    #61821
    bebarth
    Maître des clés

    On peut même supprimer (2 fois) les lignes :

    default:
    break;

    Elles ne servent à rien et j’ai oublié de les enlever !
    @+
    :bonjour:

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