# Générateur d'étiquettes miel — Les Ruchers de l'Abeillaud

Application PHP native (PDO) + MySQL + TCPDF permettant de créer des modèles
d'étiquette (fond JPEG, overlay PNG, champs de texte positionnés en mm) puis
de générer à la volée une planche A4 de 6 étiquettes strictement identiques,
téléchargeable en PDF haute qualité.

## 1. Arborescence attendue sur le serveur

```
[racine de l'application]/
  admin/            interface d'administration (modèles, champs, polices)
  assets/
    css/            feuille de style
    fonds/          images JPEG uploadées (fonds de planche)
    overlays/       images PNG uploadées (rubans/pictogrammes)
    fonts/          fichiers .ttf uploadés
  config/
    config.php      constantes de configuration (DB, chemins)
    db.php          connexion PDO
  includes/         classes et fonctions PHP partagées
  public/           interface de génération + historique
  sql/
    schema.sql      script de création des tables
  vendor/
    tcpdf/           bibliothèque TCPDF (tcpdf.php à la racine de ce dossier)
```

**Important** : le dossier `vendor/tcpdf/fonts/` doit être accessible en
écriture par PHP (chmod 755 minimum). C'est là que sont automatiquement
stockées les polices custom converties depuis l'admin ("Gestion des
polices"). Sans droit d'écriture, l'upload de police échouera.

## 2. Installation

1. **Copier tous les fichiers** de ce projet sur le serveur (via FTP/SFTP,
   dans un dossier non listé publiquement si possible — l'application n'a
   pas d'authentification).

2. **Base de données** : créer une base MySQL depuis l'espace client OVH,
   puis importer `sql/schema.sql` (via phpMyAdmin ou en ligne de commande) :
   ```
   mysql -u utilisateur -p nom_de_la_base < sql/schema.sql
   ```

3. **Configuration** : éditer `config/config.php` et renseigner :
   ```php
   define('DB_HOST', 'localhost');
   define('DB_NAME', 'nom_de_la_base');
   define('DB_USER', 'utilisateur_mysql');
   define('DB_PASS', 'mot_de_passe_mysql');
   ```
   Adapter aussi `BASE_URL` si l'application n'est pas à la racine du
   domaine (ex : `'/etiquettes/'`).

4. **Droits d'écriture** à vérifier/poser sur ces dossiers :
   - `assets/fonds/`
   - `assets/overlays/`
   - `assets/fonts/`
   - `vendor/tcpdf/fonts/`

5. Passer `APP_DEBUG` à `false` dans `config/config.php` une fois
   l'installation validée (évite d'afficher les erreurs PHP aux visiteurs).

## 3. Prise en main

1. Aller sur `/admin/polices.php` et uploader les 2 fichiers `.ttf`
   (police "script" du titre + police du corps de texte). La conversion
   au format TCPDF se fait automatiquement.

2. Aller sur `/admin/modele_form.php` et créer un modèle :
   - nom du modèle
   - image de fond JPEG (205×290mm, 300 DPI conseillé)
   - image overlay PNG transparente (bords perdus)
   - dimensions de la grille (par défaut 2 colonnes × 3 lignes) et
     dimensions d'une étiquette
   - décalages globaux horizontal/vertical pour ajuster la position de la
     grille sur la page (utile pour caler avec un massicot par exemple)

3. Une fois le modèle enregistré, on est redirigé vers la gestion de ses
   **champs** (`/admin/champs.php`). Ajouter un champ par information à
   afficher (ex : `titre`, `nom_rucher`, `type_miel`, `saison`, `recolte`,
   `ddm`, `poids`, `siret`, `telephone`, `adresse`...), en précisant pour
   chacun :
   - la police et la taille
   - la couleur (sélecteur visuel ou code hex)
   - la position X/Y en mm depuis le coin haut-gauche de l'étiquette
   - la largeur du bloc de texte et son alignement

   Pour l'historique, il est recommandé d'utiliser exactement les
   identifiants techniques `nom_rucher`, `saison` et `ddm` sur au moins un
   champ chacun : ce sont les 3 colonnes affichées automatiquement dans
   l'écran d'historique.

4. Aller sur `/public/index.php`, choisir le modèle, remplir le
   formulaire généré automatiquement à partir des champs configurés, puis
   cliquer sur "Générer et télécharger le PDF". Le PDF (6 étiquettes
   identiques) est téléchargé directement — rien n'est stocké sur le
   serveur, seules les valeurs saisies sont enregistrées dans
   l'historique.

5. `/public/historique.php` liste les générations passées. Le bouton
   "Dupliquer / Modifier" recharge le formulaire du modèle avec les
   anciennes valeurs, pré-remplies et modifiables, pour générer une
   nouvelle planche sans ressaisir tous les champs.

## 4. Notes techniques

- **Qualité d'impression** : les images sont insérées sans recompression
  (`setJPEGQuality(100)`), le texte est rendu à 100% en vecteur (jamais
  rasterisé), donc net à n'importe quelle résolution d'impression.
- **Suppression de modèle** : la suppression depuis l'admin est une
  suppression logique (le modèle disparaît de la liste et du formulaire
  public, mais reste lié à l'historique existant). Un bouton "Réactiver"
  permet de le faire réapparaître.
- **Pas d'authentification** volontairement (usage mono-utilisateur) : ne
  pas partager l'URL de l'application publiquement.
- **Sécurité uploads** : les fichiers uploadés (JPEG/PNG/TTF) sont
  vérifiés par extension ET par type MIME réel avant écriture, et
  renommés aléatoirement sur le disque.
