OneSpan Sign How To: Utilisation d'ancres de texte

Haris Haidary,

Dernièrement, il ya eu un certain nombre de questions, dans les forums, concernant la fonction d'extraction d'ancrage de texte avec les SDKs et API, alors j'ai pensé que ce serait une excellente occasion de créer un blog Comment faire. En bref, les ancres de texte vous permettent de positionner un champ ou une signature en fonction du texte de votre document. Ce document peut être de tout type par opposition à l'extraction de documents, ce qui nécessite un formulaire PDF. Dans ce blog, je vais vous montrer comment utiliser l'extraction d'ancrage texte avec le OneSpan Sign Java SDK, .NET SDK, et l'API REST.

Paramètres d'ancrage de texte

Avant de plonger dans le code, permettez-moi de vous donner une brève description de chaque paramètre que vous pouvez passer lors de la construction de votre ancre texte. Il est important de noter que lorsque vous utilisez l'ancre de texte, la recherche est effectuée d'une manière sensible aux cas. En outre, si certains paramètres ne sont pas spécifiés, ils seront par défaut aux valeurs ci-dessous. 

Paramètre Description Obligatoire Valeur par défaut
Texte d'ancrage La chaîne exacte qui sera recherchée dans votre document. Oui Non applicable
Point d'ancrage Le coin du caractère spécifié à utiliser comme base pour calculer la position. Valeurs disponibles : TOPLEFT, TOPRIGHT, BOTTOMLEFT et BOTTOMRIGHT. Oui Non applicable
Index L'occurrence de la chaîne. Par exemple, une valeur de 1 sautera le premier événement et utilisera la deuxième instance pour calculer la position. 0
Indice de caractères L'index du caractère dans le texte d'ancrage qui sera utilisé pour calculer la position. 0
Décalage gauche Le décalage s'appliquait à la x-coordinate finale. 0
Meilleur décalage Le décalage s'appliquait à la co-coordonnées finale. 0
Hauteur La hauteur du champ ou de la signature. 50
Largeur La largeur du champ ou de la signature. 200

Le code

Comme je l'ai mentionné ci-dessus, je vais vous montrer comment utiliser l'ancre texte avec le Java SDK, .NET SDK, et l'API REST. Allez-y et passez à la section qui s'applique à votre technologie. Je vais couvrir les mêmes informations dans chaque segment. Code d'exemple complet pour ce blog peut être trouvé dans le développeur Community Code Share: Java, .NET, et REST.

Java SDK

Commençons par le Java SDK. Dans mon exemple, j'ai utilisé l'ancre de texte pour ajouter une signature, la date de signature et le nom du signataire pour chaque signataire. Le code de l'échantillon ci-dessous vous montre comment modifier le bloc de document pour l'ancre de texte. Si vous avez besoin d'une comparaison avec la création d'objet de document de base ou si c'est la première fois que vous créez un package avec le Java SDK, consultez ce blog.

.withDocument(newDocumentWithName("Contrat d'échantillon")
		              .fromFile ("PATH_TO_YOUR_FILE")
		              .enableExtraction()
		              .withSignature(signaturePour("[email protected]")
		                   .withPositionAnchor(TextAnchorBuilder.newTextAnchor("Signature du client")
		                        .atPosition(TextAnchorPosition.TOPLEFT)
		                        .withSize(150, 40)
		                        .avecOffset(0, -50)
		                        .avecCharacter(0)
		                        .withOccurence(0))
		                   .withField (FieldBuilder.signerName()
		                		   	.withPositionAnchor(TextAnchorBuilder.newTextAnchor("(ici après appelé")
			                             .atPosition(TextAnchorPosition.TOPRIGHT)
			                             .withSize(150, 20)
			                             .avecOffset(-175, -5)
			                             .avecCharacter(0)
			                             .withOccurence(0)))
		                   .withField (FieldBuilder.signatureDate()
			                        .withPositionAnchor(TextAnchorBuilder.newTextAnchor("Date")
			                             .atPosition(TextAnchorPosition.TOPRIGHT)
			                             .withSize(75, 40)
			                             .avecCharacter(4)
			                             .avecOffset(10, -30)
			                             .withOccurence(0))))
		              .withSignature(signaturePour("[email protected]")
		                   .withPositionAnchor(TextAnchorBuilder.newTextAnchor("Signature de l'entrepreneur")
		                        .atPosition(TextAnchorPosition.TOPLEFT)
		                        .withSize(150, 40)
		                        .avecOffset(0, -50)
		                        .avecCharacter(0)
		                        .withOccurence(0))
		                   .withField (FieldBuilder.signerName()
			                        .withPositionAnchor(TextAnchorBuilder.newTextAnchor("(ici après appelé")
			                             .atPosition(TextAnchorPosition.TOPLEFT)
			                             .withSize(150, 20)
			                             .avecOffset(-175, -5)
			                             .avecCharacter(0)
			                             .withOccurence(1)))
		                   .withField (FieldBuilder.signatureDate()
			                        .withPositionAnchor(TextAnchorBuilder.newTextAnchor("Date")
			                             .atPosition(TextAnchorPosition.TOPRIGHT)
			                             .withSize(75, 40)
			                             .avecOffset(10, -30)
			                             .avecCharacter(4)
			                             .withOccurence(1)))
OneSpan Sign Developer Community

OneSpan Sign Developer Community

Rejoignez la communauté OneSpan Sign Developer! Forums, blogs, documentation, téléchargements SDK, et plus encore.

Joignez-vous aujourd'hui

SDK .NET

Ensuite, je vais passer en plus de la SDK .NET. Dans mon exemple, j'ai utilisé l'ancre de texte pour ajouter une signature, la date de signature et le nom du signataire pour chaque signataire. Le code de l'échantillon ci-dessous vous montre comment modifier le bloc de document pour l'ancre de texte. Si vous avez besoin d'une comparaison avec la création d'objet document de base ou si c'est la première fois que vous créez un package avec le .NET SDK, voir ce blog.

. WithDocument (DocumentBuilder.NewDocumentNamed("Contrat d'échantillon")
                                    . FromStream(fs, DocumentType.PDF)
                                    . ActiverL'extraction()
                                    . WithSignature (SignatureBuilder.SignatureFor("[email protected]")
                                            . WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Signature du client")
                                                    . AtPosition(TextAnchorPosition.TOPLEFT)
                                                    . WithSize(150, 40)
                                                    . WithOffset(0, -50)
                                                    . AvecCharacter(0)
                                                    . AvecOccurrence(0))
                                            . WithField (FieldBuilder.SignerName()
                                                    . WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("(ci-après appelé")
                                                            . AtPosition(TextAnchorPosition.TOPRIGHT)
                                                            . WithSize(150, 20)
                                                            . WithOffset(-175, -5)
                                                            . AvecCharacter(0)
                                                            . AvecOccurrence(0)))
                                            . WithField (FieldBuilder.SignatureDate()
                                                    . WithPositionAnchor(TextanchorBuilder.NewTextAnchor("Date")
                                                            . AtPosition(TextAnchorPosition.TOPRIGHT)
                                                            . WithSize(75, 40)
                                                            . AvecCharacter(4)
                                                            . WithOffset(10, -30)
                                                            . AvecOccurrence(0))))
                                . WithSignature (SignatureBuilder.SignatureFor("[email protected]")
                                        . WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Signature de l'entrepreneur")
                                                . AtPosition(TextAnchorPosition.TOPLEFT)
                                                . WithSize(150, 40)
                                                . WithOffset(0, -50)
                                                . AvecCharacter(0)
                                                . AvecOccurrence(0))
                                        . WithField (FieldBuilder.SignerName()
                                                . WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("(ci-après appelé")
                                                         . AtPosition(TextAnchorPosition.TOPLEFT)
                                                         . WithSize(150, 20)
                                                         . WithOffset(-175, -5)
                                                         . AvecCharacter(0)
                                                         . AvecOccurrence(1)))
                                        . WithField (FieldBuilder.SignatureDate()
                                                . WithPositionAnchor(TextanchorBuilder.NewTextAnchor("Date")
                                                         . AtPosition(TextAnchorPosition.TOPRIGHT)
                                                         . WithSize(75, 40)
                                                         . WithOffset(10, -30)
                                                         . AvecCharacter(4)
                                                         . AvecOccurrence(1)))

API REST

Enfin, je couvrirai l'API REST. Dans mon exemple, j'ai utilisé l'ancre de texte pour ajouter une signature, la date de signature et le nom du signataire pour chaque signataire. J'ai inclus le JSON qui créera votre paquet de documents avec l'ancre de texte pour plus de commodité. Veuillez noter que la convention API de OneSpan Sign n'autorise qu'un seul champ de signature (c.-à-d. « type » : « SIGNATURE ») par approbation dans l'objet d'approbation. Une deuxième signature pour un rôle donné devrait être ajoutée à titre d'approbation distincte. Si vous avez besoin d'une comparaison avec la création d'objets de document de base ou si c'est la première fois que vous créez un package avec l'API REST, consultez ce blog.

{

  "rôles": [

    {

      "id": "client",

      "type": "SIGNER",

      "index": 1,

      "signataires": [

        {

          "firstName": "John",

          "lastName": "Smith",

          "email": "[email protected]"

        }

      ],

      "nom": "client"

    },

    {

      "id": "entrepreneur",

      "type": "SIGNER",

      "index": 2,

      "signataires": [

        {

          "firstName": "Bob",

          "lastName": "Murray",

          "email": "[email protected]"

        }

      ],

      "nom": "entrepreneur"

    }

  ],

  "documents": [

    {

      "approbations": [

        {

          "champs": [

            {

              "type": "SIGNATURE",

              "extrait": faux,

              "extractAnchor":

                "texte": "Signature du Client",

                "index": 0,

                "largeur": 150,

                "hauteur": 40,

                "anchorPoint": "TOPLEFT",

                "CharacterIndex": 0,

                "leftOffset": 0,

                "topOffset": -50

              },

              "gauche": 0,

              "sous-type": "FULLNAME",

              "top": 0

            },

            {

              "valeur": nul,

              "type": "INPUT",

              "contraignant": "signer.name",

              "extrait": faux,

              "extractAnchor":

                "texte": "(ici appelé",

                "index": 0,

                "largeur": 150,

                "hauteur": 20,

                "anchorPoint": "TOPRIGHT",

                "CharacterIndex": 0,

                "leftOffset": -175,

                "topOffset": -5

              },

              "gauche": 0,

              "sous-type": "LABEL",

              "top": 0

            },

            {

              "valeur": nul,

              "type": "INPUT",

              "contraignant": "'approbation.signé'",

              "extrait": faux,

              "extractAnchor":

                "texte": "Date",

                "index": 0,

                "largeur": 75,

                "hauteur": 40,

                "anchorPoint": "TOPRIGHT",

                "CharacterIndex": 4,

                "leftOffset": 10,

                "topOffset": -30

              },

              "gauche": 0,

              "sous-type": "LABEL",

              "top": 0

            }

          ],

          "rôle": "client"

        },

        {

          "champs": [

            {

              "type": "SIGNATURE",

              "extrait": faux,

              "extractAnchor":

                "texte": "Signature de l'entrepreneur",

                "index": 0,

                "largeur": 150,

                "hauteur": 40,

                "anchorPoint": "TOPLEFT",

                "CharacterIndex": 0,

                "leftOffset": 0,

                "topOffset": -50

              },

              "gauche": 0,

              "sous-type": "FULLNAME",

              "top": 0

            },

            {

              "valeur": nul,

              "type": "INPUT",

              "contraignant": "signer.name",

              "extrait": faux,

              "extractAnchor":

                "texte": "(ici appelé",

                "index": 1,

                "largeur": 150,

                "hauteur": 20,

                "anchorPoint": "TOPRIGHT",

                "CharacterIndex": 0,

                "leftOffset": -175,

                "topOffset": -5

              },

              "gauche": 0,

              "sous-type": "LABEL",

              "top": 0

            },

            {

              "valeur": nul,

              "type": "INPUT",

              "contraignant": "'approbation.signé'",

              "extrait": faux,

              "extractAnchor":

                "texte": "Date",

                "index": 1,

                "largeur": 75,

                "hauteur": 40,

                "anchorPoint": "TOPRIGHT",

                "CharacterIndex": 4,

                "leftOffset": 10,

                "topOffset": -30

              },

              "gauche": 0,

              "sous-type": "LABEL",

              "top": 0

            }

          ],

          "rôle": "entrepreneur"

        }

      ],

      "nom": "Contrat d'échantillon"

    }

  ],

  "nom": "Text Anchor Extraction Example REST API",

  "type": "PACKAGE",

  "langue": "en",

  "autoComplete": vrai,

  "statut": "DRAFT"

}

Exécution de votre code

Une fois que vous avez exécuté votre code, si vous vous connectez à OneSpan Sign, vous devez trouver les signatures et les champs appropriés dans le document dans votre paquet de documents OneSpan Sign, comme vous l'avez vu ci-dessous.

capture

Et voilà. Vous avez créé avec succès un nouveau paquet avec des ancres de texte.

Si vous avez des questions concernant ce blog ou toute autre chose concernant l'intégration oneSpan Sign dans votre application, visitez les forums de la communauté des développeurs: https://developer.esignlive.com. C'est moi qui l'ai fait. Merci de lire! Si vous avez trouvé ce message utile, s'il vous plaît le partager sur Facebook, Twitter, ou LinkedIn.

Haris Haidary
Évangéliste technique junior
LinkedIn - France Twitter (en)