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 tes 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). Tu choisis celui qui s'adapte le mieux à ton 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 |
Tu peux mixer les 2 dans un même appel. Pour la cohérence de ton code, choisis l'une des 2 conventions et tiens-toi-y dans tous tes appels.
Système 1 : fractions 0-1 (simple)
Chaque coordonnée est une proportion de la dimension de la page. Pratique si tu veux 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 :
- Ton PDF a une taille fixe connue d'avance (par exemple toujours A4).
- Tu veux la simplicité maximale au démarrage.
- Ta zone signature est positionnée par rapport à des proportions visuelles (en bas à droite, centré au milieu).
Points PDF absolus si :
- Tu génères des PDF de tailles variables (formats custom, lignes variables, tableaux dynamiques).
- Tu veux la précision pixel-perfect alignée sur le canvas du PDF.
- Tu utilises déjà pdf-lib ou un outil PDF qui te 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.
Tu n'as pas besoin de déclarer le mode explicitement. Évite de mélanger les 2 systèmes dans le même areas[] sur la même page (résultat indéterminé). Sois cohérent sur l'ensemble de l'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 tu prends des coordonnées d'un outil PDF natif comme pdf-lib, tu dois 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",
"pdf_base64": "JVBERi0xLjQK..."
}
],
"submitters": [
{
"email": "alice@example.com",
"fields": [
{
"name": "signature",
"type": "signature",
"required": true,
"areas": [
{ "page": 0, "x": 0.6, "y": 0.85, "w": 0.3, "h": 0.05 }
]
}
]
}
],
"send_email": true
}{
"documents": [
{
"name": "Contrat",
"file": "JVBERi0xLjQK...",
"fields": [
{
"name": "signature",
"type": "signature",
"required": true,
"areas": [
{ "page": 1, "x": 357, "y": 716, "w": 178, "h": 42 }
]
}
]
}
],
"submitters": [
{ "email": "alice@example.com" }
],
"send_email": true
}Les 2 appels produisent une zone signature identique sur le PDF final.
Aller plus loin
- Quickstart : ton 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.