Donnez vie à vos documents numériques !
 

Renommer plusieurs champs de formulaire avec JavaScript

abracadabraPDF Forums PDF – Général Renommer plusieurs champs de formulaire avec JavaScript

  • Créateur
    Sujet
  • #71093
    paulivisual
    Participant

    Bonjour à tous !

    Une question qui avant de venir demander me semblait simple !

    Renommer des champs de formulaire textes en PDF (ex: j’ai « text-1 », « chabada », « undefied »… et j’aimerais avoir « DJCK_001 », « DJCK_002 » etc…

    J’ai beaucoup de formulaires PDF avec des champs Text, check box et radio a renommer et customiser.

    J’arrive a changer les couleurs, remplacer des caractères avec un script que j’ai trouvé, mais apparemment je bug pour renommer et intégrer ma séquence.

    Please help ;O)

    Voici le script trouvé… (pour le remplacement) // le site en référence pour le script : https://vielhuber.de/fr/blog/renommer-pdf-form-fields-en-masse/

     

    var fields = [];

    var props = [

    'alignment',

    'borderStyle',

    'buttonAlignX',

    'buttonAlignY',

    'buttonFitBounds',

    'buttonScaleHow',

    'buttonScaleWhen',

    'comb',

    'display',

    'doNotScroll',

    'editable',

    'exportValues',

    'fileSelect',

    'fillColor',

    'highlight',

    'lineWidth',

    'multiline',

    'multipleSelection',

    'numItems',

    'password',

    'readonly',

    'richText',

    'richValue',

    'rotation',

    'strokeColor',

    'style',

    'textColor',

    'textFont',

    'textSize',

    'userName'

    ];

    for (var i = 0; i < this.numFields; i++) {

    fields.push(this.getNthFieldName(i));

    }

    for (var i = 0; i < fields.length; i++) {

    var source_name = fields;

    // skip some names if needed

    if (source_name.indexOf('.') === -1) {

    continue;

    }

    // modifications to name (various examples)

    var target_name = source_name;

    target_name = source_name.replace(/\./g, '#');

    //target_name = target_name.toLowerCase();

    //target_name = target_name.replace(/\s/g, '');

    //target_name = target_name.replace(/\ß/g, 'ss');

    //target_name = target_name.replace(/\-|\/|\*|\.|\;|\:/g, '_');

    //target_name = target_name+'-S1';

    var source_field = this.getField(source_name);

    if (source_field !== null) {

    // debug output (if needed)

    //console.println(JSON.stringify([target_name, source_field.type, source_field.page, source_field.rect]));

    var page = source_field.page;

    if( !Array.isArray(page) ) { page = [page]; }

    for(var pages__value = 0; pages__value < page.length; pages__value++) {

    var rect = this.getField(source_name+'.'+pages__value).rect;

    var target_field = this.addField(

    target_name,

    source_field.type,

    page[pages__value],

    rect

    );

    }

    for (var p = 0; p < props.length; p++) {

    if (testField(source_field, props[p])) {

    target_field[props[p]] = source_field[props[p]];

    }

    }

    this.removeField(source_name);

    }

    }

    function testField(field, prop) {

    try {

    var tprop = field[prop];

    return true;

    } catch (e) {

    return false;

    }

    }

     

     

     

     

    • Ce sujet a été modifié le il y a 1 année et 3 mois par paulivisual.
Affichage de 6 réponses de 26 à 31 (sur un total de 31)
  • Auteur
    Réponses
  • #71226
    bebarth
    Maître des clés

    bonjour,
    Ou en une ligne :
    for (var i=0; i<this.numFields; i++) this.getField(this.getNthFieldName(i)).userName="";
    Je regarde pour la suite plus tard !

    Pour mon adresse e-mail, je ne sais pas si on peut la trouver sur le nouveau forum ! J’ai cherché mais je n’ai pas trouvé…
    C’est bebarth arrobase sfr point fr. Tu écris ça correctement et ça devrait m’arriver…

    @+

    #71235
    Merlin
    Maître des clés

    « J’ai cherché mais je n’ai pas trouvé… »

    Moi non plus…

    😕

    #71236
    paulivisual
    Participant

    @bebarth : Frimeur ;O) ahahah

    je t’es écris korhectement ;O)


    @Merlin
    … pareil…

     

    p.s vous povez me trouver sur le net facilement avec mon pseudo… pour une idée… et autrement il y discord.

    #71248
    bebarth
    Maître des clés

    Voici un exemple où j’ai indiqué l’ordre de tabulation souhaité en info-bulle de chaque champ.
    Après avoir lancé le script, les info-bulles sont effacées et j’ai indiqué pour les champs texte uniquement le numéro de tabulation, mais ça c’est juste pour montrer que ça a fonctionné !

    Le script à lancer de la console ou à mettre en action :

    var nomIncr="BB";
    var nomChamps=[];
    for (var i=0; i<this.numFields; i++) nomChamps.push([getNthFieldName(i),this.getField(getNthFieldName(i)).userName]);
    nomChamps.sort(function(a, b){return a[1]-b[1]});
    for (var i=0; i<nomChamps.length; i++) {
    var leNom=nomChamps[0];
    var nouveauNom=nomIncr+"_";
    if (i<10) nouveauNom+="00"+i;
    else if (i<100) nouveauNom+="0"+i;
    else nouveauNom+=i;
    g=this.getField(leNom);
    var leType=g.type;
    var laPage=String(g.page);
    var lesPages=laPage.split(",");
    for (var p=0; p<lesPages.length; p++) {
    var cettePage=Number(lesPages[p]);
    if (lesPages.length>1) {
    var nomChamp=leNom+"."+p;
    } else {
    var nomChamp=leNom;
    }
    g=this.getField(nomChamp);
    var lesCoord=g.rect;
    var f=this.addField(nouveauNom, leType, cettePage, lesCoord);
    f=this.getField(nouveauNom);
    for (var j in g) {
    try {
    if (typeof g[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") {
    f[j]=g[j];
    }
    } catch(e) {}
    }
    f.userName="";
    if (f.type="text") f.value="Tabulation n° "+nomChamps[1];
    }
    this.removeField(leNom);
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #71251
    paulivisual
    Participant

    TOP TOP O TOP! Grandéééééééééééééé et dire qu’on m’avait dit qu’on pouvez pas l’amélioré ;O) (adapté au besoin est une amélioration ;O)

    Tu as bien reçu mon mail ?

    Je rend la pareil avec plaisir (dans mes compétences).

    #73012
    VinceQC974
    Participant

    Salut Bebarth,

    Ton script est super mais lorsque j’indique une hauteur de champs, les champs semblent se réduire par le bas. Est-ce possible de faire l’inverse et de les réduire par le haut pour qu’ils restent collés à mes lignes ? J’ai joins un exemple. Merci beaucoup 🙂

    Attachments:
    You must be logged in to view attached files.
Affichage de 6 réponses de 26 à 31 (sur un total de 31)
  • Vous devez être connecté pour répondre à ce sujet.