Valider les champs obligatoires et valeurs d’un PDF
Avant de remplir le formulaire, le nom Ada Lovelace, la date de naissance 1815-12-10 et le choix « e-mail » sont vérifiés selon quatre règles, et la case lettre d'information restée vide est signalée comme facultative. Une date comme 2025-02-29 est refusée. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Validez les données destinées à un formulaire PDF avant de commencer à remplir le document. Fournissez les définitions des champs et un objet de valeurs : cette capacité contrôle les champs requis, les types exacts, les dates réelles, les choix autorisés, les définitions en double et les clés inattendues. Si tout est conforme, elle renvoie un ensemble propre de valeurs validées.
Définissez précisément le contrat du formulaire
Commencez par décrire chaque champ du formulaire PDF avec un nom unique, un type pris en charge et un indicateur facultatif signalant s’il est requis. Les types disponibles couvrent le texte, les nombres finis, les entiers, les booléens, les dates calendaires ISO, les listes à choix unique et les listes à choix multiples. Les champs de sélection exigent également une liste d’options afin que le validateur distingue une réponse autorisée d’une chaîne quelconque.
Les définitions constituent le contrat de l’objet de valeurs : chaque valeur transmise doit correspondre à une définition, et les noms en double sont refusés, car ils rendraient le contrôle ambigu. Reprenez exactement les noms de champs attendus par l’étape ultérieure de remplissage du PDF, y compris leur casse. Cette capacité n’examine pas le PDF et ne tente pas d’en deviner les champs.
Séparer la découverte des champs de leur validation simplifie les tests et permet de réutiliser le même contrat pour de nombreux dossiers. L’indicateur required vaut false lorsqu’il est omis, tandis qu’un champ explicitement requis doit contenir une valeur significative. Pour le texte, une chaîne composée uniquement d’espaces est considérée comme absente.
Comprenez le contrôle strict des valeurs
Les valeurs sont vérifiées sans conversion automatique. Un booléen doit être true ou false, jamais "yes", 1 ou 0. Les dates suivent le format sans ambiguïté YYYY-MM-DD et doivent désigner un jour réel du calendrier ; une valeur comme 2025-02-29 est donc refusée.
Une sélection doit correspondre exactement à l’une des chaînes déclarées, en respectant la casse. Une sélection multiple doit être un array de chaînes autorisées et distinctes ; une option répétée ou inconnue provoque un échec. Cette rigueur révèle les erreurs de correspondance avant qu’elles ne produisent des documents discrètement inexacts.
L’opération s’arrête au premier problème et fournit une indication ciblée que votre formulaire ou votre processus peut présenter à l’utilisateur.
Placez la validation avant la génération du PDF
Utilisez cette capacité juste après avoir associé les données de l’application aux noms des champs PDF et avant d’appeler l’outil qui écrit réellement dans le document. Un résultat réussi contient valid true, le nombre de définitions examinées, les valeurs acceptées et les champs facultatifs non fournis. Les clés inconnues sont refusées, car une faute dans un nom de champ pourrait autrement disparaître silencieusement au moment du remplissage.
Ce contrôle est particulièrement utile dans les traitements par lots, où une mauvaise correspondance risque d’affecter des centaines de documents. Conservez les définitions avec la version du modèle, validez chaque dossier par rapport à cette version, puis transmettez uniquement les dossiers conformes à l’étape de remplissage. L’algorithme s’exécute localement, sans réseau, hasard, inférence de modèle ni état persistant ; des entrées identiques donnent donc toujours le même résultat.
Cas d’usage
Contrôler les formulaires d’intégration
Vérifiez les noms, dates, consentements booléens et choix obligatoires avant de générer les formulaires remplis des salariés ou clients.
Sécuriser les traitements documentaires par lots
Refusez un dossier incorrect avant son arrivée dans la file de génération PDF et évitez ainsi un document incomplet.
Questions fréquentes
Cette capacité modifie-t-elle le PDF ?
Non. Elle valide uniquement les définitions et les valeurs. Transmettez ensuite les valeurs validées à une capacité de remplissage PDF.
Comment les dates sont-elles contrôlées ?
Elles doivent suivre YYYY-MM-DD et désigner un vrai jour, avec une gestion correcte des années bissextiles.
Les valeurs peuvent-elles contenir des champs non définis ?
Non. Les clés inconnues sont refusées afin de révéler les fautes de frappe et les correspondances devenues obsolètes.
Que se passe-t-il si un champ obligatoire ne contient que des espaces ?
Il compte comme vide : le contrôle échoue et le message nomme ce champ. Seule une vraie valeur complète un texte obligatoire ; les champs facultatifs absents sont simplement listés comme non fournis.
Accepte-t-il « oui » pour une case à cocher ou un nombre entier écrit en texte ?
Non. Rien n'est converti à votre place : une case oui ou non attend une valeur vrai ou faux, pas le mot oui ni le chiffre 1, et un nombre entier doit arriver comme nombre, pas comme le texte 12.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/pdf/fill-form-fields \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}'const res = await fetch("https://api.kit.forhosting.com/pdf/fill-form-fields", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/fill-form-fields",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/fill-form-fields", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/fill-form-fields", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.fill_form_fields",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
max_pages | 200 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Comme elle est déterministe et n’ouvre ni ne modifie le PDF, elle convient aussi bien à un contrôle préalable dans le navigateur qu’à une protection fiable dans une automatisation par API.
Comprenez le contrôle strict des valeurs
Un entier doit parvenir sous la forme d’un nombre JSON sans partie décimale, et non comme la chaîne "12". Les champs numériques n’acceptent que des nombres JSON finis. Un champ facultatif peut être absent, null ou contenir une chaîne vide ; il figure alors dans missing_optional et n’est pas copié dans validated_values. Ces mêmes représentations vides déclenchent une erreur pour un champ requis.
Placez la validation avant la génération du PDF
L’objet validated_values conserve fidèlement les valeurs JSON admises : il ne reformate pas les dates, n’arrondit pas les nombres, ne réordonne pas les sélections et n’invente aucune valeur par défaut. Le navigateur convient aux vérifications interactives, tandis qu’une requête API coûte $0.002 dans une production documentaire automatisée.
Cas d'intégration
Tester les correspondances d’un modèle
Assurez-vous que les clés de sortie et les types JSON de l’application respectent toujours le contrat d’un modèle PDF versionné.
Questions techniques
Que se passe-t-il si un champ requis manque ?
La requête échoue avec une erreur invalid_input qui indique le nom du champ requis.
Les chaînes numériques sont-elles converties en nombres ?
Non. Le contrôle est strict : un nombre ou un entier doit être fourni comme nombre JSON.
Quel est le prix d’une requête API ?
Chaque requête coûte $0.002. Le validateur déterministe peut également s’exécuter dans le navigateur.