Para descargar la muestra de código completa, consulte nuestro sitio Code Share. El PDF utilizado en este tema se puede encontrar aquí.

Al crear un formulario, puede requerir que un usuario complete algunos campos obligatorios. O también es posible que desee asegurarse de que el usuario ingrese entradas válidas. Al validar los datos del formulario mientras el usuario los rellena, el usuario puede saber inmediatamente si ha cometido algún error o si ha dejado un campo obligatorio vacío. Esto le ahorra tiempo a la hora de lidiar con una entrada de formulario incorrecta o vacía. Con OneSpan Sign, puede lograrlo creando validadores de campo. Un validador de campo le permite requerir y restringir el rango de valores aceptables para un campo no delimitado.

Al construir un validador de campo, debe seleccionar primero el tipo de datos deseado del campo (por ejemplo, numérico, alfabético). A continuación, puede agregar otros parámetros (como la longitud máxima).

Un campo solo puede tener un validador.

El siguiente código de ejemplo le muestra cómo agregar la validación de campo a un campo que está vinculado a una firma.

Si necesita una comparación con el procedimiento básico de creación de objetos o si es la primera vez que crea una transacción, consulte Crear y enviar una transacción.

 .withSignature(SignatureBuilder.captureFor("[email protected]")   .withName("client_signature")   .withId(new SignatureId("client"))   .withPositionExtracted()   .withField(FieldBuilder.signatureDate()   .withId(new FieldId("signature_date"))   .withName("client_date")   .withPositionExtracted())   .withField(FieldBuilder.textField()   .withId(new FieldId("client_first"))   .withName("first_name")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.alphabetic().required().withErrorMessage("Please enter a valid first name.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_last"))   .withName("last_name")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.alphabetic().required().withErrorMessage("Please enter a valid last name.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_address"))   .withName("address")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.basic().required().withErrorMessage("Please enter a valid address.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_city"))   .withName("city")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.alphabetic().required().withErrorMessage("Please enter a valid city.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_state"))   .withName("state")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.alphabetic().required().maxLength(2).minLength(2).withErrorMessage("Please enter a valid state.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_zip"))   .withName("zip")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.numeric().required().maxLength(5).minLength(5).withErrorMessage("Please enter a valid zip.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_country"))   .withName("country")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.alphabetic().required().withErrorMessage("Please enter a valid country.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_phone"))   .withName("phone_number")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$").required().withErrorMessage("Please enter a valid phone number (XXX-XXX-XXXX)")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_email"))   .withName("email")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.email().required().withErrorMessage("Please enter a valid email.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_company"))   .withName("company")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.alphabetic().required().withErrorMessage("Please enter a valid company.")))   .withField(FieldBuilder.textField()   .withId(new FieldId("client_policy"))   .withName("policy_number")   .withPositionExtracted()   .withValidation(FieldValidatorBuilder.numeric().required().withErrorMessage("Please enter a valid policy number."))) 

En este ejemplo, los campos de formulario se extraen del PDF. Para extraer cada campo de formulario en su PDF, tendrá que pasar el nombre exacto de su campo de formulario PDF al método withName() y usar el método withPositionExtracted() para asegurarse de que la posición y el tamaño exactos se conserven en OneSpan Sign

La extracción de la posición solo se puede hacer al cargar su documento y solo a través de la API/SDKs.

Para crear un validador de campo, deberá pasar un tipo de validador de campo a FieldValidatorBuilder. Puede utilizar los validadores predefinidos que vienen con la API/SDK o puede crear su propio validador personalizado utilizando expresiones regulares.

El método required() hace que un campo sea obligatorio y el método withErrorMessage() personaliza el mensaje de error que aparecerá si el usuario ingresa datos de formato no válidos o si el campo requerido se deja en blanco. También puede restringir la longitud de una entrada utilizando los métodos maxLength() y minLength()

Resultados

Una vez que se envía la transacción, los campos requeridos se marcarán para que el firmante los complete. El firmante no podrá continuar hasta que haya rellenado estos campos.

Para descargar la muestra de código completa, consulte nuestro sitio Code Share. El PDF utilizado en este tema se puede encontrar aquí.

Al crear un formulario, puede requerir que un usuario complete algunos campos obligatorios. O también es posible que desee asegurarse de que el usuario ingrese entradas válidas. Al validar los datos del formulario mientras el usuario los rellena, el usuario puede saber inmediatamente si ha cometido algún error o si ha dejado un campo obligatorio vacío. Esto le ahorra tiempo a la hora de lidiar con una entrada de formulario incorrecta o vacía. Con OneSpan Sign, puede lograrlo creando validadores de campo. Un validador de campo le permite requerir y restringir el rango de valores aceptables para un campo no delimitado.

Al construir un validador de campo, debe seleccionar primero el tipo de datos deseado del campo (por ejemplo, numérico, alfabético). A continuación, puede agregar otros parámetros (como la longitud máxima).

Un campo solo puede tener un validador.

El código

El siguiente código de ejemplo le muestra cómo agregar la validación de campo a un campo que está vinculado a una firma.

Si necesita una comparación con el procedimiento básico de creación de objetos o si es la primera vez que crea una transacción, consulte Crear y enviar una transacción.

 .WithSignature(SignatureBuilder.CaptureFor("[email protected]")   .WithName("client_signature")   .WithPositionExtracted()   .WithField(FieldBuilder.SignatureDate()   .WithName("client_date")   .WithPositionExtracted())   .WithField(FieldBuilder.TextField()   .WithName("first_name")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Alphabetic().Required().WithErrorMessage("Please enter a valid first name.")))   .WithField(FieldBuilder.TextField()   .WithName("last_name")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Alphabetic().Required().WithErrorMessage("Please enter a valid last name.")))   .WithField(FieldBuilder.TextField()   .WithName("address")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Basic().Required().WithErrorMessage("Please enter a valid address.")))   .WithField(FieldBuilder.TextField()   .WithName("city")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Alphabetic().Required().WithErrorMessage("Please enter a valid city.")))   .WithField(FieldBuilder.TextField()   .WithName("state")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Alphabetic().Required().MaxLength(2).MinLength(2).WithErrorMessage("Please enter a valid state.")))   .WithField(FieldBuilder.TextField()   .WithName("zip")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Numeric().Required().MaxLength(5).MinLength(5).WithErrorMessage("Please enter a valid zip.")))   .WithField(FieldBuilder.TextField()   .WithName("country")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Alphabetic().Required().WithErrorMessage("Please enter a valid country.")))   .WithField(FieldBuilder.TextField()   .WithName("phone_number")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$").Required().WithErrorMessage("Please enter a valid phone number (XXX-XXX-XXXX)")))   .WithField(FieldBuilder.TextField()   .WithName("email")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Email().Required().WithErrorMessage("Please enter a valid email.")))   .WithField(FieldBuilder.TextField()   .WithName("company")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Alphabetic().Required().WithErrorMessage("Please enter a valid company.")))   .WithField(FieldBuilder.TextField()   .WithName("policy_number")   .WithPositionExtracted()   .WithValidation(FieldValidatorBuilder.Numeric().Required().WithErrorMessage("Please enter a valid policy number.")))) 

En este ejemplo, los campos de formulario se extraen del PDF. Para extraer cada campo de formulario en su PDF, tendrá que pasar el nombre exacto de su campo de formulario PDF al método withName() y usar el método withPositionExtracted() para asegurarse de que la posición y el tamaño exactos se conserven en OneSpan Sign

La extracción de la posición solo se puede hacer al cargar su documento y solo a través de la API/SDKs.

Para crear un validador de campo, deberá pasar un tipo de validador de campo a FieldValidatorBuilder. Puede utilizar los validadores predefinidos que vienen con la API/SDK o puede crear su propio validador personalizado utilizando expresiones regulares.

El método required() hace que un campo sea obligatorio y el método withErrorMessage() personaliza el mensaje de error que aparecerá si el usuario ingresa datos de formato no válidos o si el campo requerido se deja en blanco. También puede restringir la longitud de una entrada utilizando los métodos maxLength() y minLength()

Resultados

Una vez que se envía la transacción, los campos requeridos se marcarán para que el firmante los complete. El firmante no podrá continuar hasta que haya rellenado estos campos.

Para descargar la muestra de código completa, consulte nuestro sitio Code Share. El PDF utilizado en este tema se puede encontrar aquí.

Al crear un formulario, puede requerir que un usuario complete algunos campos obligatorios. O también es posible que desee asegurarse de que el usuario ingrese entradas válidas. Al validar los datos del formulario mientras el usuario los rellena, el usuario puede saber inmediatamente si ha cometido algún error o si ha dejado un campo obligatorio vacío. Esto le ahorra tiempo a la hora de lidiar con una entrada de formulario incorrecta o vacía. Con OneSpan Sign, puede lograrlo creando validadores de campo. Un validador de campo le permite requerir y restringir el rango de valores aceptables para un campo no delimitado.

Al construir un validador de campo, debe seleccionar primero el tipo de datos deseado del campo (por ejemplo, numérico, alfabético). A continuación, puede agregar otros parámetros (como la longitud máxima).

Un campo solo puede tener un validador.

El siguiente código de ejemplo le muestra cómo agregar la validación de campo a un campo que está vinculado a una firma.

Si necesita una comparación con el procedimiento básico de creación de objetos o si es la primera vez que crea una transacción, consulte Crear y enviar una transacción.

Solicitud HTTP

POST /api/packages

Encabezados HTTP

Accept: application/json   
Content-Type: multipart/form-data   
Authorization: Basic api_key 

Carga útil de solicitud

 ------WebKitFormBoundary1bNO60n7FqP5WO4t   Content-Disposition: form-data; name="file"; filename="testDocumentExtraction.pdf"   Content-Type: application/pdf   %PDF-1.5   %µµµµ   1 0 obj   <>>>   endobj....   ------WebKitFormBoundary1bNO60n7FqP5WO4t   Content-Disposition: form-data; name="payload"   {   "autocomplete": true,   "documents": [   {   "approvals": [   {   "role": "manager",   "fields": [   {   "subtype": "LABEL",   "binding": "{approval.signed}",   "extract": true,   "type": "INPUT",   "name": "manager_date"   },   {   "subtype": "CAPTURE",   "extract": true,   "type": "SIGNATURE",   "name": "manager_signature"   }   ],   "name": ""   },   {   "role": "client",   "fields": [   {   "subtype": "LABEL",   "binding": "{approval.signed}",   "extract": true,   "type": "INPUT",   "name": "client_date"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid first name.",   "pattern": "^[\\sa-zA-Z]+$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "first_name"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid last name.",   "pattern": "^[\\sa-zA-Z]+$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "last_name"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid address.",   "pattern": ""   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "address"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid city.",   "pattern": "^[\\sa-zA-Z]+$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "city"   },   {   "validation": {   "maxLength": 2,   "required": true,   "minLength": 2,   "errorMessage": "Please enter a valid state.",   "pattern": "^[\\sa-zA-Z]+$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "state"   },   {   "validation": {   "maxLength": 5,   "required": true,   "minLength": 5,   "errorMessage": "Please enter a valid zip.",   "pattern": "^[-+]?[0-9]*\\.?[0-9]*$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "zip"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid country.",   "pattern": "^[\\sa-zA-Z]+$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "country"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid phone number (XXX-XXX-XXXX)",   "pattern": "^[2-9]\\d{2}-\\d{3}-\\d{4}$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "phone_number"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid email.",   "pattern": "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "email"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid company.",   "pattern": "^[\\sa-zA-Z]+$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "company"   },   {   "validation": {   "required": true,   "errorMessage": "Please enter a valid policy number.",   "pattern": "^[-+]?[0-9]*\\.?[0-9]*$"   },   "subtype": "TEXTFIELD",   "extract": true,   "type": "INPUT",   "name": "policy_number"   },   {   "subtype": "CAPTURE",   "extract": true,   "type": "SIGNATURE",   "name": "client_signature"   }   ],   "name": ""   }   ],   "extract": true,   "name": "Contract"   }   ],   "status": "SENT",   "type": "PACKAGE",   "roles": [   {   "id": "client",   "type": "SIGNER",   "signers": [   {   "lastName": "Smith",   "email": "[email protected]",   "firstName": "John",   "id": "client"   }   ],   "name": "client"   },   {   "id": "manager",   "type": "SENDER",   "signers": [   {   "lastName": "Haidary",   "email": "[email protected] ",   "firstName": "Haris",   "id": "manager"   }   ],   "name": "manager"   }   ],   "name": "Sample Contract"   }   ------WebKitFormBoundary1bNO60n7FqP5WO4t-- 

Para obtener una descripción completa de cada campo, consulte la tabla Carga útil de solicitud siguiente.

Para descargar la muestra de código completa, consulte nuestro sitio Code Share. El PDF utilizado en este tema se puede encontrar aquí.

Al crear un formulario, puede requerir que un usuario complete algunos campos obligatorios. O también es posible que desee asegurarse de que el usuario ingrese entradas válidas. Al validar los datos del formulario mientras el usuario los rellena, el usuario puede saber inmediatamente si ha cometido algún error o si ha dejado un campo obligatorio vacío. Esto le ahorra tiempo a la hora de lidiar con una entrada de formulario incorrecta o vacía. Con OneSpan Sign, puede lograrlo creando validadores de campo. Un validador de campo le permite requerir y restringir el rango de valores aceptables para un campo no delimitado.

Al construir un validador de campo, debe seleccionar primero el tipo de datos deseado del campo (por ejemplo, numérico, alfabético). A continuación, puede agregar otros parámetros (como la longitud máxima).

Un campo solo puede tener un validador.

El siguiente código de ejemplo le muestra cómo agregar la validación de campo a un campo que está vinculado a una firma.

Si necesita una comparación con el procedimiento básico de creación de objetos o si es la primera vez que crea una transacción, consulte Crear y enviar una transacción.

  //Approval for client   ESignLiveAPIObjects.Approval approvalForClient = new ESignLiveAPIObjects.Approval();   approvalForClient.role = roleId2;   approvalForClient.id = 'approvalForClient';   //signature field for client   ESignLiveAPIObjects.Field fieldClient1 = new ESignLiveAPIObjects.Field();   fieldClient1.extract = true;   fieldClient1.name = 'client_signature';   //match pdf field property name   fieldClient1.type = 'SIGNATURE';   fieldClient1.subtype = 'CAPTURE';   //date field for client   ESignLiveAPIObjects.Field fieldClient2 = new ESignLiveAPIObjects.Field();   fieldClient2.extract = true;   fieldClient2.name = 'client_date';   //match pdf field property name   fieldClient2.type = 'INPUT';   fieldClient2.subtype = 'LABEL';   fieldClient2.binding = '{approval.signed}';   //text field: first_name   ESignLiveAPIObjects.Field fieldClient3 = new ESignLiveAPIObjects.Field();   fieldClient3.extract = true;   fieldClient3.name = 'first_name';   //match pdf field property name   fieldClient3.type = 'INPUT';   fieldClient3.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_first_name = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_first_name.required = true;   FieldValidation_first_name.errorMessage = 'Please enter a valid first name.';   FieldValidation_first_name.pattern = '^[\\sa-zA-Z]+$';   fieldClient3.validation = FieldValidation_first_name;   //text field: last_name   ESignLiveAPIObjects.Field fieldClient4 = new ESignLiveAPIObjects.Field();   fieldClient4.extract = true;   fieldClient4.name = 'last_name';   //match pdf field property name   fieldClient4.type = 'INPUT';   fieldClient4.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_last_name = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_last_name.required = true;   FieldValidation_last_name.errorMessage = 'Please enter a valid last name.';   FieldValidation_last_name.pattern = '^[\\sa-zA-Z]+$';   fieldClient4.validation = FieldValidation_last_name;   //text field: address   ESignLiveAPIObjects.Field fieldClient5 = new ESignLiveAPIObjects.Field();   fieldClient5.extract = true;   fieldClient5.name = 'address';   //match pdf field property name   fieldClient5.type = 'INPUT';   fieldClient5.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_address = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_address.required = true;   FieldValidation_address.errorMessage = 'Please enter a valid address.';   FieldValidation_address.pattern = '';   fieldClient5.validation = FieldValidation_address;   //text field: city   ESignLiveAPIObjects.Field fieldClient6 = new ESignLiveAPIObjects.Field();   fieldClient6.extract = true;   fieldClient6.name = 'city';   //match pdf field property name   fieldClient6.type = 'INPUT';   fieldClient6.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_city = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_city.required = true;   FieldValidation_city.errorMessage = 'Please enter a valid city.';   FieldValidation_city.pattern = '^[\\sa-zA-Z]+$';   fieldClient6.validation = FieldValidation_city;   //text field: state   ESignLiveAPIObjects.Field fieldClient7 = new ESignLiveAPIObjects.Field();   fieldClient7.extract = true;   fieldClient7.name = 'state';   //match pdf field property name   fieldClient7.type = 'INPUT';   fieldClient7.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_state = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_state.required = true;   FieldValidation_state.errorMessage = 'Please enter a valid state.';   FieldValidation_state.pattern = '^[\\sa-zA-Z]+$';   FieldValidation_state.maxLength = 2;   FieldValidation_state.minLength = 2;   fieldClient7.validation = FieldValidation_state;   //text field: zip   ESignLiveAPIObjects.Field fieldClient8 = new ESignLiveAPIObjects.Field();   fieldClient8.extract = true;   fieldClient8.name = 'zip';   //match pdf field property name   fieldClient8.type = 'INPUT';   fieldClient8.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_zip = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_zip.required = true;   FieldValidation_zip.errorMessage = 'Please enter a valid zip.';   FieldValidation_zip.pattern = '^[-+]?[0-9]*\\.?[0-9]*$';   FieldValidation_zip.maxLength = 5;   FieldValidation_zip.minLength = 5;   fieldClient8.validation = FieldValidation_zip;   //text field: phone_number   ESignLiveAPIObjects.Field fieldClient9 = new ESignLiveAPIObjects.Field();   fieldClient9.extract = true;   fieldClient9.name = 'phone_number';   //match pdf field property name   fieldClient9.type = 'INPUT';   fieldClient9.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_phone_number = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_phone_number.required = true;   FieldValidation_phone_number.errorMessage = 'Please enter a valid phone number (XXX-XXX-XXXX)';   FieldValidation_phone_number.pattern = '^[2-9]\\d{2}-\\d{3}-\\d{4}$';   fieldClient9.validation = FieldValidation_phone_number;   //text field: email   ESignLiveAPIObjects.Field fieldClient10 = new ESignLiveAPIObjects.Field();   fieldClient10.extract = true;   fieldClient10.name = 'email';   //match pdf field property name   fieldClient10.type = 'INPUT';   fieldClient10.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_email = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_email.required = true;   FieldValidation_email.errorMessage = 'Please enter a valid email.';   FieldValidation_email.pattern = '^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$';   fieldClient10.validation = FieldValidation_email;   //text field: company   ESignLiveAPIObjects.Field fieldClient11 = new ESignLiveAPIObjects.Field();   fieldClient11.extract = true;   fieldClient11.name = 'company';   //match pdf field property name   fieldClient11.type = 'INPUT';   fieldClient11.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_company = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_company.required = true;   FieldValidation_company.errorMessage = 'Please enter a valid company.';   FieldValidation_company.pattern = '^[\\sa-zA-Z]+$';   fieldClient11.validation = FieldValidation_company;   //text field: policy_number   ESignLiveAPIObjects.Field fieldClient12 = new ESignLiveAPIObjects.Field();   fieldClient12.extract = true;   fieldClient12.name = 'policy_number';   //match pdf field property name   fieldClient12.type = 'INPUT';   fieldClient12.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_policy_number = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_policy_number.required = true;   FieldValidation_policy_number.errorMessage = 'Please enter a valid policy number.';   FieldValidation_policy_number.pattern = '^[-+]?[0-9]*\\.?[0-9]*$';   fieldClient12.validation = FieldValidation_policy_number;   //text field: country   ESignLiveAPIObjects.Field fieldClient13 = new ESignLiveAPIObjects.Field();   fieldClient13.extract = true;   fieldClient13.name = 'country';   //match pdf field property name   fieldClient13.type = 'INPUT';   fieldClient13.subtype = 'TEXTFIELD';   //set validator   ESignLiveAPIObjects.FieldValidation FieldValidation_country = new ESignLiveAPIObjects.FieldValidation();   FieldValidation_country.required = true;   FieldValidation_country.errorMessage = 'Please enter a valid country.';   FieldValidation_country.pattern = '^[\\sa-zA-Z]+$';   fieldClient13.validation = FieldValidation_country;   approvalForClient.fields = new List<ESignLiveAPIObjects.Field>{fieldClient1,fieldClient2,fieldClient3,fieldClient4,fieldClient5,fieldClient6,fieldClient7,fieldClient8,fieldClient9,fieldClient10,fieldClient11,fieldClient12,fieldClient13}; 

En este ejemplo, los campos de formulario se extraen del PDF. Para extraer cada campo de formulario en su PDF, tendrá que pasar el nombre exacto de su campo de formulario PDF al atributo name de un campo y habilitar el documento, así como el extracto de nivel de campo para asegurarse de que la posición y el tamaño exactos se conserven en OneSpan Sign.

La extracción de la posición solo se puede hacer al cargar su documento y solo a través de la API/SDKs.

Para crear un validador de campo, deberá pasar un tipo de validador de campo a FieldValidatorBuilder. Puede utilizar los validadores predefinidos que vienen con la API/SDK o puede crear su propio validador personalizado utilizando expresiones regulares.

El método required() hace que un campo sea obligatorio y el método withErrorMessage() personaliza el mensaje de error que aparecerá si el usuario ingresa datos de formato no válidos o si el campo requerido se deja en blanco. También puede restringir la longitud de una entrada utilizando los métodos maxLength() y minLength()

Resultados

Una vez que se envía la transacción, los campos requeridos se marcarán para que el firmante los complete. El firmante no podrá continuar hasta que haya rellenado estos campos.