Blazor Signature Overview
This article provides information about the Blazor Signature component and its core features.
The Blazor Signature component provides an area where users can draw their signatures with a mouse, pen, or with their fingertips. You can use the component in any application where the users must sign a document. The Blazor Signature integrates easily with the TelerikForm. The component stores the value of the signature as a base64 string
The Signature component is part of Telerik UI for Blazor, a
professional grade UI library with 110+ native components for building modern and feature-rich applications. To try it out sign up for a free 30-day trial.
Creating Blazor Signature
- Use the
TelerikSignature
tag to add the component to your razor page. - Set the
Value
parameter to astring
property. It supports one-way and two-way binding. - Set the
Width
andHeight
parameters topx
values. - Increase the SignalR Message Size.
<TelerikSignature @bind-Value="@SignatureValue" Width="300px" Height="300px">
</TelerikSignature>
@code {
private string SignatureValue { get; set; }
}
Value Format
The Signature produces a Value
, which is a Base64-encoded PNG image. To display the image without saving it as a physical file, use the Value
directly as a data URI. To save the Value
and use it as a physical image, remove the data URI prefix data:image/png;base64,
from the beginning of the Value
string.
To test with physical PNG files, uncomment the code below and run the example in a Blazor Server app.
@*@inject IWebHostEnvironment HostingEnvironment*@
<p>Draw something to see how the Signature Value looks like.</p>
<TelerikSignature @bind-Value="@SignatureValue"
Width="400px"
Height="200px" />
@if (!string.IsNullOrEmpty(SignatureValue))
{
<p><TelerikButton OnClick="@SavePng">Save PNG Image</TelerikButton></p>
@if (ShowPng)
{
<h2>Signature Image as Saved PNG File</h2>
<p><strong>Test this in a Blazor Server app.</strong></p>
<p>The image source does not include <code>@PngBase64Prefix</code></p>
<p><img src="signature.png?@CacheBuster" style="width:400px;" alt="Saved Signature PNG" /></p>
}
<h2>Signature Value</h2>
<div style="width:600px;height:5em;margin-top:2em;overflow:auto;word-break:break-all;">
@( new MarkupString(SignatureValue
.Replace(PngBase64Prefix, $"<strong style=\"color:red\">{PngBase64Prefix}</strong>")) )
</div>
<h2>Signature Image as Data URI</h2>
<p>The <code>img src</code> attribute includes <code>@PngBase64Prefix</code></p>
<p><img src="@SignatureValue" style="width:400px;" alt="Signature PNG as Data URI" /></p>
}
@code {
private string SignatureValue { get; set; } = string.Empty;
private bool ShowPng { get; set; }
private const string SignaturePngFileName = "signature.png";
private const string PngBase64Prefix = "data:image/png;base64,";
private string CacheBuster { get; set; } = string.Empty;
private async Task SavePng()
{
if (!string.IsNullOrEmpty(SignatureValue))
{
// Remove "data:image/png;base64," from SignatureValue
byte[] imageBytes = Convert.FromBase64String(SignatureValue.Substring(PngBase64Prefix.Length));
// This code works only in Blazor Server apps.
// In WebAssembly apps, you need to send the Signature Value to a server first.
//var imageSaveLocation = Path.Combine(HostingEnvironment.WebRootPath, SignaturePngFileName);
//using (var imageFile = new FileStream(imageSaveLocation, FileMode.Create))
//{
// await imageFile.WriteAsync(imageBytes, 0, imageBytes.Length);
// await imageFile.FlushAsync();
//}
CacheBuster = DateTime.Now.Ticks.ToString();
ShowPng = true;
}
}
}
Appearance
The Signature component provides settings to control its appearance, for example colors and borders. Read more about the Blazor Signature appearance settings...
Events
Use the Blazor Signature blur and value change events to respond to user actions. Read more about the Blazor Signature events...
SignalR Message Size
In Blazor server-side applications, the Signature component uses the SignalR WebSocket, which has a default maximum message size of 32 KB. This is rarely enough for the Signature Value
, which is a Base64 image, so increase the max WebSocket message size for the Blazor application.
The Signature parameters, which affect the Value
size are ExportScale
, Height
, and Width
.
Signature Parameters
The following table lists the Signature parameters. Also check the Signature API Reference.
Parameter | Type and Default Value | Description |
---|---|---|
AriaDescribedBy |
string |
Maps to the area-describedby attribute. Use this parameter to establish a relationship between widgets or groups and the text that describes them. |
AriaLabel |
string |
Maps to the aria-label attribute. Use this parameter if the text that labels the component is not visible. |
AriaLabelledBy |
string |
Maps to the area-labelledby attribute. Use this parameter to reference another element to define its accessible name. |
Class |
string |
Renders a custom CSS class to the <div class="k-signature"> element. Use it to override theme styles. |
DebounceDelay |
int (150)
|
The time in milliseconds between the last drawn line and the value change event. Increase the debounce delay to optimize the number of client-server requests while the user is drawing, especially when the Width and Height are larger. |
Enabled |
bool (true)
|
Defines if the component is enabled. |
ExportScale |
double (2)
|
The Width and Height of the component will be multiplied by the export scale when converting the signature to an image. If you don't need to save a high-precision signature of the user, or if the Width and Height are large, reduce the export scale to optimize the Value size. |
Height |
string |
Defines the height of the component. Set it in px . If you need to use relative units, see how to resize the Signature with the browser. |
HideLine |
bool |
Whether the dotted line is rendered. |
Maximizable |
bool |
Whether the Signature can be maximized via a button at the top-right corner. When maximized, the component will show a modal popup dialog. Also see PopupScale . |
PopupScale |
double (3)
|
The Width and Height of the component will be multiplied by the PopupScale value when maximizing the Blazor Signature. Also see Maximizable . |
ReadOnly |
bool |
Maps to the readonly attribute. Use this parameter to put the Signature in read-only state. |
Smooth |
bool |
Use this parameter to smoothen the signature line. |
StrokeWidth |
double? |
The drawn lines' thickness in pixels. |
TabIndex |
int? |
Maps to the tabindex attribute of the HTML element. You can use it to customize the order in which the inputs in your form focus with the Tab key. |
ValidateOn |
ValidationEvent enum ( Input ) |
Configures the event that will trigger validation (if validation is enabled). Read more at Validation Modes for Simple Inputs. |
Width |
string |
Defines the width of the component. Set the it in px . If you need to use relative units, see how to resize the Signature at runtime. |
Signature Reference and Methods
The Signature exposes methods for programmatic operation. To use them, define a reference to the component instance with the @ref
directive attribute. The methods are:
Method | Description |
---|---|
Refresh |
Use the method to programmatically re-render the Signature. |
@* Get a reference to the Signature component and refresh it on button click *@
<TelerikButton OnClick="@RefreshClickHandler">Refresh the Signature</TelerikButton>
<TelerikSignature @bind-Value="@SignatureValue"
Width="300px"
Height="300px"
@ref="@SignatureReference">
</TelerikSignature>
@code {
private TelerikSignature SignatureReference { get; set; }
private string SignatureValue { get; set; }
private void RefreshClickHandler()
{
SignatureReference.Refresh();
}
}