Aller au contenu

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.