Ce projet a pour but la génération d'annuaires papier A4 recto-verso au format PDF à partir de données au format CSV provenant par exemple d'une exportation par Dolibarr. Il est constitué de :
- fichiers annuaire vierges au format Scribus (.sla)
- script python exécuté par Scribus pour remplir le document
- fichier de paramétrage au format CSV permettant de personnaliser le document
- images à importer dans le document
- données au format CSV
A. les trois couleurs utilisées dans le document
B. le texte du bandeau
C. le logo principal : fichier logo.png
D. le QRcode : fichier qrcode.png
E. adresse internet de l'annuaire
F. le petit logo : fichier petitLogo.png
G. adresse de l'association
H. les adresses des professionnels : fichier demandé à l'exécution du script
I. les adresses des bureaux de changes sont les professionnels dont le champ Bureau de change est à 1
J. Images pour remplir les espaces sans adresse : fichiers image1.png
, image2.png
, image3.png
, image4.png
Une fois plié en huit, la partie 1 se retrouve devant et la partie 2 derrière. En dépliant une fois, la partie 3 apparait en premier et contient les deux premières colonnes de texte. La suite est au verso et la partie 4 contient les quatre dernières colonnes.
C'est un fichier CSV avec la virgule (,) comme séparateur et les guillements (") comme délimiteurs facultatifs de champs Les colonnes peuvent être dans le désordre, le script les reconnaît en cherchant les mots en gras (non sensible à la casse) :
- nom du professionnel
- Adresse
- Code postal
- Ville
- Téléphone professionnel
- Domaine d'activité Principal (catégorie)
- Description de l'activité de l'entreprise
- Latitude
- Longitude
- Bureau de change (contient 0 ou 1)
La colonne Domaine (ou catégorie) contient un numéro qui doit se trouver avec sa description dans le fichier categorie.csv
Son contenu est le suivant :
"Catégorie","Numéro"
"...", <numéro>
...
Lorsque le nombre de professionnels dépasse 150, une sélection doit être faite et plusieurs annuaires générés en fonction de zones géographiques.
Cette sélection peut se faire par les codes postaux ou par les coordonnées : latitude, longitude.
Le paramètre filtreGeo
du fichier parametres.csv
précise cette sélection
Si les valeurs de la ligne commençant par "filtreGeo" sont des codes postaux (nombres sans décimales) séparés par des virgules (,) seuls les professionnels avec ces codes seront importés. Si le premier de ces codes est le mot "sauf", seuls les professionnels n'ayant pas ces codes seront importés.
Si les valeurs sont des nombres décimaux avec le point comme séparateur décimal, ils sont interprétés comme des paires latitude, longitude et seuls les professionnels à l'intérieur du polygone délimités par les points seront importés. Par exemple, la ligne suivante dessine un polygone autour de Strasbourg :
"filtreGeo", 48.647043,7.846305, 48.647043,7.79, 48.606757,7.759547, 48.604764,7.688182, 48.560268,7.689072, 48.539095,7.753256, 48.493268,7.747884, 48.493268,7.80
Et cette ligne délimite tout le département sauf Strasbourg
"filtreGeo", 48.647043,7.846305, 48.647043,7.79, 48.606757,7.759547, 48.604764,7.688182, 48.560268,7.689072, 48.539095,7.753256, 48.493268,7.747884, 48.493268,7.80, 48.64,7.846305, 49.1,8.42, 48.101784,8.42, 48.101784,6.83, 49.1,6.83, 49.1,8.41
Le script lireDonnees.py
permet de tester un fichier de données et son paramétrage en ligne de commande, il compte le nombre de professionnels filtrés en utilisant le script importerPros.py
Le fichier CSV parametres.csv
permet de paramétrer :
- les 3 couleurs utilisées dans le document en donnant leurs composantes quadrichromiques (Cyan, Magenta, Jaune, Noir).
- couleurBandeau
- couleurSombre
- couleurTitre
- txtBandeau : le texte du bandeau
- txtUrlAnnuaire : l'URL sous le QRcode
- txtInfoAsso : adresse de l'association
- filtreGeo : sélection en fonction des codes postaux ou d'un polygone géographique
les fichiers A4-150.sla
et A4-140.sla
ne contiennent pas d'adresses de professionnels, les images et quelques informations présentes seront remplacées à l'exécution du script. Le premier fichier génère un annuaire de taille A4 pouvant contenir environ 150 adresses de professionnels. Dans le second, les adresses sont écrites un peu plus gros.
Ils NE DOIVENT PAS ÊTRE MODIFIÉS. Sauvegardez-les sous un autre nom si vous souhaitez enregistrer un annuaire rempli au format Scribus.
- Le logiciel Scribus doit être installé (version utilisée pour ce projet : 1.4.7)
- Quelques symboles de la police Fontawesome sont utilisés
- Ouvrez le fichier
A4-150.sla
(ouA4-140.sla
) - Avec la commande du menu Script > Démarrer un script..., lancez le script
importerPros.py
- Indiquez le fichier CSV contenant les doonnées à importer (ex. :
export_societe.csv
) - Un message rappelle les autres fichiers utilisés devant être présents dans le même répertoire. Cliquez sur OK
- La barre d'état de Scribus indique quelle zone de texte est actuellement en cours de remplissage, la barre de progression indique l'avancement dans la liste complète des adresses
- Un message apparaît après chaque zone de texte. Attention il peut être caché sous une autre fenêtre. Ils permettent de contourner un bug de Scribus qui reste bloqué lorsque trop d'instructions lui sont envoyées
- Une fois l'annuaire complètement rempli, il est possible de modifier le résultat avant d'exporter
- Dans le menu Fichier > Exporter > Enregistrer en PDF..., ignorez les erreurs et choisissez le fichier PDF de destination