Positionner les champs¶
Introduction¶
Les champs positionnent les zones de signature, les libellés texte, les paraphes et les dates sur les pages de vos documents PDF. Toutes les positions utilisent des coordonnées en ratios, des nombres décimaux compris entre 0.0 et 1.0, relatives aux dimensions de la page. Il n'y a aucune valeur en pixels.
Ce guide explique comment choisir la bonne stratégie de positionnement, utiliser l'outil Fields Helper, et intégrer des champs cachés dans vos PDF pour un positionnement automatique. Pour les spécifications des systèmes de coordonnées et les tableaux de paramètres, consultez la référence Systèmes de coordonnées.
Choisir une stratégie de positionnement¶
Le diagramme suivant vous aide à choisir la stratégie de positionnement la plus adaptée à votre cas d'usage :
flowchart TD
A["Positionnement des champs"] --> B{"Contrôlez-vous la\ngénération du PDF ?"}
B -- Non --> D{"Le PDF suit-il toujours\nla même structure ?"}
B -- Oui ---> C["Intégrer des champs cachés dans le PDF"]
D -- Non --> F["Calculer les coordonnées"]
D -- Oui --> E["Extraire les coordonnées\navec le Fields Helper"]
F -. "voir" .-> I["Réf. Systèmes de coordonnées"]
E -. "voir" .-> H["§ API Fields Helper"]
C -. "voir" .-> G["§ Positionnement par champs cachés"]
- Champs cachés (CS-ACP-GD) : vous générez le PDF et pouvez y intégrer des champs cachés. VoidSign détecte automatiquement la position : pas besoin de coordonnées fixes ni de recalcul.
- Fields Helper : vous recevez des PDF à structure fixe (même mise en page, même nombre de pages). Extrayez les coordonnées une fois et réutilisez-les.
- Calcul des coordonnées : les documents ont une mise en page variable et non contrôllables. Calculez les coordonnées dans votre code en utilisant les systèmes de coordonnées.
API Fields Helper¶
L'outil API Fields Helper vous permet de placer visuellement des champs sur votre PDF et d'exporter la configuration JSON. Inutile de calculer les coordonnées à la main. Ouvrez l'outil depuis le tableau de bord API sous l'onglet « Outils ».
Vous n'avez peut-être pas besoin de calculer les coordonnées
Selon la manière dont les champs sont positionnés dans vos documents, il vous suffit peut-être d'utiliser l'outil API Fields Helper pour extraire la configuration JSON des champs.
Quand les coordonnées peuvent être réutilisées telles quelles¶
Le même modèle PDF est toujours utilisé (mise en page identique, même nombre de pages, même structure).
Document formaté
Un contrat standard où le bloc de signature se trouve toujours en bas de la page 3.
Quand les coordonnées doivent être recalculées¶
- Le nombre de pages change (contenu ajouté ou supprimé)
- Le contenu se déplace entre les pages (un tableau a grandi, un paragraphe a été ajouté)
- Un modèle de document entièrement différent est utilisé
Les changements de mise en page invalident les coordonnées
Les coordonnées extraites du Fields Helper sont liées au PDF spécifique que vous avez téléversé. Si la structure de votre PDF change (nombre de pages, déplacement de contenu), les coordonnées extraites d'une version du document ne produiront pas un placement correct sur une autre. Vérifiez toujours après un changement de modèle.
Stratégies pour les documents dynamiques¶
- Réextraire : téléversez chaque variante de document dans l'API Fields Helper et extrayez de nouvelles coordonnées, pratique pour un petit nombre de variantes de modèles
- Calculer les coordonnées : si les documents sont générés dynamiquement avec des mises en page variables, calculez les coordonnées dans votre propre code en utilisant les systèmes de coordonnées décrits dans la référence
- Hybride : utilisez le Fields Helper pour déterminer les coordonnées des « zones stables » (par exemple un en-tête ou un pied de page fixe), et il est possible de déduire les coordonnées manquantes en se basant sur des parties stables et en comprenant le système de coordonnées
- Champs cachés : si vous contrôlez la génération du PDF, intégrez des champs cachés
VS_ANCH_*et utilisez le système CS-ACP-GD pour un positionnement automatique indépendant de la mise en page
Positionnement par champs cachés (CS-ACP-GD)¶
Principe¶
Le système de coordonnées CS-ACP-GD (Anchor Center Point + Given Dimensions) permet de positionner des champs de signature en référençant des marqueurs texte cachés intégrés dans le PDF. Lors de la création d'une demande de signature, VoidSign détecte automatiquement la position et la page de chaque champ caché : vous ne fournissez que les dimensions de la zone de signature.
Cette approche est idéale lorsque vous contrôlez la génération du PDF : les champs cachés suivent le contenu quelle que soit la mise en page, éliminant le besoin de recalculer les coordonnées.
Intégrer des champs cachés dans un PDF¶
Un champ caché est un texte invisible préfixé par VS_ANCH_, intégré dans le PDF lors de sa génération. La technique consiste à rendre du texte blanc sur fond blanc (ou de taille très réduite) à l'emplacement souhaité de la zone de signature. Le texte doit être écrit directement dans le flux de contenu de la page, avec une police à encodage mono-octet (par exemple Helvetica, Times, Courier).
Noms de champs cachés uniques
Utilisez des noms descriptifs ou de type GUID (par exemple VS_ANCH_a1b2c3d4) pour éviter les faux positifs avec le contenu du document. Le nom doit correspondre au motif ^VS_ANCH_[A-Za-z0-9_]+$.
Vérifier la détection des champs cachés
Utilisez l'outil API Fields Helper pour vérifier que vos champs cachés sont correctement détectés. Téléversez votre PDF : l'outil affiche les champs cachés VS_ANCH_* détectés et leurs positions.
Définition du champ avec CS-ACP-GD¶
| Paramètre | Type | Contraintes | Description |
|---|---|---|---|
type |
string | "signature" |
Type de champ |
box_coordinate_system |
string | "CS-ACP-GD" |
Identifiant du système de coordonnées |
box_center_anchor_tag |
string | ^VS_ANCH_[A-Za-z0-9_]+$ |
Nom du champ caché intégré dans le PDF |
box_width_ratio |
float | > 0.0, ≤ 1.0 | Largeur de la zone (fraction de la largeur de la page) |
box_height_ratio |
float | > 0.0, ≤ 1.0 | Hauteur de la zone (fraction de la hauteur de la page) |
signer_ref |
integer | ≥ 1 | Référence au ref d'un signataire dans la requête |
{
"type": "signature",
"box_coordinate_system": "CS-ACP-GD",
"box_center_anchor_tag": "VS_ANCH_SIGNATURE_CLIENT",
"box_width_ratio": 0.3,
"box_height_ratio": 0.1,
"signer_ref": 1
}
Pas de page_number
Contrairement aux systèmes CS-ULP-GD et CS-CP-AD, le paramètre page_number n'est pas nécessaire. La page est automatiquement déterminée à partir de la position du champ caché dans le PDF.
Uniquement pour les champs de signature
Le système CS-ACP-GD est actuellement disponible uniquement pour les champs de type signature. Les champs text, paraph et date utilisent le système CS-CP-AD.
Fiabilité et limites¶
La détection des champs cachés repose sur l'analyse du flux de contenu PDF. Consultez Limites : Champs cachés PDF pour les conditions de fiabilité et les scénarios non pris en charge.
Exemple complet : Requête multi-champs¶
Cette requête combine les quatre types de champs sur un seul document avec un signataire :
curl -X POST \
"https://api.voidsign.com/api/v1/requests" \
-H "X-VoidSign-Key: vs_live_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"auth_method": "mail",
"invitation_mode": "voidsign_mail",
"locales": ["fr-FR"],
"description": "Multi-field example",
"documents": [
{
"base64": "<BASE64_CONTENT>",
"fields": [
{
"type": "signature",
"box_coordinate_system": "CS-ULP-GD",
"box_x_ratio": 0.15,
"box_y_ratio": 0.7,
"box_width_ratio": 0.3,
"box_height_ratio": 0.1,
"page_number": 0,
"signer_ref": 1
},
{
"type": "text",
"box_coordinate_system": "CS-CP-AD",
"box_center_x_ratio": 0.5,
"box_center_y_ratio": 0.05,
"page_number": 0,
"text": "Contrat de prestation N°2024-001",
"font_size": 12.0
},
{
"type": "paraph",
"box_coordinate_system": "CS-CP-AD",
"box_center_x_ratio": 0.9,
"box_center_y_ratio": 0.95,
"page_number": "all",
"signer_ref": 1,
"font_size": 10.0
},
{
"type": "date",
"box_coordinate_system": "CS-CP-AD",
"box_center_x_ratio": 0.5,
"box_center_y_ratio": 0.92,
"page_number": 0,
"font_size": 10.0
}
]
}
],
"signers": [
{
"ref": 1,
"email": "jean.dupont@example.com",
"first_name": "Jean",
"last_name": "Dupont",
"reminder_days": [3, 7]
}
]
}'
Restriction sur le champ date
Cet exemple utilise un seul signataire, ce qui est requis lorsqu'un champ date est inclus. Supprimez le champ date si vous avez besoin de plusieurs signataires. Consultez Limites pour plus de détails.
Exemple : Requête avec champ caché¶
Cette requête utilise le système CS-ACP-GD pour positionner la signature à l'emplacement d'un champ caché intégré dans le PDF :
curl -X POST \
"https://api.voidsign.com/api/v1/requests" \
-H "X-VoidSign-Key: vs_live_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"auth_method": "mail",
"invitation_mode": "voidsign_mail",
"locales": ["fr-FR"],
"description": "Anchor-based example",
"documents": [
{
"base64": "<BASE64_CONTENT>",
"fields": [
{
"type": "signature",
"box_coordinate_system": "CS-ACP-GD",
"box_center_anchor_tag": "VS_ANCH_SIGNATURE_CLIENT",
"box_width_ratio": 0.3,
"box_height_ratio": 0.1,
"signer_ref": 1
}
]
}
],
"signers": [
{
"ref": 1,
"email": "jean.dupont@example.com",
"first_name": "Jean",
"last_name": "Dupont",
"reminder_days": [3, 7]
}
]
}'
Pas de coordonnées ni de numéro de page
Avec CS-ACP-GD, la position et la page sont déterminées automatiquement à partir de le champ caché VS_ANCH_SIGNATURE_CLIENT dans le PDF. Vous ne fournissez que les dimensions de la zone de signature.
Astuces¶
Paraphe sur chaque page
Utilisez page_number: "all" sur les champs de paraphe pour parapher chaque page d'un contrat multi-pages, inutile de créer des champs séparés pour chaque page.
Exemples de la Référence API
La Référence API inclut des exemples de schéma pour chaque type de champ. Utilisez-les comme point de départ.