Listez les champs PDF : noms, types et valeurs
Un PDF peut sembler être une page ordinaire tout en contenant un formulaire structuré sous sa mise en page visible.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Cette capacité lit cette structure et renvoie un inventaire clair de tous les champs, avec leur nom complet, leur type reconnu et leur valeur actuelle. Elle prend en charge les contrôles AcroForm courants des demandes, questionnaires, validations et dossiers d’inscription. Le traitement est déterministe et local : aucun appel réseau, aucune estimation par modèle et aucun résultat aléatoire. Si le fichier n’est pas un PDF, s’il est endommagé ou s’il ne contient aucun champ, la requête renvoie une erreur explicite plutôt qu’un résultat vide pouvant être pris pour un succès.
Examinez la structure réelle du formulaire PDF
Les formulaires PDF interactifs stockent leurs contrôles séparément des mots et des lignes dessinés sur les pages. Un champ peut porter le nom interne customer.address.postcode alors que la page affiche seulement « Code postal ». Cette capacité suit le catalogue jusqu’au dictionnaire AcroForm, parcourt l’arborescence des champs, applique les propriétés héritées et renvoie les champs terminaux dans l’ordre du document. Chaque résultat contient le nom complet, un type normalisé et la valeur enregistrée dans le PDF. Les zones de texte, cases à cocher, groupes de boutons radio, listes déroulantes, listes d’options, boutons et signatures sont distingués grâce au type et aux indicateurs du document. Les noms hiérarchiques sont reliés par des points afin que des contrôles semblables situés dans différentes sections restent sans ambiguïté. La sortie constitue donc un inventaire de schéma exploitable par une machine, et non une simple extraction du texte visible. Une case sans valeur active est indiquée par false, et un champ de signature vide est signalé sans prétendre qu’une signature existe.
Envoyez le document et interprétez la réponse
Transmettez le PDF dans le paramètre pdf sous forme de base64 brut ou d’URL de données application/pdf encodée en base64. L’analyseur vérifie d’abord l’encodage et l’en-tête PDF, puis lit les objets indirects nécessaires pour trouver le catalogue et l’arborescence des champs. La réponse comprend fields, un tableau d’enregistrements, et count, le nombre de champs renvoyés. Les types utilisent des noms pratiques comme TextField, CheckBox, RadioGroup, Dropdown, OptionList, PushButton et Signature. Les valeurs conservent les chaînes et tableaux du PDF, tandis que l’état d’une case devient un booléen. Les contrôles textuels vides utilisent une chaîne vide et se distinguent ainsi des champs absents. Ne confondez pas l’étiquette imprimée près d’un contrôle avec son nom interne : seule la définition du formulaire détermine le nom renvoyé. Une erreur est volontairement produite lorsqu’aucun champ n’existe, afin que votre automatisation repère un PDF aplati, un formulaire numérisé ou une mauvaise pièce jointe. La taille admise est limitée pour garantir un traitement prévisible.
Utilisez cet inventaire dans vos flux documentaires
L’inventaire des champs constitue une bonne première étape avant de remplir, valider, migrer ou auditer un formulaire PDF. Un système d’intégration peut, par exemple, comparer les noms renvoyés aux clés de sa base de données avant de remplir un modèle. Un contrôle qualité peut vérifier qu’une nouvelle version conserve les champs obligatoires et que leurs types n’ont pas changé. Une migration d’archives peut consigner les valeurs incluses dans chaque document interactif avant son aplatissement. Comme l’algorithme ne contacte aucun service externe et ne déduit rien de l’apparence des pages, des octets identiques produisent toujours le même JSON. Cette stabilité est précieuse pour les tests et les pistes d’audit. Il s’agit toutefois d’un lecteur de structures AcroForm, et non d’un outil de reconnaissance optique : la numérisation d’un formulaire papier contient des pixels, mais aucun champ interactif, et provoque donc l’erreur prévue. La capacité ne modifie, n’aplatit, ne signe, ne déchiffre et ne répare aucun document. Préparez au préalable les fichiers chiffrés ou illisibles.
Cas d’usage
Cartographiez un formulaire avant de le remplir
Découvrez les noms internes exacts et les types de contrôles que votre flux doit cibler avant d’envoyer les données.
Détectez les régressions d’un modèle
Comparez l’inventaire à un contrat approuvé lors de la publication d’une nouvelle version du formulaire PDF.
Auditez les réponses enregistrées
Extrayez les valeurs actuelles de demandes ou validations interactives pour une révision et une migration structurées.
Questions fréquentes
Quel est le prix d’une requête ?
Le tarif de l’API est de $0.002 par requête.
Quels types de champs PDF sont reconnus ?
La sortie distingue les textes, cases, groupes radio, menus, listes, boutons et signatures.
Que se passe-t-il si le PDF ne contient aucun formulaire ?
La requête renvoie une erreur d’entrée indiquant que le PDF ne comporte aucun champ.
Peut-on lire un formulaire papier numérisé ?
Non. Une page numérisée nécessite une OCR ; cette capacité lit les structures AcroForm interactives.
Le document est-il modifié ou rempli ?
Non. Seuls les noms, types et valeurs sont indiqués ; le PDF transmis reste inchangé.
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/list-form-fields \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"https://ejemplo.com/documento.pdf"}'const res = await fetch("https://api.kit.forhosting.com/pdf/list-form-fields", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "https://ejemplo.com/documento.pdf"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/list-form-fields",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "https://ejemplo.com/documento.pdf"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/list-form-fields", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pdf":"https://ejemplo.com/documento.pdf"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"https://ejemplo.com/documento.pdf"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/list-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
{
"pdf": "https://ejemplo.com/documento.pdf"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.list_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. |