Passa al contenuto principale

Placeholder

I placeholder sono campi compilabili posizionati sui documenti PDF che i firmatari possono (o devono) compilare durante il processo di firma. Permettono di raccogliere informazioni aggiuntive direttamente sul documento: testo libero, date, checkbox, menu a tendina, allegati e molto altro.

Come Funzionano

I placeholder vengono definiti nella creazione della pratica (POST /api/v2/files/send) a due livelli:

  • A livello di pratica: nel campo placeholders del body principale (comuni a tutti i firmatari)
  • A livello di firmatario: nel campo signers[].placeholders (assegnati a un firmatario specifico)
{
"documents": [{ "filename": "contratto.pdf", "base64content": "..." }],
"name": "Contratto con campi compilabili",
"signers": [
{
"email": "[email protected]",
"action": "S",
"placeholders": [
{
"type": "T",
"code": "citta",
"document": 0,
"page": 1,
"positionX": 0.3,
"positionY": 0.5,
"width": 0.2,
"height": 0.03,
"required": true
}
]
}
]
}

Tipi di Placeholder

Testo e Dati Personali

CodiceTipoDescrizione
TTesto liberoCampo di testo compilabile dal firmatario. Supporta validazione regex.
FNome completoPrecompilato con nome e cognome del firmatario.
1NomePrecompilato con il nome del firmatario.
2CognomePrecompilato con il cognome del firmatario.
CAziendaNome dell'azienda del firmatario.
XEmailPrecompilato con l'email del firmatario.
KTelefonoPrecompilato con il numero di telefono del firmatario.

Date

CodiceTipoDescrizione
DData firmaData in cui viene apposta la firma (precompilato automaticamente).
OData e ora firmaData e ora della firma (precompilato automaticamente).
EData di nascitaData di nascita del firmatario.

Dati Anagrafici

CodiceTipoDescrizione
ALuogo di nascitaComune di nascita del firmatario.
BProvincia di nascitaProvincia di nascita.
MComune di residenzaComune di residenza.
NIndirizzo di residenzaIndirizzo di residenza.
PProvincia di residenzaProvincia di residenza.
QComune di domicilioComune di domicilio.
VIndirizzo di domicilioIndirizzo di domicilio.
LProvincia di domicilioProvincia di domicilio.

Documento di Identità

CodiceTipoDescrizione
JNumero documentoNumero del documento di identità.
GRilasciato daEnte che ha rilasciato il documento.
HData rilascioData di rilascio del documento.

Controlli Form

CodiceTipoDescrizione
ICheckboxCasella di spunta (sì/no).
RRadio buttonSelezione esclusiva tra opzioni (da raggruppare con groupId).
UCombo boxMenu a tendina con opzioni predefinite (usare autocompleteValues).
YSegno di spuntaCroce/spunta visiva sul documento.

Firma e Allegati

CodiceTipoDescrizione
SFirma graficaArea dove il firmatario disegna la propria firma.
ZAllegatoIl firmatario deve caricare un file allegato (es. documento di identità).

Parametri del Placeholder

Posizionamento

CampoTipoObbligatorioDescrizione
documentintegerIndice del documento (0-based).
pageintegerNumero della pagina (1-based).
positionXnumberPosizione orizzontale (0-1, normalizzata).
positionYnumberPosizione verticale (0-1, normalizzata).
widthnumberLarghezza del campo (0-1).
heightnumberAltezza del campo (0-1).
anchorKeywordstringNoParola chiave nel PDF per posizionamento automatico (alternativa a positionX/Y).
offsetXnumberNoOffset orizzontale normalizzato (aggiunto alla posizione calcolata).
offsetYnumberNoOffset verticale normalizzato.

Identificazione e Validazione

CampoTipoObbligatorioDescrizione
typecharTipo di placeholder (vedi tabella sopra).
codestringConsigliatoCodice identificativo univoco del placeholder. Utilizzato per riferimenti e logica condizionale.
requiredbooleanNoSe true, il firmatario deve compilare il campo. Default: false.
defaultValuestringNoValore predefinito del campo.
regexstringNoEspressione regolare per la validazione dell'input.
regexErrorMessagestringNoMessaggio di errore mostrato se la validazione fallisce.
externalIdstringNoID esterno per mappatura con sistemi esterni.

Aspetto

CampoTipoObbligatorioDescrizione
fontSizeintegerNoDimensione del font in punti.
fontFamilystringNoFont da utilizzare (es. Helvetica, Courier).
opacityintegerNoOpacità del testo (0-100).
alignmentcharNoAllineamento del testo: L sinistra, C centro, R destra.
cssCustomClassstringNoClasse CSS personalizzata per lo stile nell'interfaccia web.

Comportamento

CampoTipoObbligatorioDescrizione
readonlybooleanNoSe true, il campo è in sola lettura (precompilato, non modificabile).
editableSubmitbooleanNoSe true (default), il campo è modificabile al momento della sottomissione.
groupIdintegerNoID di gruppo: stesso valore su più placeholder li associa logicamente (es. radio button dello stesso gruppo).

Opzioni per Combo Box

CampoTipoDescrizione
autocompleteValuesstringOpzioni del menu a tendina in formato JSON (array di stringhe o oggetti).
autocompleteValuesListarray[string]Alternativa: array di valori per autocompletamento.

Logica Condizionale

I placeholder supportano visibilità/obbligatorietà condizionale basata sul valore di un altro placeholder:

CampoTipoDescrizione
cfConditionstringCondizione da valutare: equals, notEquals, contains, isEmpty, isNotEmpty.
cfConditionComparePlaceholdernumberID del placeholder da confrontare (riferimento).
cfConditionCompareValuestringValore di confronto.
cfBehaviorstringComportamento quando la condizione è vera: show, hide, required, readonly.

Esempio: campo visibile solo se una checkbox è selezionata

[
{
"type": "I",
"code": "accetto_condizioni",
"document": 0,
"page": 1,
"positionX": 0.1,
"positionY": 0.7,
"width": 0.03,
"height": 0.03
},
{
"type": "T",
"code": "note_aggiuntive",
"document": 0,
"page": 1,
"positionX": 0.1,
"positionY": 0.75,
"width": 0.4,
"height": 0.03,
"cfCondition": "equals",
"cfConditionCompareValue": "true",
"cfBehavior": "show"
}
]

Esempi

Campo testo obbligatorio con validazione

{
"type": "T",
"code": "codice_fiscale",
"document": 0,
"page": 1,
"positionX": 0.3,
"positionY": 0.4,
"width": 0.25,
"height": 0.03,
"required": true,
"regex": "^[A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z]$",
"regexErrorMessage": "Inserire un codice fiscale valido (es. RSSMRA80A01H501U)",
"fontSize": 10
}
{
"type": "U",
"code": "tipo_contratto",
"document": 0,
"page": 1,
"positionX": 0.3,
"positionY": 0.5,
"width": 0.2,
"height": 0.03,
"required": true,
"autocompleteValuesList": [
"Tempo indeterminato",
"Tempo determinato",
"Collaborazione",
"Stage"
]
}

Checkbox e data firma automatica

[
{
"type": "I",
"code": "privacy_check",
"document": 0,
"page": 2,
"positionX": 0.05,
"positionY": 0.85,
"width": 0.03,
"height": 0.03,
"required": true
},
{
"type": "D",
"code": "data_firma",
"document": 0,
"page": 2,
"positionX": 0.7,
"positionY": 0.9,
"width": 0.15,
"height": 0.03,
"readonly": true
}
]

Posizionamento tramite ancora

Anziché specificare coordinate fisse, è possibile posizionare il placeholder cercando una parola chiave nel testo del PDF:

{
"type": "T",
"code": "citta",
"document": 0,
"anchorKeyword": "Luogo:",
"offsetX": 0.1,
"offsetY": 0.0,
"width": 0.15,
"height": 0.03
}

Il sistema cerca il testo "Luogo:" nel PDF e posiziona il placeholder con l'offset specificato.