Donnez vie à vos documents numériques !
 

Création de champs sur quelques pages seulement.

abracadabraPDF Forums PDF – Général Création de champs sur quelques pages seulement.

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46151
    jctremblay
    Participant

    Je suis capable de créer un champ sur toute les pages d’un PDF avec ceci:

    Code:
    for (var nPage = 0; nPage var f = this.addField (“myField”, “text”, nPage, [200, 600, 300, 660]);
    }

    Ou sur une page spécifique avec ça:

    Code:
    var f = this.addField(“myField”, “text”, 1, [200, 600, 300, 660]);

    C’est assez simple aussi, juste la première ou la dernière, etc…

    La ou je bloque est comme le faire sur un groupe de pages spécifique comme pages: 2-3 et 7

    J’ai essayé de créer un Array avec une loop mais je n’y arrive pas. Une idées de la mécanique à utiliser pour que cela puisse se faire?

    Grand merci!
    Jean-Claude

Affichage de 9 réponses de 1 à 9 (sur un total de 9)
  • Auteur
    Réponses
  • #66322
    bebarth
    Maître des clés

    bonjour,
    Il faut écrire :

    Code:
    for (var nPage = 0; nPage     if ((nPage>=1 && nPage}

    Les numéros de pages sont basées sur 0, donc dans ton exemple pour la page 7, nPage==6.
    @+
    :bonjour:

    #66323
    jctremblay
    Participant

    Merci, c’était pas si compliqué que ça. Quand on connais d’avance les pages.

    Maintenant, si les pages nous sont fournis par l’utilisateur avec un app.response
    J’imagine que ça prend une routine pour déchiffrer le résultat, pour créer un array, et inclure tout ça dans une loop executable juste après le if Je me trompe?

    #66324
    bebarth
    Maître des clés

    La réponse est une chaine de caractères !
    Peux-tu me donner un exemple de réponse ou plusieurs (s’il y en a éventuellement plusieurs).
    @+
    :bonjour:

    #66325
    jctremblay
    Participant

    Ça peut être n’importe quoi… (des tirets pour les consécutives, des virgules pour séparer les autres).

    ex:

    7

    2-6

    2-3, 5

    6, 8-10, 13, 15-17

    #66326
    bebarth
    Maître des clés

    Voici un script qui pourrait répondre à ce que tu veux faire :

    Code:
    var Reponse=””;
    while (Reponse==””) {
        var Reponse=app.response({
            cQuestion: “Indiquez les pages où insérer un champ.”,
            cTitle: “Liste des pages”,
            cLabel: “Pages :”,
            cDefault: “”
        });
        // Test des caractères de la réponse
        for (var i=0; i        var n=Reponse.charCodeAt(i);
            if (n>57 || (n<48 && n!=44 && n!=45)) Reponse="";
        }
    }
    if (Reponse!=””) {
        // Suppression des , ou – en début ou fin de réponse
        if (Reponse.startsWith(“,”)) var Reponse=Reponse.substring(1);
        if (Reponse.startsWith(“-“)) var Reponse=Reponse.substring(1);
        if (Reponse.endsWith(“,”)) var Reponse=Reponse.substring(0,Reponse.length-1);
        if (Reponse.endsWith(“-“)) var Reponse=Reponse.substring(0,Reponse.length-1);
        // Découpe le réponse en une table
        var laTable=Reponse.split(“,”);
        // Traitement de la table
        for (var j=0; j        // Vérification page simple ou plage
            var str=laTable[j];
            var n=str.indexOf(“-“);
            if (n>-1) {
                var debutPlage=Number(str.substring(0,n))-1;
                var finPlage=Number(str.substring(n+1))-1;
            } else {
                var debutPlage=Number(str)-1;
                var finPlage=Number(str)-1;
            }
            try {
                for (var nPage=debutPlage; nPage        } catch(e) {}
        }
    }

    J’ai juste fait quelques testes…
    @+
    :bonjour:

    #66327
    jctremblay
    Participant

    Oh que c’est beau!  :bravo:

    Ça semble bien marcher. Ça va me prendre quelques jours pour assimiler tout ça.

    Je te remercie. Je te reviens si j’ai des questions.

    #66328
    bebarth
    Maître des clés

    bonjour,
    Voici une version un peu améliorée où le script :

    • Supprime les doubles caractères
    • Classe la plage des pages
    • Vérifie si la page indiquée existe
    • [/list]Il y aurait certainement d’autres vérifications à apporter…

      Code:
      var Reponse=””;
      while (Reponse==””) {
          var Reponse=app.response({
              cQuestion: “Indiquez les pages où insérer un champ :n• une virgule (,) pour séparer les pages ou les plagesn• un tiret (-) pour séparer les pages des plagesnExemple : 1,3-5,9”,
              cTitle: “Liste des pages”,
              cLabel: “Pages :”,
              cDefault: “”
          });
          // Test des caractères de la réponse
          for (var i=0; i        var n=Reponse.charCodeAt(i);
              if (n>57 || (n<48 && n!=44 && n!=45)) Reponse="";
          }
      }
      if (Reponse!=””) {
          // Suppression des , ou – en début ou fin de réponse
          if (Reponse.startsWith(“,”)) var Reponse=Reponse.substring(1);
          if (Reponse.startsWith(“-“)) var Reponse=Reponse.substring(1);
          if (Reponse.endsWith(“,”)) var Reponse=Reponse.substring(0,Reponse.length-1);
          if (Reponse.endsWith(“-“)) var Reponse=Reponse.substring(0,Reponse.length-1);
          // Suppression des incorrects
          var ok=””;
          while (ok==””) {
              var str=Reponse;
              var n=str.indexOf(“–“);
              if (n>-1) {
                  Reponse=Reponse.replace(/–/g,”-“);
                  var ok=””;
              } else {
                  var ok=”OK”;
              }
              var n=str.indexOf(“,,”);
              if (n>-1) {
                  Reponse=Reponse.replace(/,,/g,”,”);
                  var ok=””;
              } else {
                  var ok=”OK”;
              }
              var n=str.indexOf(“,-“);
              if (n>-1) {
                  Reponse=Reponse.replace(/,-/g,”,”);
                  var ok=””;
              } else {
                  var ok=”OK”;
              }
              var n=str.indexOf(“-,”);
              if (n>-1) {
                  Reponse=Reponse.replace(/-,/g,”,”);
                  var ok=””;
              } else {
                  var ok=”OK”;
              }
          }
          // Découpe le réponse en une table
          var laTable=Reponse.split(“,”);
          // Traitement de la table
          for (var j=0; j        // Vérification page simple ou plage
              var str=laTable[j];
              var n=str.indexOf(“-“);
              if (n>-1) {
                  var debutPlage=Number(str.substring(0,n))-1;
                  var finPlage=Number(str.substring(n+1))-1;
                  // Classification
                  var laPlage=[debutPlage, finPlage];
                  laPlage.sort(function(a, b){return a-b});
                  var debutPlage=laPlage[0];
                  var finPlage=laPlage[1];
              } else {
                  var debutPlage=Number(str)-1;
                  var finPlage=Number(str)-1;
              }
              if (debutPlage<0) debutPlage=0;
              if (finPlage>this.numPages-1) finPlage=this.numPages-1;
              for (var nPage=debutPlage; nPage    }
      }

      @+
      :bonjour:

    #66329
    Merlin
    Maître des clés

    Trop fort !
    :bravo:

    #66330
    jctremblay
    Participant

    Quel vitamine tu prend bebarth? J’en veux!  :Smiley03:

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