Prérequis fondamentaux
Guide complet pour créer des modèles et/ou des documents automatisés avec HTML, JSON et le SDK de génération de documents.
Toute automatisation nécessite exactement 3 fichiers :
| Fichier | Description |
|---|---|
| HTML masque | Le HTML que l'utilisateur voit en remplissant le formulaire via le SDK |
| HTML complet | HTML servant à générer le PDF final, inclut les espaces pour les signatures |
| Objet JSON | Contrôle le comportement, définit les signataires et les questions |
Flux général
Le processus commence toujours par la construction du HTML complet. Ce document doit contenir des espaces modifiables où l'utilisateur saisit les informations. Ce HTML dépendra des variables enregistrées dans le JSON, où chaque question possède un identifiant.
Par exemple :
- HTML:
<p>Description : <span name="question_1">___________</span></p>
- Question dans le JSON :
[
...,
{
"name": "question_1",
"description": "Saisissez le nom complet du représentant légal de l'entreprise employeuse",
"type": "text"
},
...
]
- Ce que l'utilisateur voit finalement :

Configuration
- Pour commencer à générer les fichiers HTML, découvrez tout sur leur création dans Configuration HTML.
- Pour commencer à générer le fichier JSON, consultez la référence complète dans Configuration JSON — elle couvre les 17 types de questions, les validations et la logique conditionnelle.
- Pour les modèles qui doivent valider un code ou rechercher des données préremplies depuis votre propre service, consultez Type de requête.
Conseils et bonnes pratiques
- Nommage cohérent : utilisez un
snake_casedescriptif pour les questions :buyer_name,seller_email. - Faire correspondre les types de champs à la sémantique : utilisez
identificationpour les pièces d'identité des signataires (et nontextounumber),nitpour les numéros fiscaux colombiens,currencypour les montants,emailpour les adresses e-mail. - Validation anticipée : indiquez les questions critiques dans le tableau
sign. - Tirer parti des validations : déduisez
subYears(âge),maxlength,regex,min/maxà partir des exigences propres au document. Voir Propriétés de validation. - Convention des signataires : ancrez chaque signature avec
<div name="X">, et non avecid. Si une signature apparaît à plusieurs endroits, répétez le mêmename— voir Placement des signatures. - Champs automatiques : ajoutez
<span name="signDate">à l'endroit où la date de signature doit apparaître. Voir Champs automatiques à la fin de la signature. - Identifications multiples : utilisez
|danssignatureProfile.identificationpour prendre en charge plusieurs types de documents pour un même signataire. - Contraintes du générateur de PDF : le générateur de PDF d'Auco ne prend pas en charge flexbox, CSS Grid ni les variables CSS dans le HTML complet. Voir Contraintes du générateur de PDF.
- Tests : vérifiez que chaque option
clausulas'affiche/se masque correctement et que l'option par défaut correspond à lavaluede la configuration.
Liste de vérification
Avant de déployer votre automatisation, vérifiez que :
- Vous disposez des 3 fichiers (HTML masque, HTML complet, JSON).
- Chaque question du JSON possède
name,descriptionettype. - Chaque
namedu HTML correspond à une question du JSON — et inversement. - Les questions
clausulaont un<span name="{name}_{value}">par option dans le HTML. - La
valuepar défaut d'une configurationclausulacorrespond au span sans l'attributhidden. - Les questions avec
prereqréférencent des questions de typeclausula. - Chaque signataire de
signatureProfilea son<div name="X">dans le HTML complet, avecXégal à sontype. - Les questions de
signréférencent des noms de questions réels. - Les questions d'identification des signataires utilisent
type: "identification", les NIT utilisenttype: "nit". - Les questions
checkutilisent un tableau platvalues: [...](et nonoptions). - Le HTML n'utilise pas
display: flex, CSS Grid ni les variables CSS. - Les caractères UTF-8 (
ñ,á) sont écrits directement, et non sous forme d'entités HTML. - Si vous utilisez
preBuild: true, vous avez incluspreBuildData.
Exemple intégré complet
JSON complet
{
"name": "Contrat de vente",
"preBuild": false,
"sign": ["buyer_name", "buyer_email"],
"config": [
{
"name": "buyer_name",
"description": "Saisissez votre nom complet",
"type": "name"
},
{
"name": "identification_type",
"description": "Sélectionnez votre type de pièce d'identité",
"type": "clausula",
"value": "id_card",
"options": [
{ "name": "Carte d'identité nationale", "value": "id_card" },
{ "name": "Carte d'identité étrangère", "value": "foreign_id" }
]
},
{
"name": "id_card_number",
"description": "Saisissez votre numéro d'identification",
"type": "number",
"prereq": [{ "k": "identification_type", "v": "id_card" }]
},
{
"name": "foreign_id_number",
"description": "Saisissez votre numéro de pièce d'identité étrangère",
"type": "number",
"prereq": [{ "k": "identification_type", "v": "foreign_id" }]
},
{
"name": "buyer_email",
"description": "Saisissez votre adresse e-mail",
"type": "email"
},
{
"name": "buyer_phone",
"description": "Saisissez votre numéro de téléphone",
"type": "phone"
},
{
"name": "transaction_value",
"description": "Saisissez la valeur totale de l'achat",
"type": "currency"
},
{
"name": "transaction_date",
"description": "Sélectionnez la date de la transaction",
"type": "date"
},
{
"name": "product_description",
"description": "Décrivez brièvement le produit",
"type": "text"
}
],
"signatureProfile": [
{
"name": "buyer_name",
"identification": "id_card_number|foreign_id_number",
"email": "buyer_email",
"phone": "buyer_phone",
"type": "buyer"
}
]
}
HTML masque
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Contrat de vente</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 40px auto;
padding: 20px;
}
.section {
margin-bottom: 30px;
padding: 15px;
border: 1px solid #ddd;
border-radius: 5px;
}
h1 {
text-align: center;
color: #333;
}
label {
font-weight: bold;
display: block;
margin-bottom: 5px;
}
span {
border-bottom: 1px solid #000;
min-width: 200px;
display: inline-block;
padding: 5px;
}
</style>
</head>
<body>
<h1>Contrat de vente</h1>
<div class="section">
<h2>Informations sur l'acheteur</h2>
<label>Nom complet :</label>
<span name="buyer_name">___________________</span>
<label>Type de pièce d'identité :</label>
<span name="identification_type_id_card">Carte d'identité</span>
<span name="identification_type_foreign_id" hidden>Pièce d'identité étrangère</span>
<label>Numéro d'identification :</label>
<span name="id_card_number">___________________</span>
<span name="foreign_id_number" hidden>___________________</span>
<label>Adresse e-mail :</label>
<span name="buyer_email">___________________</span>
<label>Téléphone de contact :</label>
<span name="buyer_phone">___________________</span>
</div>
<div class="section">
<h2>Informations sur la transaction</h2>
<label>Description du produit :</label>
<span name="product_description">___________________</span>
<label>Valeur totale :</label>
<span name="transaction_value">___________________</span>
<label>Date de la transaction :</label>
<span name="transaction_date">___________________</span>
</div>
<p style="margin-top: 50px; text-align: center;">Signature de l'acheteur : ______________________</p>
</body>
</html>
HTML complet
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Contrat de vente</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 40px auto;
padding: 20px;
}
.sign-margin {
min-height: 100px;
margin-top: 30px;
page-break-inside: avoid;
}
</style>
</head>
<body>
<h1>Contrat de vente</h1>
<h2>Informations sur l'acheteur</h2>
<p>
Nom : <strong><span name="buyer_name">___________________</span></strong>
</p>
<p>
Pièce d'identité :
<strong
><span name="id_card_number">___________________</span
><span name="foreign_id_number" hidden>___________________</span></strong
>
</p>
<p>
E-mail : <strong><span name="buyer_email">___________________</span></strong>
</p>
<h2>Informations sur la transaction</h2>
<p>
Produit : <strong><span name="product_description">___________________</span></strong>
</p>
<p>
Valeur : <strong><span name="transaction_value">___________________</span></strong>
</p>
<p>
Date : <strong><span name="transaction_date">___________________</span></strong>
</p>
<h2>Signature</h2>
<div name="buyer" class="sign-margin"></div>
</body>
</html>