Java SDK .NET SDK REST API APEX SDK
Java SDK
Pour télécharger l'exemple de code complet, consultez notre site Code Share. Le PDF utilisé dans ce guide se trouve .here
Les ancres de texte vous permettent de positionner un champ ou une signature en fonction du texte de votre document.
Paramètres d'ancrage de texte
Le tableau suivant fournit une brève description de tous les paramètres qui peuvent être transmis lors de la création de vos ancres de texte. Notez ce qui suit :
Les ancres de texte sont sensibles à la casse et, par conséquent, lors de l'utilisation d'une ancre de texte, la recherche est effectuée en tenant compte de la casse.
Si aucun paramètre n'est spécifié, la valeur par défaut ci-dessous sera utilisée.
OneSpan utilise des points PDF comme unité de mesure. Par exemple, 1 pouce = 72 pts.
Lors de la navigation avec des ancres de texte, (0, 0) se trouve en haut à gauche du document PDF.
Paramètre | Description | Obligatoire | Valeur par défaut |
---|---|---|---|
Texte d'ancrage | Chaîne exacte qui sera recherchée dans votre document. | Oui | Sans objet |
Point d'ancrage | Coin du caractère spécifié à utiliser comme base pour le calcul de la position. Valeurs disponibles : TOPLEFT, TOPRIGHT, BOTTOMLEFT et BOTTOMRIGHT. | Non | EN HAUT À GAUCHE |
Index | L'occurrence de la chaîne. Par exemple, une valeur de 1 sautera la première occurrence et utilisera la deuxième instance pour calculer la position. | Non | 0 |
Index des caractères | L'index du caractère dans le texte d'ancrage qui sera utilisé pour calculer la position. | Non | 0 |
Décalage à gauche | Décalage appliqué à la coordonnée x finale. | Non | 0 |
Décalage supérieur | Décalage appliqué à la coordonnée y finale. | Non | 0 |
Hauteur | La hauteur du champ ou de la signature. | Oui | Sans objet |
Largeur | Largeur du champ ou de la signature. | Oui | Sans objet |
Bonnes pratiques pour l'utilisation des balises de texte
Si vous rencontrez des problèmes pour placer vos ancres de texte à leur bon emplacement, essayez d'utiliser l'attribut offset.
Ajouter des ancres de texte
Dans cet exemple, les ancres de texte sont utilisées pour ajouter une signature, une date de signature et un nom de signataire pour chaque signataire.
Si vous avez besoin d'une comparaison avec la procédure de création d'objet de base, ou si c'est la première fois qu'une transaction est créée, reportez-vous à la section Creating and Sending a Transaction.
.withDocument(newDocumentWithName("Sample Contract")
.fromFile("PATH_TO_YOUR_FILE")
.enableExtraction()
.withSignature(signatureFor("john.smith@example.com")
.withPositionAnchor(TextAnchorBuilder.newTextAnchor("Signature of the Client")
.atPosition(TextAnchorPosition.TOPLEFT)
.withSize(150, 40)
.withOffset(0, -50)
.withCharacter(0)
.withOccurence(0)
)
.withField(FieldBuilder.signerName()
.withPositionAnchor(TextAnchorBuilder.newTextAnchor("(hereafter referred to as")
.atPosition(TextAnchorPosition.TOPRIGHT)
.withSize(150, 20)
.withOffset(-175, -5)
.withCharacter(0)
.withOccurence(0)
)
)
.withField(FieldBuilder.signatureDate()
.withPositionAnchor(TextAnchorBuilder.newTextAnchor("Date")
.atPosition(TextAnchorPosition.TOPRIGHT)
.withSize(75, 40)
.withCharacter(4)
.withOffset(10, -30)
.withOccurence(0)
)
)
)
.withSignature(signatureFor("bob.murray@example.com")
.withPositionAnchor(TextAnchorBuilder.newTextAnchor("Signature of the Contractor")
.atPosition(TextAnchorPosition.TOPLEFT)
.withSize(150, 40)
.withOffset(0, -50)
.withCharacter(0)
.withOccurence(0)
)
.withField(FieldBuilder.signerName()
.withPositionAnchor(TextAnchorBuilder.newTextAnchor("(hereafter referred to as")
.atPosition(TextAnchorPosition.TOPLEFT)
.withSize(150, 20)
.withOffset(-175, -5)
.withCharacter(0)
.withOccurence(1)
)
)
.withField(FieldBuilder.signatureDate()
.withPositionAnchor(TextAnchorBuilder.newTextAnchor("Date")
.atPosition(TextAnchorPosition.TOPRIGHT)
.withSize(75, 40)
.withOffset(10, -30)
.withCharacter(4)
.withOccurence(1)
)
)
)
)
Résultats
Une fois que vous avez exécuté votre code, vos champs de signature apparaîtront dans vos documents, aux emplacements spécifiés par vos ancres de texte.
Kit de développement logiciel (SDK) .NET
Pour télécharger l'exemple de code complet, consultez notre site Code Share. Le PDF utilisé dans ce guide se trouve .here
Les ancres de texte vous permettent de positionner un champ ou une signature en fonction du texte de votre document.
Paramètres d'ancrage de texte
Le tableau suivant fournit une brève description de tous les paramètres qui peuvent être transmis lors de la création de vos ancres de texte. Notez ce qui suit :
Les ancres de texte sont sensibles à la casse et, par conséquent, lors de l'utilisation d'une ancre de texte, la recherche est effectuée en tenant compte de la casse.
Si aucun paramètre n'est spécifié, la valeur par défaut ci-dessous sera utilisée.
Paramètre | Description | Obligatoire | Valeur par défaut |
---|---|---|---|
Texte d'ancrage | Chaîne exacte qui sera recherchée dans votre document. | Oui | Sans objet |
Point d'ancrage | Coin du caractère spécifié à utiliser comme base pour le calcul de la position. Valeurs disponibles : TOPLEFT, TOPRIGHT, BOTTOMLEFT et BOTTOMRIGHT. | Non | EN HAUT À GAUCHE |
Index | L'occurrence de la chaîne. Par exemple, une valeur de 1 sautera la première occurrence et utilisera la deuxième instance pour calculer la position. | Non | 0 |
Index des caractères | L'index du caractère dans le texte d'ancrage qui sera utilisé pour calculer la position. | Non | 0 |
Décalage à gauche | Décalage appliqué à la coordonnée x finale. | Non | 0 |
Décalage supérieur | Décalage appliqué à la coordonnée y finale. | Non | 0 |
Hauteur | La hauteur du champ ou de la signature. | Oui | Sans objet |
Largeur | Largeur du champ ou de la signature. | Oui | Sans objet |
Bonnes pratiques d'utilisation des ancres de texte
Si vous rencontrez des problèmes pour placer vos ancres de texte à leur bon emplacement, essayez d'utiliser l'attribut offset.
Ajouter des ancres de texte
Dans cet exemple, les ancres de texte sont utilisées pour ajouter une signature, une date de signature et un nom de signataire pour chaque signataire.
Si vous avez besoin d'une comparaison avec la procédure de création d'objet de base, ou si c'est la première fois qu'une transaction est créée, reportez-vous à la section Creating and Sending a Transaction.
.WithDocument(DocumentBuilder.NewDocumentNamed("Sample Contract")
.FromStream(fs, DocumentType.PDF)
.EnableExtraction()
.WithSignature(SignatureBuilder.SignatureFor("john.smith@example.com")
.WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Signature of the Client")
.AtPosition(TextAnchorPosition.TOPLEFT)
.WithSize(150, 40)
.WithOffset(0, -50)
.WithCharacter(0)
.WithOccurrence(0)
)
.WithField(FieldBuilder.SignerName()
.WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("(hereafter referred to as")
.AtPosition(TextAnchorPosition.TOPRIGHT)
.WithSize(150, 20)
.WithOffset(-175, -5)
.WithCharacter(0)
.WithOccurrence(0)
)
)
.WithField(FieldBuilder.SignatureDate()
.WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Date")
.AtPosition(TextAnchorPosition.TOPRIGHT)
.WithSize(75, 40)
.WithCharacter(4)
.WithOffset(10, -30)
.WithOccurrence(0)
)
)
)
.WithSignature(SignatureBuilder.SignatureFor("bob.murray@example.com")
.WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Signature of the Contractor")
.AtPosition(TextAnchorPosition.TOPLEFT)
.WithSize(150, 40)
.WithOffset(0, -50)
.WithCharacter(0)
.WithOccurrence(0)
)
.WithField(FieldBuilder.SignerName()
.WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("(hereafter referred to as")
.AtPosition(TextAnchorPosition.TOPLEFT)
.WithSize(150, 20)
.WithOffset(-175, -5)
.WithCharacter(0)
.WithOccurrence(1)
)
)
.WithField(FieldBuilder.SignatureDate()
.WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Date")
.AtPosition(TextAnchorPosition.TOPRIGHT)
.WithSize(75, 40)
.WithOffset(10, -30)
.WithCharacter(4)
.WithOccurrence(1)
)
)
)
)
Résultats
Une fois que vous avez exécuté votre code, vos champs de signature apparaîtront dans vos documents, aux emplacements spécifiés par vos ancres de texte.
REST API
Pour télécharger l'exemple de code complet, consultez notre site Code Share. Le PDF utilisé dans ce guide se trouve .here
Les ancres de texte vous permettent de positionner un champ ou une signature en fonction du texte de votre document.
Ajouter des ancres de texte
Dans cet exemple, les ancres de texte sont utilisées pour ajouter une signature, une date de signature et un nom de signataire pour chaque signataire.
Si vous avez besoin d'une comparaison avec la procédure de création d'objet de base, ou si c'est la première fois qu'une transaction est créée, reportez-vous à la section Creating and Sending a Transaction.
Vous trouverez ci-dessous le JSON qui créera votre package de documents avec des ancres de texte. Veuillez noter que la convention API de OneSpan Sign n'autorise qu'un seul champ de signature (par exemple, tapez : SIGNATURE) par approbation dans l'objet approvals. Une deuxième signature pour un rôle donné doit être ajoutée en tant qu'approbation distincte.
Paramètres d'ancrage de texte
Le tableau suivant fournit une brève description de tous les paramètres qui peuvent être transmis lors de la création de vos ancres de texte. Notez ce qui suit :
Les ancres de texte sont sensibles à la casse et, par conséquent, lors de l'utilisation d'une ancre de texte, la recherche est effectuée en tenant compte de la casse.
Si aucun paramètre n'est spécifié, la valeur par défaut ci-dessous sera utilisée.
Paramètre | Description | Obligatoire | Valeur par défaut |
---|---|---|---|
Texte d'ancrage | Chaîne exacte qui sera recherchée dans votre document. | Oui | Sans objet |
Point d'ancrage | Coin du caractère spécifié à utiliser comme base pour le calcul de la position. Valeurs disponibles : TOPLEFT, TOPRIGHT, BOTTOMLEFT et BOTTOMRIGHT. | Non | EN HAUT À GAUCHE |
Index | L'occurrence de la chaîne. Par exemple, une valeur de 1 sautera la première occurrence et utilisera la deuxième instance pour calculer la position. | Oui | Sans objet |
Index des caractères | L'index du caractère dans le texte d'ancrage qui sera utilisé pour calculer la position. | Oui | À partir de 0 |
Décalage à gauche | Décalage appliqué à la coordonnée x finale. | Oui | Reportez-vous à l'axe du décalage |
Décalage supérieur | Décalage appliqué à la coordonnée y finale. | Oui | Reportez-vous à l'axe du décalage |
Hauteur | La hauteur du champ ou de la signature. | Oui | Sans objet |
Largeur | Largeur du champ ou de la signature. | Oui | Sans objet |
Bonnes pratiques d'utilisation des ancres de texte
Si vous rencontrez des problèmes pour placer vos ancres de texte à leur bon emplacement, essayez d'utiliser l'attribut offset.
Requête HTTP
POST /api/packages
En-têtes HTTP
Accept: application/json
Content-Type: multipart/form-dataAuthorization:
Basic api_key
Charge utile de la demande
------WebKitFormBoundary1bNO60n7FqP5WO4t
Content-Disposition: form-data; name="file"; filename="Sample Contract.pdf"
Content-Type: application/pdf
%PDF-1.5
%µµµµ
1 0 obj
<<...>>
endobj....
------WebKitFormBoundary1bNO60n7FqP5WO4t
{
"roles": [
{
"id": "client",
"type": "SIGNER",
"index": 1,
"signers": [
{
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com"
}
],
"name": "client"
},
{
"id": "contractor",
"type": "SIGNER",
"index": 2,
"signers": [
{
"firstName": "Bob",
"lastName": "Murray",
"email": "bob.murray@example.com"
}
],
"name": "contractor"
}
],
"documents": [
{
"approvals": [
{
"fields": [
{
"type": "SIGNATURE",
"extract": false,
"extractAnchor": {
"text": "Signature of the Client",
"index": 0,
"width": 150,
"height": 40,
"anchorPoint": "TOPLEFT",
"characterIndex": 0,
"leftOffset": 0,
"topOffset": -50
},
"left": 0,
"subtype": "FULLNAME",
"top": 0
},
{
"type": "INPUT",
"binding": "{signer.name}",
"extract": false,
"extractAnchor": {
"text": "(hereafter referred to as",
"index": 0,
"width": 150,
"height": 20,
"anchorPoint": "TOPRIGHT",
"characterIndex": 0,
"leftOffset": -175,
"topOffset": -5
},
"left": 0,
"subtype": "LABEL",
"top": 0
},
{
"type": "INPUT",
"binding": "{approval.signed}",
"extract": false,
"extractAnchor": {
"text": "Date",
"index": 0,
"width": 75,
"height": 40,
"anchorPoint": "TOPRIGHT",
"characterIndex": 4,
"leftOffset": 10,
"topOffset": -30
},
"left": 0,
"subtype": "LABEL",
"top": 0
}
],
"role": "client"
},
{
"fields": [
{
"type": "SIGNATURE",
"extract": false,
"extractAnchor": {
"text": "Signature of the Contractor",
"index": 0,
"width": 150,
"height": 40,
"anchorPoint": "TOPLEFT",
"characterIndex": 0,
"leftOffset": 0,
"topOffset": -50
},
"left": 0,
"subtype": "FULLNAME",
"top": 0
},
{
"type": "INPUT",
"binding": "{signer.name}",
"extract": false,
"extractAnchor": {
"text": "(hereafter referred to as",
"index": 1,
"width": 150,
"height": 20,
"anchorPoint": "TOPRIGHT",
"characterIndex": 0,
"leftOffset": -175,
"topOffset": -5
},
"left": 0,
"subtype": "LABEL",
"top": 0
},
{
"type": "INPUT",
"binding": "{approval.signed}",
"extract": false,
"extractAnchor": {
"text": "Date",
"index": 1,
"width": 75,
"height": 40,
"anchorPoint": "TOPRIGHT",
"characterIndex": 4,
"leftOffset": 10,
"topOffset": -30
},
"left": 0,
"subtype": "LABEL",
"top": 0
}
],
"role": "contractor"
}
],
"name": "Sample Contract"
}
],
"name": "Text Anchor Extraction Example REST API",
"type": "PACKAGE",
"language": "en",
"autoComplete": true,
"status": "DRAFT"
}
------WebKitFormBoundary1bNO60n7FqP5WO4t--
Pour une description complète de chaque champ, consultez le tableau Charge utile de la demande ci-dessous.
Charge utile de réponse
{
"id": "9sKhW-h-qS9m6Ho3zRv3n2a-rkI="
}
Résultats
Une fois que vous avez exécuté votre code, vos champs de signature apparaîtront dans vos documents, aux emplacements spécifiés par vos ancres de texte.
Tableau des données utiles de la demande
Propriété | Type | Modifiable | Obligatoire | Faire défaut | Exemples de valeurs |
---|---|---|---|---|---|
Propriété | Type | Modifiable | Obligatoire | Faire défaut | Exemples de valeurs |
statut | corde | Oui | Non | BROUILLON | BROUILLON / ENVOYÉ / TERMINÉ / ARCHIVÉ / REFUSÉ / OPTED_OUT / EXPIRÉ |
Saisie semi-automatique | booléen | Oui | Non | vrai | vrai / faux |
type | corde | Oui | Non | COLIS | EMBALLAGE / MODÈLE / MISE EN PAGE |
nom | corde | Oui | Oui | n/a | Exemple d'extraction d'ancrage de texte API REST |
Langue | corde | Oui | Oui | en | en / fr / de ... |
documents | |||||
nom | corde | Oui | Non | n/a | Exemple de contrat |
Approbations | |||||
rôle | corde | Oui | Non | n/a | client |
champs | |||||
type | corde | Oui | Oui | n/a | SIGNATURE / SAISIE |
extraire | booléen | Oui | Non | faux | vrai / faux |
Sous-type | corde | Oui | Oui | n/a | NOM COMPLET / INITIALES / CAPTURE / MOBILE_CAPTURE / ÉTIQUETTE / CHAMP DE TEXTE / ZONE DE TEXTE / CASE À COCHER / DATE / RADIO / LISTE |
reliure | corde | Oui | Non | zéro | null / {approval.signed} / {signer.title} / {signer.name} / {signer.company} |
Gauche | entier | Oui | Non | 0 | 0 / 10 / 20 ... |
Retour au début | entier | Oui | Non | 0 | 0 / 10 / 20 ... |
extractAnchor | |||||
SMS | corde | Oui | Oui | n/a | Signature du client |
point d'ancrage | corde | Oui | Oui | n/a | HAUT-GAUCHE / HAUT-DROIT / BAS-GAUCHE / BAS-DROIT |
index | entier | Oui | Non | 0 | 0 / 1 / 2 ... |
Largeur | entier | Oui | Non | 200 | 150 |
caractèreIndex | entier | Oui | Non | 0 | 0 |
hauteur | entier | Oui | Non | 50 | 40 |
leftOffset | entier | Oui | Non | 0 | 40 |
droiteDécalage | entier | Oui | Non | 0 | -10 |
Rôles | |||||
id | corde | Oui | Non | n/a | client |
index | entier | Oui | Non | 0 | 1 / 2 / 3 ... |
nom | corde | Oui | Non | n/a | client |
type | corde | Oui | Non | SIGNATAIRE | SIGNATAIRE / ÉMETTEUR |
Signataires | |||||
Messagerie électronique | corde | Oui | Oui | n/a | john.smith@example.com |
prénom | corde | Oui | Oui | n/a | John |
nomNom de famille | corde | Oui | Oui | n/a | Forgeron |
id | corde | Oui | Non | n/a | client |
APEX SDK
Pour télécharger l'exemple de code complet, consultez notre site Code Share . Le PDF utilisé dans ce guide se trouve ici.
Les ancres de texte vous permettent de positionner un champ ou une signature en fonction du texte de votre document.
Paramètres d'ancrage de texte
Le tableau suivant fournit une brève description de tous les paramètres qui peuvent être transmis lors de la création de vos ancres de texte. Notez ce qui suit :
Les ancres de texte sont sensibles à la casse et, par conséquent, lors de l'utilisation d'une ancre de texte, la recherche est effectuée en tenant compte de la casse.
Si aucun paramètre n'est spécifié, la valeur par défaut ci-dessous sera utilisée.
Paramètre | Description | Obligatoire | Valeur par défaut |
---|---|---|---|
Texte d'ancrage | Chaîne exacte qui sera recherchée dans votre document. | Oui | Sans objet |
Point d'ancrage | Coin du caractère spécifié à utiliser comme base pour le calcul de la position. Valeurs disponibles : TOPLEFT, TOPRIGHT, BOTTOMLEFT et BOTTOMRIGHT. | Non | EN HAUT À GAUCHE |
Index | L'occurrence de la chaîne. Par exemple, une valeur de 1 sautera la première occurrence et utilisera la deuxième instance pour calculer la position. | Non | 0 |
Index des caractères | L'index du caractère dans le texte d'ancrage qui sera utilisé pour calculer la position. | Non | 0 |
Décalage à gauche | Décalage appliqué à la coordonnée x finale. | Non | 0 |
Décalage supérieur | Décalage appliqué à la coordonnée y finale. | Non | 0 |
Hauteur | La hauteur du champ ou de la signature. | Oui | Sans objet |
Largeur | Largeur du champ ou de la signature. | Oui | Sans objet |
Bonnes pratiques d'utilisation des ancres de texte
Si vous rencontrez des problèmes pour placer vos ancres de texte à leur bon emplacement, essayez d'utiliser l'attribut offset.
Ajouter des ancres de texte
Dans cet exemple, les ancres de texte sont utilisées pour ajouter une signature, une date de signature et un nom de signataire pour chaque signataire.
Si vous avez besoin d'une comparaison avec la procédure de création d'objet de base, ou si c'est la première fois qu'une transaction est créée, reportez-vous à la section Creating and Sending a Transaction.
// Prepare Documents Blob
String document1Name = 'Sample_Text_Anchor';
StaticResource sr = [SELECT Id, Body FROM StaticResource WHERE Name = 'test_text_anchor' LIMIT 1];
Map<String, Blob> documentBlobMap = new Map<String, Blob>();
documentBlobMap.put(document1Name, sr.Body);
// Create Document Metadata
ESignLiveAPIObjects.Document document1 = new ESignLiveAPIObjects.Document();
document1.name = document1Name;
document1.id = document1Name;
document1.extract = true; // document level extraction: true
// Approval for role1
ESignLiveAPIObjects.Approval approval1 = new ESignLiveAPIObjects.Approval();
approval1.role = roleId1;
approval1.id = 'approval1';
ESignLiveAPIObjects.Field field11 = new ESignLiveAPIObjects.Field();
field11.id = 'signature1';
field11.type = 'SIGNATURE';
field11.subtype = 'FULLNAME';
field11.extractAnchor = new ESignLiveAPIObjects.ExtractAnchor(
ESignLiveAPIObjects.AnchorPoint.TOPLEFT, 0, 40, 0, 0, 'Signature of the Client', -50, 150
);
ESignLiveAPIObjects.Field field12 = new ESignLiveAPIObjects.Field();
field12.id = 'signername1';
field12.type = 'INPUT';
field12.subtype = 'LABEL';
field12.binding = '{signer.name}'; // indicate it's a signer name label
field12.extractAnchor = new ESignLiveAPIObjects.ExtractAnchor(
ESignLiveAPIObjects.AnchorPoint.TOPRIGHT, 0, 20, 0, -175, '(hereafter referred to as', -5, 150
);
ESignLiveAPIObjects.Field field13 = new ESignLiveAPIObjects.Field();
field13.id = 'signerdate1';
field13.type = 'INPUT';
field13.subtype = 'LABEL';
field13.binding = '{approval.signed}'; // indicate it's a signing date
field13.extractAnchor = new ESignLiveAPIObjects.ExtractAnchor(
ESignLiveAPIObjects.AnchorPoint.TOPRIGHT, 4, 40, 0, 10, 'Date', -30, 75
);
approval1.fields = new List<ESignLiveAPIObjects.Field>{field11, field12, field13};
// Approval for role2
ESignLiveAPIObjects.Approval approval2 = new ESignLiveAPIObjects.Approval();
approval2.role = roleId2;
approval2.id = 'approval2';
ESignLiveAPIObjects.Field field21 = new ESignLiveAPIObjects.Field();
field21.id = 'signature2';
field21.type = 'SIGNATURE';
field21.subtype = 'FULLNAME';
field21.extractAnchor = new ESignLiveAPIObjects.ExtractAnchor(
ESignLiveAPIObjects.AnchorPoint.TOPLEFT, 0, 40, 0, 0, 'Signature of the Contractor', -50, 150
);
ESignLiveAPIObjects.Field field22 = new ESignLiveAPIObjects.Field();
field22.id = 'signername2';
field22.type = 'INPUT';
field22.subtype = 'LABEL';
field22.binding = '{signer.name}'; // indicate it's a signer name label
field22.extractAnchor = new ESignLiveAPIObjects.ExtractAnchor(
ESignLiveAPIObjects.AnchorPoint.TOPRIGHT, 0, 20, 1, -175, '(hereafter referred to as', -5, 150
);
ESignLiveAPIObjects.Field field23 = new ESignLiveAPIObjects.Field();
field23.id = 'signerdate2';
field23.type = 'INPUT';
field23.subtype = 'LABEL';
field23.binding = '{approval.signed}'; // indicate it's a signing date
field23.extractAnchor = new ESignLiveAPIObjects.ExtractAnchor(
ESignLiveAPIObjects.AnchorPoint.TOPRIGHT, 4, 40, 1, 10, 'Date', -30, 75
);
approval2.fields = new List<ESignLiveAPIObjects.Field>{field21, field22, field23};
// Assign approvals to document
document1.approvals = new List<ESignLiveAPIObjects.Approval>{approval1, approval2};
// Add document to package
pkg.documents = new List<ESignLiveAPIObjects.Document>{document1}; // add document
Résultats
Une fois que vous avez exécuté votre code, vos champs de signature apparaîtront dans vos documents, aux emplacements spécifiés par vos ancres de texte.