Positionnement des champs
Comprendre les 2 systèmes de coordonnées Inkr (fractions 0-1 et points PDF absolus) pour placer précisément les zones signature sur vos documents.
Inkr accepte 2 systèmes de coordonnées sur POST /v1/submissions/from_pdf pour placer les zones signature : fractions 0-1 (simple) et points PDF absolus (précis). Vous choisissez celui qui s'adapte le mieux à votre flux. La détection est automatique côté API.
Convention des pages
Inkr accepte les 2 conventions de numérotation de page :
| Convention | Première page | Cohérent avec |
|---|---|---|
| 1-indexée (humaine) | page: 1 | Adobe Reader, Preview, navigateur |
| 0-indexée (programmatique) | page: 0 | Un array JS ou pdf-lib en interne |
Le décalage est global au corps de la requête. La présence d'un seul page: 0 décale de +1 toutes les pages du body. Un appel qui mélange page: 0 pour un champ et page: 1 pour un autre, en pensant viser la première page dans les deux cas, place le second champ en page 2. Choisissez une convention et tenez-vous-y sur l'ensemble de l'appel. La convention 1-indexée évite entièrement ce comportement.
Système 1 : fractions 0-1 (simple)
Chaque coordonnée est une proportion de la dimension de la page. Pratique si vous voulez que la zone signature soit toujours à la même position relative, quelle que soit la taille du PDF (A4, Letter US, custom).
{
"areas": [
{ "page": 0, "x": 0.6, "y": 0.85, "w": 0.3, "h": 0.05 }
]
}Lecture :
x: 0.6: 60 % depuis la gauche de la page.y: 0.85: 85 % depuis le haut de la page (origine haut-gauche).w: 0.3: largeur de la zone = 30 % de la largeur de la page.h: 0.05: hauteur de la zone = 5 % de la hauteur de la page.
Sur une page A4 standard (595 × 842 points), ça donne :
- Coin haut-gauche de la zone : (357, 716) en points absolus.
- Coin bas-droit : (535, 758) en points absolus.
Système 2 : points PDF absolus (précis)
Chaque coordonnée est exprimée en points PDF (unité officielle Adobe : 1 pt = 1/72 inch). C'est l'unité native du format PDF, utilisée par pdf-lib, iText, PyPDF2 et l'Adobe Acrobat SDK.
{
"areas": [
{ "page": 1, "x": 357, "y": 716, "w": 178, "h": 42 }
]
}Lecture :
x: 357: 357 points depuis la gauche de la page.y: 716: 716 points depuis le haut de la page (origine haut-gauche).w: 178: largeur de la zone = 178 points.h: 42: hauteur de la zone = 42 points.
Tailles de page courantes (largeur × hauteur en points) :
| Format | Dimensions |
|---|---|
| A4 portrait | 595 × 842 |
| A4 paysage | 842 × 595 |
| Letter US portrait | 612 × 792 |
| Legal US portrait | 612 × 1008 |
Quand utiliser l'un ou l'autre
Fractions 0-1 si :
- Votre PDF a une taille fixe connue d'avance (par exemple toujours A4).
- Vous voulez la simplicité maximale au démarrage.
- Votre zone signature est positionnée par rapport à des proportions visuelles (en bas à droite, centré au milieu).
Points PDF absolus si :
- Vous générez des PDF de tailles variables (formats custom, lignes variables, tableaux dynamiques).
- Vous voulez la précision pixel-perfect alignée sur le canvas du PDF.
- Vous utilisez déjà pdf-lib ou un outil PDF qui vous donne nativement les coordonnées en points.
Détection automatique
Inkr regarde la valeur de x et y pour deviner le système :
- Si
x ≤ 1ety ≤ 1: fractions. - Sinon : points PDF.
Vous n'avez pas besoin de déclarer le mode explicitement.
La détection est globale, pas par zone. Inkr examine toutes les valeurs x, y, w et h du body. Si l'une d'elles dépasse 1, l'ensemble du body bascule en mode points. Un body contenant à la fois x: 0.6 et x: 357 place donc la zone exprimée en fractions à 0,6 point du bord, soit invisible. Ne mélangez jamais les 2 systèmes dans un même appel.
Origine et axes
Dans les 2 systèmes, Inkr utilise la convention origine en haut-gauche (comme un écran ou la convention Web). L'axe Y descend vers le bas de la page.
Attention : la spec PDF officielle utilise au contraire origine en bas-gauche (axe Y monte). Si vous prenez des coordonnées d'un outil PDF natif comme pdf-lib, vous devez inverser le Y :
const inkr_y = page_height - pdf_y - hExemple complet
Placer une zone signature en bas à droite d'un contrat A4, dans les 2 systèmes :
{
"documents": [
{
"name": "Contrat",
"file": "JVBERi0xLjQK...",
"fields": [
{
"name": "signature",
"type": "signature",
"role": "Client",
"required": true,
"areas": [
{ "page": 1, "x": 0.6, "y": 0.85, "w": 0.3, "h": 0.05 }
]
}
]
}
],
"submitters": [
{ "role": "Client", "email": "alice@example.com" }
],
"send_email": true
}{
"documents": [
{
"name": "Contrat",
"file": "JVBERi0xLjQK...",
"fields": [
{
"name": "signature",
"type": "signature",
"role": "Client",
"required": true,
"areas": [
{ "page": 1, "x": 357, "y": 716, "w": 178, "h": 42 }
]
}
]
}
],
"submitters": [
{ "role": "Client", "email": "alice@example.com" }
],
"send_email": true
}Les 2 appels produisent une zone signature identique sur le PDF final.
Aller plus loin
- Quickstart : votre premier appel
from_pdfen 10 minutes. - Submissions : créer une submission depuis un template figé ou un PDF inline.
- API Reference : tous les champs acceptés par
/submissions/from_pdf.