diff --git a/doc/source/administrator/index.rst b/doc/source/administrator/index.rst
index 4807371844fac6387de149fd80dacb7609bd44bd..4065935ec66a0d434f356f2b6bfa162f60b52753 100644
--- a/doc/source/administrator/index.rst
+++ b/doc/source/administrator/index.rst
@@ -13,6 +13,7 @@ Il est conseillé aux administrateurs de consulter en premier la `Documentation
    authentification/index.rst
    rights/index.rst
    users.md
+   rapports/index.rst
    configuration/index.rst
    api/api.rst
    journaux.md
diff --git a/doc/source/administrator/rapports/definition_html.md b/doc/source/administrator/rapports/definition_html.md
new file mode 100644
index 0000000000000000000000000000000000000000..ec3047efd71bc72fa278b15f8e0cb0dff4c2aab4
--- /dev/null
+++ b/doc/source/administrator/rapports/definition_html.md
@@ -0,0 +1,150 @@
+# Définition du modèle HTML
+
+Un rapport est défini selon un modèle HTML développé par l'administrateur.  
+Il est également possible d'utiliser le langage CSS dans la définition HTML pour personnaliser son rapport.  
+```{Note}
+  Le modèle HTML peut utiliser la syntaxe de AngularJS pour lui permettre de réaliser des conditions ou de boucler sur un élément (Exemple `ng-if` et `ng-repeat`).
+```
+
+## Intégrer une valeur dynamique dans le rapport 
+
+Lorsqu'un rapport est lié à une couche, il est possible d'insérer une valeur dynamique à partir des champs de celle-ci. Pour cela, il faut indiquer le champ précédé par "BO." et le tout entouré d'accolades.  
+
+**Exemple :**
+
+Si dans la couche "Ville" il y a un champ "nom_ville", il est possible d'utiliser `{{BO.nom_ville}}` dans le rapport. Cette balise sera alors remplacée par la valeur du champ "nom_ville" de l'objet courant.
+
+```html
+<p>{{BO.nom_ville}}</p>
+```
+
+### Variables disponibles
+
+En plus des variables possibles à renseigner depuis la couche associée, les rapports de vMap disposent d'un ensemble de variables disponibles par défaut. Pour les utiliser, il suffit de les insérer en les entourant de doubles accolades (**{{..}}**).
+
+- **date** : date du jour
+- **date_hour** : date et heure du jour
+- **layer_sources** : sources des couches
+- **map_legend** : légende de la carte principale
+- **user_name** : nom de l'utilisateur
+- **user_login** : login de l'utilisateur
+- **user_company** : société de l'utilisateur
+- **user_department** : service de l'utilisateur
+- **user_email** : adresse mail de l'utilisateur
+- **user_id** : identifiant de l'utilisateur
+
+## Intégrer une image dynamiquement
+
+Il est possible d'intégrer une image dans un rapport en utilisant la balise HTML **img** et en modifiant la source dynamiquement. Deux formats sont alors pris en compte :
+
+- Lien (de type https://...)
+- Base 64 (de type data:image/png;base64,...)
+
+<u>Exemple :</u>
+```html
+<img src="https://www.example.com/image.png" alt="Description de l'image">
+<img src="data:image/png;base64,..." alt="Description de l'image">
+```
+
+Il est aussi possible de mettre un id="..." à la balise et de la lier à un objet JSON pour afficher l'image dynamiquement.  
+
+*Exemple avec id et lien à un objet JSON :*
+
+Code HTML : 
+```html
+<img id="sig_logo" src="" alt="Image dynamique">
+```
+
+Code Json correspondant à l'image: 
+
+```html
+{
+	"type": "image",
+	"imageUrl": "data:image/png;base64,iVBORw0KGgoAAxFDAnF6fftB2....",
+	"target": "#sig_logo"
+}
+```
+
+```{Note}
+Si à la fois l'attribut id de la balise HTML et l'attribut src sont tous deux remplis, l'objet JSON prendra le dessus pour déterminer l'URL finale de l'image affichée.
+```
+
+## Intégrer une valeur dynamique à l'aide d'une boucle
+
+Dans certains cas, l'objet Json renvoie de multiples valeurs. Afin de pouvoir toutes les afficher dans le rapport, réaliser une boucle peut s'avérer nécessaire. Pour cela, utiliser la syntaxe `ng-repeat` dans le modèle HTML.
+
+```{Note}
+Il est également possible d'ajouter la syntaxe `ng-if` dans les boucles pour faire des conditions.
+```
+
+Voici comment procéder :
+
+1. S'assurer que les données que l'on souhaite afficher dans la boucle sont disponibles sous forme d'un [Objet JSON](objet_json.md).
+2. Utiliser la syntaxe `ng-repeat` et `ng-if` dans le modèle HTML utiliser les données de l'Objet JSON
+3. À chaque itération de la boucle, accéder aux propriétés de l'objet souhaité pour afficher les données dans le rapport.
+
+### Exemple :
+
+Supposons que l'ont ait une liste d'objets représentant des intersections de routes, et que l'on souhaite afficher les détails de chaque intersection dans le rapport. Voici comment procéder en utilisant `ng-repeat` :
+
+```html
+<!-- Boucle exécutée uniquement si parcel_details existe -->
+<div ng-repeat="parcelle in parcel_details" ng-if="parcel_details">
+    <div ng-if="parcelle.prop">
+        <!-- Afficher les détails de chaque intersection -->
+        <p>Propriétaire de la parcelle : {{parcelle.prop}}</p>
+    </div>
+    <div ng-if="parcelle.id_par">
+        <p>Nombre de routes : {{parcelle.id_par}}</p>
+        <!-- Ajoutez d'autres détails selon vos besoins -->
+    </div>
+</div>
+```
+
+Dans cet exemple :
+
+- ng-repeat="parcelle in parcel_details" indique que vous itérez à travers la liste de parcelles stockées dans la variable parcel_details.
+- {{parcelle.prop}}, {{parcelle.id_par}}, etc., représentent les propriétés de chaque objet `parcelle` que vous affichez dans votre rapport.
+
+Il est aussi possible d'afficher entièrement un objet au format JSON dans le rapport en utilisant la syntaxe `{{ ma_variable|json }}`.  
+En reprenant notre exemple cela donnerait : 
+
+```html
+<div ng-if="parcelle">
+    {{parcelle|json}}
+</div>
+```
+
+## Exemple complet
+
+```html
+<style>
+.prop {
+    font-size: 15px;
+    color: red;
+    text-align: center;
+}
+
+#id_par {
+    font-size: 12px;
+}
+</style>
+
+<!-- Boucle exécutée uniquement si parcel_details existe -->
+<div ng-repeat="parcelle in parcel_details" ng-if="parcel_details">
+    <div ng-if="parcelle.prop">
+        <!-- Afficher les détails de chaque intersection -->
+        <p class="prop">Propriétaire de la parcelle : {{parcelle.prop}}</p>
+    </div>
+    <div ng-if="parcelle.id_par">
+        <p id="id_par">Nombre de routes : {{parcelle.id_par}}</p>
+        <!-- Ajoutez d'autres détails selon vos besoins -->
+    </div>
+    <img src="https://www.veremes.com/wp-content/uploads/2023/01/vMap2_carteFrance.webp" alt="Image d'exemple">
+    <!-- L'objet sig_logo doit être renseigné dans l'objet JSON -->
+    <img id="sig_logo" src="" alt="Image dynamique">
+    <div ng-if="parcelle">
+        {{parcelle|json}}
+    </div>
+</div>
+```
\ No newline at end of file
diff --git a/doc/source/administrator/rapports/index.rst b/doc/source/administrator/rapports/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..a9ed02dff59b0a54c63f141d4bec35dd0bf4d8b5
--- /dev/null
+++ b/doc/source/administrator/rapports/index.rst
@@ -0,0 +1,16 @@
+Mode Rapport
+============================================
+
+--------------
+
+Le mode rapport permet d'administrer les rapports disponibles dans l'application c'est à dire, d'en définir un modèle, et de le compléter par des valeurs issues de données variables.
+
+============================================
+
+.. toctree::
+   :maxdepth: 2
+   :glob:
+
+   informations_generales.md
+   definition_html.md
+   objet_json.md
diff --git a/doc/source/administrator/rapports/informations_generales.md b/doc/source/administrator/rapports/informations_generales.md
new file mode 100644
index 0000000000000000000000000000000000000000..29c6ef255f445c93e8bde0a33368425c7520faf5
--- /dev/null
+++ b/doc/source/administrator/rapports/informations_generales.md
@@ -0,0 +1,23 @@
+# Informations générales
+
+Un rapport est un document PDF généré dans vMap et personnalisable permettant d'afficher diverses informations selon les besoins des utilisateurs. Ce document est basé sur un modèle écrit par un administrateur de l'application.  
+Il peut être généré à partir de deux endroits dans l'application :
+- Le requêteur
+![rapport_requeteur](../../images/administrator/rapports/rapport_requeteur.png)
+- Edition d'un objet métier
+![rapport_objet_metier](../../images/administrator/rapports/rapport_objet.png)
+
+Pour qu'un rapport soit disponible, il est nécessaire de le créer à partir du menu "Rapports".
+
+Lors de la création d'un rapport, plusieurs paramètres doivent être renseignés :
+- **Nom du rapport** : Nom affiché dans les différentes listes de sélection du rapport.
+- **Format de la page** : Formats pris en charge allant de A0 à A4.
+- **Orientation du document** : Format **portrait** ou **paysage**.
+- **Format de sortie** : Extension du document téléchargé après sa génération (par exemple : PDF).
+- **Couche** : Le rapport doit être associé à une couche unique pour laquelle il sera disponible. Par exemple, si un rapport doit être généré lors de la sélection d'un objet de la couche "Ville" sur la carte, il faut associer ce rapport à la couche "Ville".
+- **Rapport sur plusieurs éléments dans un fichier** : En cas de sélection multiple, ce paramètre indique si l'application doit générer un rapport par élément (Non) ou un seul rapport contenant tous les éléments (Oui).
+- **Active les styles d'impression** : Si activé, une fenêtre modale s'ouvrira lorsque l'utilisateur demandera la génération d'un rapport, pour sélectionner le style d'impression à utiliser.
+- **Définition HTML** : Voir [Définition du modèle HTML](definition_html.md).
+- **Objet JSON** : Voir [Objet JSON](objet_json.md).
+
+![rapport_parametres](../../images/administrator/rapports/rapport_parametres.png)
\ No newline at end of file
diff --git a/doc/source/administrator/rapports/objet_json.md b/doc/source/administrator/rapports/objet_json.md
new file mode 100644
index 0000000000000000000000000000000000000000..41f240330b68fdc5c64a53f9ceafe0d3a8592724
--- /dev/null
+++ b/doc/source/administrator/rapports/objet_json.md
@@ -0,0 +1,98 @@
+# Objet JSON
+
+Pour générer des rapports dynamiques, l'application utilise des objets JSON définis selon une structure spécifique. Cette section explique la structure et les différents types de données que l'on peut inclure dans ces objets JSON.
+
+## Exemple d'objet JSON
+
+```json
+[
+    {
+        "type": "map",
+        "target": "#map_container",
+        "map_id": 10,
+        "resolution_coeff": 1,
+        "scale_target": "map_scale"
+    },
+    {
+        "type": "webservice",
+        "params": {
+            "schema": "s_cadastre",
+            "table": "v_vmap_parcelle",
+            "filter": "{\"column\":\"id_par\", \"compare_operator\":\"=\", \"value\": \"{{BO.id_par}}\"}"
+        },
+        "target": "parcel_details"
+    },
+    {
+        "type": "webservice",
+        "ressource": "/cadastre/ficheurbanisme",
+        "params": {
+            "ID_PAR": "{{BO.id_par}}"
+        },
+        "target": "urbanism_report"
+    },
+    {
+        "type": "image",
+        "imageUrl": "https://example.com/images/logo.png",
+        "target": "#sig_logo"
+    },
+    {
+        "type": "object",
+        "content": {
+            "company": "Ma_compagnie"
+        },
+        "target": "sig_info"
+    }
+]
+```
+
+## Explication des champs
+
+### 1. Map (`type: "map"`)
+
+- **target** : Élément HTML cible pour afficher la carte. Utiliser un sélecteur CSS.
+- **map_id** : Identifiant de la carte.
+- **resolution_coeff** : Coefficient de résolution de la carte.
+- **scale_target** : Élément HTML cible pour afficher l'échelle de la carte.
+
+### 2. Webservice (`type: "webservice"`)
+
+Il y a deux possibilités pour ce type de ressource :
+
+1. **Utilisation d'une table locale de la base de données de l'application** :
+    - **params** :
+      - **schema** : Schéma de la base de données.
+      - **table** : Table de la base de données.
+      - **filter** : Filtre pour la requête SQL. Il est possible d'inclure des variables dynamiques ou fixes, et d'inclure plusieurs filtres si besoin.
+      Le filtre doit être sous forme de chaîne de caractères avec les guillemets échappés, comme suit :
+        ```json
+        "[{\"column\":\"id_par\", \"compare_operator\":\"=\", \"value\": \"{{BO.id_par}}\"}, {\"column\":\"id_par\", \"compare_operator\":\"=\", \"value\": \"AZ0001\"}]"
+        ```
+        - **column** : Nom de la colonne à filtrer.
+        - **compare_operator** : Opérateur de comparaison. Les opérateurs disponibles sont :
+          - `=`, `!=`, `<>`, `>=`, `<=`, `>`, `<`, `IN`, `NOT IN`, `IS NULL`, `IS NOT NULL`, `LIKE`, `INTERSECT`.
+        - **value** : Valeur à comparer, qui peut inclure une variable dynamique telle que `{{BO.id_par}}`.
+    - **target** : Nom de la variable à utiliser dans le HTML avec les doubles accolades. Par exemple : `{{parcel_details}}`.  
+
+2. **Utilisation d'une route externe** :
+    - **ressource** : Chemin de la ressource du webservice.
+    - **params** : Les paramètres nécessaires pour la route. Ces paramètres dépendent des besoins spécifiques de la route externe et peuvent inclure des variables dynamiques. Exemple :
+      ```json
+      {
+          "ID_PAR": "{{BO.id_par}}"
+      }
+      ```
+    - **target** : Nom de la variable à utiliser dans le HTML avec les doubles accolades. Par exemple : `{{urbanism_report}}`.
+
+Les routes disponibles via l'utilisation du webservice peuvent être trouvées dans le mode "API" de l'application :
+![rapport_routes](../../images/administrator/rapports/rapport_routes.png)
+
+### 3. Image (`type: "image"`)
+
+- **imageUrl** : URL de l'image à intégrer.
+- **target** : Élément HTML cible pour afficher l'image. Utiliser un sélecteur CSS.
+
+### 4. Object (`type: "object"`)
+
+- **content** : Contenu de l'objet, peut inclure diverses propriétés.
+- **target** : Nom de la variable à utiliser dans le HTML avec les doubles accolades. Par exemple : `{{sig_info}}`.
+
diff --git a/doc/source/images/administrator/rapports/rapport_objet.png b/doc/source/images/administrator/rapports/rapport_objet.png
new file mode 100644
index 0000000000000000000000000000000000000000..f67594ae03c14fcf0e409a2ae2d5406249f5e99e
Binary files /dev/null and b/doc/source/images/administrator/rapports/rapport_objet.png differ
diff --git a/doc/source/images/administrator/rapports/rapport_parametres.png b/doc/source/images/administrator/rapports/rapport_parametres.png
new file mode 100644
index 0000000000000000000000000000000000000000..29da887caf3503f0a4f64bedc3998cb4e11cfc40
Binary files /dev/null and b/doc/source/images/administrator/rapports/rapport_parametres.png differ
diff --git a/doc/source/images/administrator/rapports/rapport_requeteur.png b/doc/source/images/administrator/rapports/rapport_requeteur.png
new file mode 100644
index 0000000000000000000000000000000000000000..e12ace5bd3684ddcc0c14114dfc125593653dc8b
Binary files /dev/null and b/doc/source/images/administrator/rapports/rapport_requeteur.png differ
diff --git a/doc/source/images/administrator/rapports/rapport_routes.png b/doc/source/images/administrator/rapports/rapport_routes.png
new file mode 100644
index 0000000000000000000000000000000000000000..1358f4cdbfbcd750f5ba85f3f90ad0c47b4e650d
Binary files /dev/null and b/doc/source/images/administrator/rapports/rapport_routes.png differ