Donnez vie à vos documents numériques !
 

Générer du texte aligné avec des champs de formulaire nommés correctement

abracadabraPDF Forums PDF – Général Générer du texte aligné avec des champs de formulaire nommés correctement

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46255
    _seb_
    Participant

    Bonjour tout le forum,
     
    je partage avec vous un script.

    je cherchais comment générer du texte avec des champs de formulaire alignés et nommés correctement.
     
    J’ai découvert avec le script de bebarth ici la fonction this.flattenPages() (aplatir)
     
    En faisant des recherches, j’ai trouvé que l’on pouvait aplatir uniquement les champs visibles à l’impression avec le paramètre this.flattenPages({nNonPrint:1});
     
    Du coup, j’ai fait un script qui génère des champs visibles à l’impression avec des champs invisibles à l’impression qui sont alignés.
     
    Les champs invisibles sont nommés comme on le souhaite.
     
    Ensuite, le formulaire est aplati avec this.flattenPages({nNonPrint:1});
     
    Les champs restants deviennent visibles à l’impression 
     
    Voir le fichier joint et le code :

    Code:
      console.clear();

    // Début des variables à configurer ////////////////////////////////////////

      // Nombre de question
      var nbrQuestion = 3;

      // Numéro de la page
      var numPage = 0;

      // Numéro de la première question
      var numQuestion = 1;

      // Position de la première question par rapport à la gauche de la feuille
      var posGauche = 14;

      // Position de la première question par rapport au bas de la feuille
      var posBas = 700;

      // Hauteur du champ
      var hauteurChamp = 20;

      // Décalage entre les questions
      var declageVertical = 40;

    ////////////////// les champs question //////////////////

      // Longueur
      var longueurChampQ = 150;
      // Police d’écriture
      var policeEcritureQ = « Verdana »;
      // Taille du texte
      var tailleTexteQ = 12;
      // Alignement
      var alignementQ = « right »;
      // Style des bordures
      var styleBordureQ = border.s;
      // Couleur de la bordure
      var couleurBordureQ = [« T »];// transparent;
      // Lecture seule
      var lectureQ = true;

      // Les questions
      var tabQuestion =
      [
          « Nom de famille : « ,
          « Prénom : « ,
          « Date de naissance : « 
      ]

    ////////////////// les champs réponses //////////////////

      // Longueur
      var longueurChampR = 150;
      // Police d’écriture
      var policeEcritureR = « Verdana »;
      // Taille du texte
      var tailleTexteR = 12;
      // Alignement
      var alignementR = « center »;
      // Style des bordures
      var styleBordureR = border.s;
      // Couleur de la bordure
      var couleurBordureR = color.black;
      // Lecture seule
      var lectureR = false;
      // Impression
      var impressionR = display.noPrint;

      // Les noms des champs des réponses
      var tabReponse =
      [
          « nomFamille »,
          « prenom »,
          « dateDeNaissance »
      ]

    // Fin des variables à configurer ////////////////////////////////////////

      var positionVertical = 0;
      var numTab = 0;

      for(var i = 1; i       // Générer les champs pour les questions
          this.addField
          (
            numPage + « .question.text. » + numQuestion,
            « text »,
            numPage,
            [
                  posGauche,
                  posBas – positionVertical,
                  posGauche + longueurChampQ,
                  posBas – positionVertical – hauteurChamp
            ]
          );

          // Configurer les champs pour les questions
          var champQuestion = this.getField(numPage + « .question.text. » + numQuestion);
          // Valeur par défaut
          champQuestion.defaultValue = tabQuestion[numTab];
          // Police d’écriture
          champQuestion.textFont = policeEcritureQ;
          // Taille du texte
          champQuestion.textSize = tailleTexteQ;
          // Alignement
          champQuestion.alignment = alignementQ;
          // La bordure
          champQuestion.borderStyle = styleBordureQ;
          // Couleur de la bordure
          champQuestion.strokeColor = couleurBordureQ;
          // Lecture seule
          champQuestion.readonly = lectureQ;

          // Générer les champs pour les réponses
          this.addField
          (
            numPage + « . » + tabReponse[numTab] + « .text. » + numQuestion,
            « text »,
            numPage,
            [
                  posGauche + longueurChampQ,
                  posBas – positionVertical,
                  posGauche + longueurChampQ + longueurChampR,
                  posBas – positionVertical – hauteurChamp
            ]
          );

          // Configurer les champs pour les réponses
          var champReponse = this.getField(numPage + « . » + tabReponse[numTab] + « .text. » + numQuestion);
          // Police d’écriture
          champReponse.textFont = policeEcritureR;
          // Taille du texte
          champReponse.textSize = tailleTexteR;
          // Alignement
          champReponse.alignment = alignementR;
          // La bordure
          champReponse.borderStyle = styleBordureR;
          // Couleur de la bordure
          champReponse.strokeColor = couleurBordureR;
          // Lecture seule
          champReponse.readonly = lectureR;
          // Impression
          champReponse.display = impressionR;

          numQuestion++;
          numTab++;
          positionVertical = positionVertical + hauteurChamp + declageVertical;
      }

      // Initialiser le formulaire
      resetForm();
      // Aplatir le formulaire (uniquement les champs visible à l’impression)
      this.flattenPages({nNonPrint:1});

      // Rendre visible à l’impression les champs restants (les réponses)
      for(var i = 0; i       var nomChamp = this.getNthFieldName(i);
          this.getField(nomChamp).display = display.visible;
      }

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