Donnez vie à vos documents numériques !
 

Répondre à : Publipostage PDF avec Excel

abracadabraPDF Forums PDF – Général Publipostage PDF avec Excel Répondre à : Publipostage PDF avec Excel

#62059
Mary31
Participant

Bonjour,
et merci pour vos réponses que j’ai approfondies avec les liens envoyés en consultant les posts. :bonjour:

Je suis donc allée à ce qui est le plus concret pour moi et me suis servie des actions que Bebarth avait déjà créées et qui correspondent tout à fait à mon besoin : générer un publipostage à partir d’un formulaire .pdf et d’un fichier de données ; générer autant de pdf pré-renseigné que de lignes dans le fichier de données.

Mon fichier est bien enregistré en .csv, il est joint au formulaire .pdf et les deux sont enregistrés dans un même répertoire auquel j’ai accès en écriture.
Les champs du fichiers .csv, sont bien identiques aux champs du formulaire .pdf

J’ai ajouté l’action “Générer un formulaire” que Bebarth a déjà conçu. Je l’ai adaptée à mon formulaire et fichier en apportant les modifs au niveau des lignes newDoc et pour le nommage des fichiers générer après la fusion.

Hier, cela a fonctionné mais uniquement pour la première ligne du tableau (donc la seconde en dessous de celle qui correspond aux champs). La fusion s’est arrêtée au champ “Adresse” (colonne 4). pour les champs “Tél. portable” (col 5) et “Téléphone fixe” col(6) il est indiqué “undefined” et puis plus rien pour les autres.
Aujourd’hui, je n’ai plus de nouveau .pdf généré et enregistré correctement. J’ai juste l’ouverture d’un fichier pdf.tmp toujours pour la première ligne et avec les mêmes indications (comme ci-dessus) au niveau des champs (j’ai dû modifier quelque chose sans m’en rendre compte…)

Voici les modifs que j’ai donc apportées au script pour les adapter à mes documents (certains champs sont volontairement anonymisés) :

Code:
// Initialisation
var Chemin=this.path;
var CheminSansExt=Chemin.substring(0,Chemin.length-4)
// Importer l’unique PJ sans la nommer
var p=this.getDataObject(this.dataObjects[0].name)
var fichier=this.getDataObjectContents(p.name)
var donnees=util.stringFromStream(fichier)
// Séparation des rangées (saut de ligne)
var rangees=donnees.split(“n”)
// Séparation des colonnes (TAB)
var colonnes=new Array();
for (var i=1; i    colonnes=rangees.split(“;”);
    // Création d’un nouveau document
    var newDoc=app.newDoc();
    // Insertion de la/des page(s)
    newDoc.insertPages({cPath: Chemin});
    // Suppression de la première page générée à la création du document
    newDoc.deletePages(0);
    // remplissage des champs
    newDoc.getField(“Nom d’usage”).value=colonnes[1];
    newDoc.getField(“Nom de famille”).value=colonnes[2];
    newDoc.getField(“Prénoms”).value=colonnes[3];
    newDoc.getField(“Adresse”).value=colonnes[4];
    newDoc.getField(“Tél. portable”).value=colonnes[5];
    newDoc.getField(“Téléphone fixe”).value=colonnes[6];   
    newDoc.getField(“courriel”).value=colonnes[7]; 
    newDoc.getField(“Profession”).value=colonnes[8];
    newDoc.getField(“Employeur”).value=colonnes[9];
    newDoc.getField(“Champ 10”).value=colonnes[10];
    newDoc.getField(“Champ 11”).value=colonnes[11];
    newDoc.getField(“Champ 13”).value=colonnes[13];
    newDoc.getField(“Champ 14”).value=colonnes[14];
    newDoc.getField(“Champ 15”).value=colonnes[15];
    newDoc.getField(“Champ 17”).value=colonnes[17];
    newDoc.getField(“Champ 19”).value=colonnes[19];
    newDoc.getField(“Champ 21”).value=colonnes[21];
    newDoc.getField(“Champ 24”).value=colonnes[24];
    newDoc.getField(“Champ25”).value=colonnes[25];

    // etc. Le nom du champ correspondant au numéro de la colonne (basée sur 0)
    // Enregistrement “NomDuFichier (Nom d’usage Prénoms).pdf”
    newDoc.saveAs(CheminSansExt+” (“+colonnes[1]+” “+colonnes[3]+”).pdf”);
    // Fermeture du fichier
    newDoc.closeDoc();
}
// Message d’alerte
app.alert(rangees.length-1+” formulaires individuels ont été créés.”,2);

A votre avis, qu’est-ce qu’il ne va pas ? Faut-il que j’allège également le nom des champs ?