BoldSign AI Assistant
Chat with the BoldSign AI AssistantHow to Set Read-Only Property on Form Fields
BoldSign allows you to create the read-only form fields, ensuring they are non-editable to signers. This guide will go through the process of setting read-only property to the supported form fields using BoldSign API.
Send a document to the signer with readonly property:
You can set the isReadOnly property to true for each field that should be non-editable to signers. The read-only option is supported only for the below fields:
- TextBox
- CheckBox
- RadioButton
- Name Field
- Editable Date
- Image Field
When setting the isReadOnly property to true, ensure that the prefilled value is also set; otherwise, an error message will be thrown.
Here are example codes you can use to set the form fields as read-only:
Code snippet
curl -X 'POST' \
'https://api.boldsign.com/v1/document/send' \
-H 'accept: application/json' \
-H 'X-API-KEY: {your API key}' \
-H 'Content-Type: multipart/form-data' \
-F 'Title="Sample Document"' \
-F 'Signers={
"name": "hanky",
"emailAddress": "[email protected]",
"signerType": "Signer",
"signerRole": "Signer",
"formFields": [
{
"id": "TextBox",
"name": "TextBox",
"fieldType": "TextBox",
"pageNumber": 1,
"bounds": {
"x": 100,
"y": 100,
"width": 125,
"height": 25
},
"isRequired": true,
"value": "Prefilled Value",
"isReadOnly": true
}
],
"locale": "EN"
}' \
-F 'Files={your file}' \
var apiClient = new ApiClient("https://api.boldsign.com", "{Your API key}");
var documentClient = new DocumentClient(apiClient);
var documentFilePath = new DocumentFilePath
{
ContentType = "application/pdf",
FilePath = "{Your File path}"
};
var filesToUpload = new List<IDocumentFile>
{
documentFilePath,
};
var TextBoxField = new FormField(
id: "sign",
isRequired: true,
isReadOnly: true,
value: "Prefilled Value",
type: FieldType.TextBox,
pageNumber: 1,
bounds: new Rectangle(x: 200, y: 200, width: 125, height: 25));
var formFieldCollections = new List<FormField>()
{
TextBoxField
};
var signer = new DocumentSigner(
name: "David",
emailAddress: "[email protected]",
formFields: formFieldCollections,
locale: Locales.FR);
var documentSigners = new List<DocumentSigner>()
{
signer
};
var sendForSign = new SendForSign()
{
DisableEmails = true,
Signers = documentSigners,
Title = "Sample Document",
Files = filesToUpload
};
var documentCreated = documentClient.SendDocument(sendForSign);
Console.WriteLine(documentCreated.DocumentId);
import boldsign
configuration = boldsign.Configuration(host = "https://api.boldsign.com", api_key = "YOUR_API_KEY")
with boldsign.ApiClient(configuration) as api_client:
document_api = boldsign.DocumentApi(api_client)
send_for_sign = boldsign.SendForSign(
title = "Document SDK API",
document_title = "SDK Document Test case",
description = "Testing document from SDK integration test case",
files = ["YOUR_FILE_PATH"],
signers = [
boldsign.DocumentSigner(
name = "Hanky",
emailAddress = "[email protected]",
signerOrder = 1,
signerType = "Signer",
formFields = [
boldsign.FormField(
name = "TextBox",
fieldType = "TextBox",
font = "Helvetica",
pageNumber = 1,
isReadOnly = True,
value = "Prefilled Value",
bounds = boldsign.Rectangle(x = 50, y = 50, width = 100, height = 150)
)
],
privateMessage = "This is private message for signer"
)
]
)
document_created = document_api.send_document(send_for_sign)
<?php require_once "vendor/autoload.php";
use BoldSign\Configuration;
use BoldSign\Api\DocumentApi;
use BoldSign\Model\{FormField, Rectangle, DocumentSigner, SendForSign, DocumentInfo, FileInfo};
$config = new Configuration();
$config->setHost("https://api.boldsign.com");
$config->setApiKey('YOUR_API_KEY');
$document_api = new DocumentApi($config);
$form_field = new FormField();
$form_field->setName('TextBox');
$form_field->setFieldType('TextBox');
$form_field->setPageNumber(1);
$form_field->setFont('Helvetica');
$form_field->setIsReadOnly(true);
$form_field->setValue('Prefilled Value');
$bounds = new Rectangle([50, 50, 100, 150]);
$form_field->setBounds($bounds);
$document_signer = new DocumentSigner();
$document_signer->setName('Hanky');
$document_signer->setEmailAddress('[email protected]');
$document_signer->setSignerType('Signer');
$document_signer->setSignerOrder(1);
$document_signer->setFormFields([$form_field]);
$document_signer->setPrivateMessage('This is private message for signer');
$send_for_sign = new SendForSign();
$documentInfo = new DocumentInfo();
$documentInfo->setTitle('Document SDK API');
$documentInfo->setDescription('Testing document from SDK integration test case');
$send_for_sign->setDocumentInfo([$documentInfo]);
$files = new FileInfo();
$files = 'YOUR_FILE_PATH';
$send_for_sign->setFiles([$files]);
$send_for_sign->setTitle('SDK Document Test case');
$send_for_sign->setSigners([$document_signer]);
$document_created = $document_api->sendDocument($send_for_sign);
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://api.boldsign.com");
client.setApiKey("YOUR_API_KEY");
DocumentApi documentApi = new DocumentApi(client);
FormField formField = new FormField();
formField.setName("TextBox");
formField.setFieldType(FormField.FieldTypeEnum.TEXT_BOX);
formField.setPageNumber(1);
formField.setFont(FormField.FontEnum.HELVETICA);
formField.setIsReadOnly(true);
formField.setValue("Prefilled Value");
Rectangle bounds = new Rectangle().x(100f).y(100f).width(100f).height(50f);
formField.setBounds(bounds);
DocumentSigner signer = new DocumentSigner();
signer.setName("Hanky");
signer.setEmailAddress("[email protected]");
signer.setSignerOrder(1);
signer.setSignerType(DocumentSigner.SignerTypeEnum.SIGNER);
signer.setFormFields(Arrays.asList(formField));
signer.setPrivateMessage("This is private message for signer");
SendForSign sendForSign = new SendForSign();
File file = new File("YOUR_FILE_PATH");
sendForSign.setFiles(Arrays.asList(file));
sendForSign.setTitle("SDK Document Test case");
sendForSign.setSigners(Arrays.asList(signer));
DocumentCreated documentCreated = documentApi.sendDocument(sendForSign);
import { DocumentApi, DocumentSigner, DocumentInfo, FormField, Rectangle, SendForSign } from "boldsign";
import * as fs from 'fs';
const documentApi = new DocumentApi("https://api.boldsign.com");
documentApi.setApiKey("YOUR_API_KEY");
const bounds = new Rectangle();
bounds.x = 100;
bounds.y = 50;
bounds.width = 100;
bounds.height = 100;
const textBoxField = new FormField();
textBoxField.name = "TextBox";
textBoxField.fieldType = FormField.FieldTypeEnum.TextBox;
textBoxField.font = FormField.FontEnum.Helvetica;
textBoxField.pageNumber = 1;
textBoxField.isReadOnly = true;
textBoxField.value = "Default value";
textBoxField.bounds = bounds;
const documentSigner = new DocumentSigner();
documentSigner.name = "David";
documentSigner.emailAddress = "[email protected]";
documentSigner.signerOrder = 1;
documentSigner.signerType = DocumentSigner.SignerTypeEnum.Signer;
documentSigner.formFields = [textBoxField];
documentSigner.privateMessage = "This is private message for signer";
const files = fs.createReadStream("YOUR_FILE_PATH");
const sendForSign = new SendForSign();
const documentInfo = new DocumentInfo();
documentInfo.title = "SDK Document Test case";
documentInfo.description = "Testing document from SDK integration test case";
sendForSign.documentInfo = [documentInfo];
sendForSign.title = "Document SDK API";
sendForSign.signers = [documentSigner];
sendForSign.files = [files];
const documentCreated = documentApi.sendDocument(sendForSign);
In the above example, the prefilled value should be given when you set the isReadOnly property to true for each field that should be non-editable by signers. By executing any one of the above code examples, the document will be sent for signature and the read-only fields cannot be edited by the signers.