SignatureField TX Text Control .NET Server for ASP.NET
TXTextControl Namespace
SignatureField Class
An instance of the SignatureField class represents a signature field in a Text Control document.
objects are compatible to the Document Viewer TX Text Control .NET Server for ASP.NET
Web.MVC.DocumentViewer Namespace
TXTextControl.Web.MVC.DocumentViewer Namespace
to acquire signatures using a signature soft pad, but can be also used to digitally sign documents when exported to Adobe PDF. SignatureField objects are inherited from the FrameBase TX Text Control .NET Server for ASP.NET
TXTextControl Namespace
FrameBase Class
The FrameBase class is the base class of the Image, TextFrame, ChartFrame, BarcodeFrame and DrawingFrame classes.
class and are handled similar to TextFrames, Images and other FrameBase objects.

Online Demo

Launch the online demos to test this new sample on your own.

Text Control Technical Demos

Signature Fields

Setting a Signature Image

After one or more signature fields are inserted, you can use the first button Set Signature Image to apply an image to the signature field. Therefore, select the signature field you would like to apply an image for and click the button Set Signature Image.

Signature Fields

The JavaScript function setSignatureImage uses the SignatureField.setImage TX Text Control .NET Server for ASP.NET
JavaScript API
SignatureField Object
setImage Method
Sets the signature field's image.
method to apply an SVG as a base64 encoded string to the field.

function setSignatureImage() {
$('.alert').hide();
TXTextControl.signatureFields.getItem(function (sf) {
if (sf === null) {
$('.alert .alert-text').text("Please add a Signature Field first.");
$('.alert').show();
return;
}
sf.setImage("PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi41LjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1NjYgMTM2IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1NjYgMTM2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8cGF0aCBkPSJNMTAwLjksMjAuOWMwLDIuNC0xLDMuOS00LjMsNS41Yy0xLDAuNi0yLjQsMC4xLTIuNC0wLjhjMC0wLjMsMC45LTEuMywyLjEtMi40bDItMS44bC0wLjktMC45Yy0wLjYtMC40LTEuNi0wLjktMi41LTEuMQ0KCQljLTExLjktMy4yLTQyLjgsMS40LTY0LjIsOS43Yy03LjQsMi44LTkuOSw0LjEtOS45LDQuOWMwLDEuMi00LjYsMi41LTUuNSwxLjVjLTEuNC0xLjUsMC0yLjgsNi45LTUuOWM5LjQtNC41LDIxLjgtOC40LDMzLjktMTAuOA0KCQljMTEtMi4zLDIxLTMuMywyOC42LTMuM0M5NC43LDE1LjYsMTAwLjksMTcuNCwxMDAuOSwyMC45eiBNNjEuMSwyMmMwLjEsMCwwLjIsMCwwLjQsMC4xYzEuNSwwLjUsMC44LDQuMi0wLjksNC4yDQoJCWMtMSwwLTIsMC45LTUuMiw1LjNjLTUuNiw3LjQtMTIuOSwxOS4yLTIwLjgsMzMuMWMtOC4yLDE0LjYtMTIsMjIuNi0xMi40LDI1LjhjLTAuMywxLjQtMC41LDEuOC0xLDEuOWMtMC41LDAuMS0xLTAuMS0xLjMtMC40DQoJCWMtMS4zLTEuMy0wLjItNC45LDQuNS0xNC4xYzEwLjMtMjAuNiwyNS4yLTQ0LjUsMzMtNTNDNTkuMiwyMi42LDYwLjIsMjEuOSw2MS4xLDIyeiIvPg0KCTxwYXRoIGQ9Ik01OS42LDY5LjFjLTEuMywyLjQtMS4zLDMuNy0wLjEsNC45YzAuOSwwLjksMS4zLDAuOSwzLjcsMC45YzQuNiwwLDE0LjYtMS45LDIyLTQuM2MyLjUtMC44LDMuNy0wLjYsMy43LDAuNg0KCQljMCwyLjgtMjMuOSw3LjgtMjkuNCw2LjFjLTEuNi0wLjUtMy4yLTIuNC0zLjUtNC4xYy0wLjUtMi42LDEuNS03LDMuMi03LjNjMC4xLDAsMC4yLDAsMC4zLDBDNjAuNiw2Niw2MC42LDY3LjEsNTkuNiw2OS4xeg0KCQkgTTYyLjEsNjIuMmMtMC42LDAuOC0xLjksMC44LTIuMiwwYy0wLjQtMC45LDAuNC0yLDEuNC0yQzYyLjQsNjAuMiw2Mi44LDYxLjMsNjIuMSw2Mi4yeiIvPg0KCTxwYXRoIGQ9Ik05MS4xLDY2LjVjNi45LTEyLjMsMTEuNi0xNy43LDEzLTE1YzAuNSwwLjgtMC4xLDItMC45LDJzLTMuOSw0LjMtNi45LDkuNGMtMS4zLDIuMy0yLjQsNC4yLTIuNCw0LjNjMCwwLjEsMS42LTEsMy42LTIuNg0KCQljMTAuNy04LjIsMjEtMTAuMiwyMi44LTQuNWMwLjUsMS4yLDAuNSwyLjEtMC4yLDQuNmMtMC4zLDEtMC4yLDAuOSwzLjgtMWM3LjEtMy43LDEyLjQtNSwxNC40LTMuNmMyLjMsMS42LDIsNS4zLTAuOCwxMQ0KCQljLTAuOSwxLjktMS43LDMuNC0xLjYsMy40YzAsMCwyLTAuOSw0LjQtMmM1LjEtMi41LDEzLjQtNS4yLDE3LjUtNmMyLjgtMC41LDMuMS0wLjQsMy44LDAuMmMxLjEsMS4yLDAuMiwyLTMuNywyLjgNCgkJYy01LjUsMS4xLTExLjMsMy4yLTE4LDYuNWMtNC42LDIuMi02LjUsMi45LTcuMSwyLjhjLTEuOS0wLjUtMS43LTEuNiwxLjEtNy4xYzIuNy01LjEsMy42LTguNCwyLjYtOS4xYy0wLjktMC42LTQuNywwLjctOS43LDMuMQ0KCQljLTcuNCwzLjYtOS4zLDQuOC0xMy41LDguOGMtMy42LDMuNS03LjEsNi04LjUsNmMtMC44LDAtMS45LTEtMS45LTEuOGMwLTEsMi44LTMuNyw2LjktNi41YzIuMy0xLjUsNC42LTMuMyw1LjEtNC4xDQoJCWMyLjMtMy4xLDMuMi02LjUsMi4xLTcuN2MtMC45LTAuOS00LjUtMC42LTcuNywwLjdjLTguMywzLjItMTguMSwxMS44LTIyLjIsMTkuM2MtMS4yLDIuMy0xLjgsMi44LTIuNSwyLjhjLTAuNiwwLTEtMC4xLTEuMi0wLjINCgkJQzgyLjYsODEuOSw4My4zLDgwLjMsOTEuMSw2Ni41eiIvPg0KCTxwYXRoIGQ9Ik0xODkuNiw5My40Yy0xLTIuMi0wLjktNS4xLDAuNS05LjRjMC45LTIuOSw0LjQtMTAuMyw3LTE1LjFsMS42LTIuOGwtMC45LTAuNGMtMC43LTAuMy0xLTAuOC0xLTEuNGMwLTEuMSwxLjMtMi4yLDMuOC0zLjINCgkJYzEuNi0wLjcsMi4yLTEuMiw0LjgtNWM5LjUtMTMuOCwyMC40LTI2LjgsMjktMzQuNWMyLjEtMS44LDMuNy0zLjQsMy42LTMuNGMtMC4yLTAuMi03LjQsMS41LTEwLjIsMi41Yy0zLDEtNCwxLjctMi4yLDEuNw0KCQljMS4zLDAsMi44LDEuMywyLjYsMi4xYy0wLjMsMC45LTEuNCwwLjktNC40LDAuM2MtNi41LTEuNC0zLjctNC44LDYuMi03LjdjNy44LTIuMiwxNy0zLDI4LjYtMi41YzEyLjgsMC42LDIwLjQsMi40LDIyLjEsNS4yDQoJCWMwLjksMS40LDAuOSwyLjMsMC4yLDMuOGMtMSwyLTMuNCwxLjEtMi42LTAuOWMwLjMtMC44LDAuMi0xLjEtMC40LTEuNmMtMi4yLTItMTEuMS0zLjQtMjMtMy43Yy04LjQtMC4yLTguNS0wLjItOC43LDAuNw0KCQljLTAuMywxLjItMS40LDEuNS0yLjEsMC43Yy0wLjYtMC44LTAuNi0wLjgtMi4xLDBjLTIuMSwxLjEtMTIuNCwxMS4zLTE4LDE3LjhjLTQuNiw1LjQtMTAuNywxMy4zLTE1LDE5LjINCgkJYy0xLjcsMi41LTEuOCwyLjgtMC45LDIuNmMwLjYtMC4yLDMuNC0wLjksNi4zLTEuNmM3LjEtMS45LDExLjktMi43LDE3LjYtMi45YzguMy0wLjQsMTUuMiwxLjUsMTMsMy43Yy0wLjUsMC42LTAuOSwwLjUtMy40LTAuMQ0KCQljLTYtMS41LTE2LjItMC43LTI3LjgsMi40Yy05LjEsMi40LTEwLjQsMy4xLTEwLjQsNS44YzAsMC41LTAuMywwLjktMC44LDAuOWMtMS4zLDAuNC04LDEzLTkuOSwxOC43Yy0wLjUsMS40LTAuOSwzLjYtMC45LDQuOQ0KCQljLTAuMSwyLjEsMCwyLjUsMC45LDMuMmMyLjMsMiw2LjMsMS4yLDIzLjctNC42YzI0LTgsMzMuOS0xMC41LDQzLjktMTEuNWM0LjctMC41LDYuMi0wLjMsNi41LDAuN2MwLjUsMS4yLTAuNywxLjctNS4zLDIuMQ0KCQljLTEwLDAuOS0yMC40LDMuNi00NC44LDExLjZjLTE2LDUuMi0xOS41LDYuMS0yMy4xLDUuNEMxOTEuNyw5Ni40LDE5MC40LDk1LjQsMTg5LjYsOTMuNHoiLz4NCgk8cGF0aCBkPSJNMjY5LjgsODAuNmMwLjMsMC41LDAuNCwxLDAuMiwxLjRjLTAuMywwLjgtMi42LDAuNy0yLjgtMC4xQzI2Ni41LDgwLjMsMjY5LDc5LjEsMjY5LjgsODAuNnoiLz4NCgk8cGF0aCBkPSJNMzk5LDIwLjljMCwyLjQtMSwzLjktNC4zLDUuNWMtMSwwLjYtMi40LDAuMS0yLjQtMC44YzAtMC4zLDAuOS0xLjMsMi4xLTIuNGwyLTEuOGwtMC45LTAuOWMtMC42LTAuNC0xLjYtMC45LTIuNS0xLjENCgkJYy0xMS45LTMuMi00Mi44LDEuNC02NC4yLDkuN2MtNy40LDIuOC05LjksNC4xLTkuOSw0LjljMCwxLjItNC42LDIuNS01LjUsMS41Yy0xLjQtMS41LDAtMi44LDYuOS01LjljOS40LTQuNSwyMS44LTguNCwzMy45LTEwLjgNCgkJYzExLTIuMywyMS0zLjMsMjguNi0zLjNDMzkyLjgsMTUuNiwzOTksMTcuNCwzOTksMjAuOXogTTM1OS4zLDIyYzAuMSwwLDAuMiwwLDAuNCwwLjFjMS41LDAuNSwwLjgsNC4yLTAuOSw0LjJjLTEsMC0yLDAuOS01LjIsNS4zDQoJCWMtNS42LDcuNC0xMi45LDE5LjItMjAuOCwzMy4xYy04LjIsMTQuNi0xMiwyMi42LTEyLjQsMjUuOGMtMC4zLDEuNC0wLjUsMS44LTEsMS45Yy0wLjUsMC4xLTEtMC4xLTEuMy0wLjQNCgkJYy0xLjMtMS4zLTAuMi00LjksNC41LTE0LjFjMTAuMy0yMC42LDI1LjItNDQuNSwzMy01M0MzNTcuNCwyMi42LDM1OC4zLDIxLjksMzU5LjMsMjJ6Ii8+DQoJPHBhdGggZD0iTTM4OS4xLDYxLjZjMS40LDEuMSwxLjIsNC43LTAuNCw5LjFjLTAuNywxLjktMS4xLDMuNC0xLjEsMy40YzAuMSwwLjEsMi40LTAuNyw1LjItMS42YzIuOC0wLjksNy0yLjIsOS42LTIuOA0KCQljNC4yLTEsNC41LTEsNS4xLTAuNWMxLjIsMS4yLDAuMiwyLTUuNSwzLjVjLTguNCwyLjQtMTYuMiw1LjEtMTYuNyw2LjFjLTYuOCwxMy40LTEyLjQsMjEuMi0yMS4yLDMwDQoJCWMtMTMuNiwxMy41LTI4LjIsMjAuNi0zNi41LDE3LjVjLTMuOC0xLjMtNS45LTQuNy01LjMtOC40YzEuMi03LjEsOS0xNS4xLDIyLjctMjMuMmM5LjQtNS42LDI5LjYtMTUuNiwzNi44LTE4LjENCgkJYzEuMS0wLjQsMS43LTAuOSwyLjUtMi4zYzEuNC0zLDIuOS03LjksMi44LTkuM2wtMC4xLTEuNEwzODQsNjVjLTEuNywwLjktNS43LDMtOC45LDVjLTYuNSw0LjEtOS45LDUuNC0xMi45LDUuNA0KCQljLTQsMC01LjktMi4xLTUuOC02LjdjMC0zLjIsMS01LjksMi41LTUuOWMxLjYsMCwyLDAuOSwxLDIuNGMtMC43LDAuOS0wLjksMS43LTAuOSwzLjVjLTAuMSwzLjEsMC43LDQsMy4xLDRjMi41LDAsNS40LTEuMywxMi01LjUNCgkJYzcuNC00LjYsMTAuOS02LjQsMTMuMS02LjNDMzg4LjEsNjEuMSwzODguNyw2MS4yLDM4OS4xLDYxLjZ6IE0zNDYuNiw5Ny4yYy0xMy41LDguMS0yMS4zLDE2LjMtMjEuMywyMi4yYzAsMS42LDAuMiwyLjEsMS4yLDMNCgkJYzAuNywwLjcsMS44LDEuMiwyLjcsMS40YzAuOCwwLjEsMS42LDAuMywxLjgsMC40YzAuNywwLjEsMy40LTAuMyw2LTAuOWMxMS4xLTIuOCwyNy42LTE2LjYsMzcuNi0zMS41YzIuOC00LjIsNi45LTExLjMsNi42LTExLjUNCgkJYzAtMC4xLTAuMS0wLjEtMC4xLTAuMUMzNzguOCw4MC40LDM1NS4yLDkyLDM0Ni42LDk3LjJ6Ii8+DQoJPHBhdGggZD0iTTQyMi43LDUyLjdjMC40LDAuNywwLjEsMS0xLjgsMi44Yy0xLjIsMS4xLTIuNiwyLjYtMi45LDMuMWMtMC44LDEtMC44LDEsMi4zLTAuNWMxMC4zLTUsMjAuMy01LjEsMjIuNC0wLjENCgkJYzAuOCwxLjksMC4zLDQuNC0xLjIsNi44Yy0wLjYsMC45LTAuOSwxLjctMC45LDEuOGMwLjEsMC4xLDIuMS0wLjIsNC41LTAuNmM0LjMtMC45LDEwLTEuMSwxMC43LTAuN2MwLjcsMC40LDAuNiwxLjUsMCwyLjENCgkJYy0wLjMsMC4zLTEuNSwwLjUtMi45LDAuNWMtMi43LDAtNy45LDAuOS0xMi41LDIuMWMtMi43LDAuNy0zLjQsMS01LjgsM2MtNy4zLDYuNC0xNSwxMC4xLTE2LjgsOC4zYy0yLjgtMi43LDQuOS04LjgsMTUtMTIuMQ0KCQljMi0wLjcsMi44LTEuMiwzLjgtMi4zYzQuNi02LjEsNC43LTguOCwwLjEtOS41Yy01LjgtMC45LTE0LjUsMi0yMC43LDdjLTYuNyw1LjQtOC43LDkuMi0xMi42LDI0LjljLTIuOCwxMS4yLTYuMSwxOC45LTExLjEsMjYuNA0KCQljLTMsNC41LTMuMyw0LjctNC42LDUuN2MtMS4xLDAuOC0yLDAuOS0yLjgsMC4yYy0zLjItMi41LTEuMS0xMi42LDQuOS0yNS4zYzYuNS0xMy43LDE1LjItMjYuOCwyNS40LTM4LjVjNC41LTUuMSw0LjYtNS4zLDYuMS01LjcNCgkJYzAuMi0wLjEsMC40LTAuMSwwLjUtMC4xQzQyMi4yLDUyLDQyMi40LDUyLjIsNDIyLjcsNTIuN3ogTTQwMi44LDc5LjNjLTAuNC0wLjUtOC45LDE0LjctMTEuNiwyMC42Yy0zLjEsNy01LjgsMTYuMy01LDE4LjINCgkJYzAuMywwLjksMC43LDAuNSwzLjEtMy4yYzMtNC41LDYtMTAuNCw4LjEtMTUuOUMzOTguOCw5NC44LDQwMy4xLDc5LjYsNDAyLjgsNzkuM3ogTTQyNy44LDc0LjVjLTAuNCwwLTMuNywxLjktNC43LDIuOA0KCQljLTEuNiwxLjItMC4zLDAuNywyLjMtMC45QzQyNi43LDc1LjUsNDI3LjgsNzQuNiw0MjcuOCw3NC41QzQyNy44LDc0LjUsNDI3LjgsNzQuNSw0MjcuOCw3NC41eiIvPg0KCTxwYXRoIGQ9Ik00NTYuOSw2NC4xYzAuOSwwLDEuNywwLjMsMi4yLDAuOWMwLjQsMC41LDAuOCwxLjIsMC44LDEuNmMwLDItNiw2LjMtOC44LDYuM2MtMSwwLTEuMSwwLjItMC45LDEuM2MwLjIsMiwyLDIuOCw1LjgsMi41DQoJCWM1LjYtMC40LDE4LjItMy42LDMxLjktOC4yYzQuNi0xLjUsOC44LTIuNyw5LjMtMi43YzEuMywwLjIsMSwxLjUtMC40LDIuNWMtMy40LDEuOS0yMy45LDguMS0zMy44LDEwLjINCgkJYy02LjgsMS40LTEwLjQsMS41LTEyLjgsMC4zYy0zLjktMS45LTQuMS02LjktMC40LTEwLjdDNDUyLjEsNjUuNiw0NTQuOSw2NC4xLDQ1Ni45LDY0LjF6IE00NTYuMiw2N2MtMC43LDAtMS44LDAuNy0zLjIsMS44DQoJCWMtMi41LDItMC4zLDEuMiwyLjUtMC44QzQ1Ni4yLDY3LjUsNDU2LjUsNjcsNDU2LjIsNjd6Ii8+DQoJPHBhdGggZD0iTTUxMC4yLDU0LjVjLTEuNSwyLjgtNy41LDguMS0xMi4yLDEwLjhjLTEuOCwwLjktMi41LDEuNS0yLjEsMS43YzAuOSwwLjYsNC4yLTAuMywxMy4yLTMuM2MxMi00LjEsMjAuMy01LjgsMjMuMy00LjgNCgkJYzAuNSwwLjIsMSwwLjgsMS4zLDEuNGMwLjYsMS41LDAuMSwyLjgtMi41LDcuMWMtMi41LDQuMi00LjgsOC45LTUuMiwxMC4zYy0wLjIsMC45LTAuMSwxLjEsMC42LDEuMWMwLjksMCw1LjUtMi4zLDExLjYtNS43DQoJCWMxMS4zLTYuMywxNi45LTguMiwxNy43LTZjMC40LDEtMC40LDEuNy0yLjMsMmMtMC45LDAuMi01LjIsMi4yLTkuNyw0LjVjLTQuNSwyLjMtOS44LDUtMTEuOSw2LjFzLTQuNSwyLTUuNCwyLjINCgkJYy0xLjQsMC4yLTEuOCwwLTIuNy0wLjljLTAuOS0wLjktMS0xLjMtMC45LTNjMC4yLTIuMSwyLjEtNi4yLDUuNi0xMi4xYzEuMi0yLjEsMi4yLTMuOSwyLjItNC4xYzAtMS4zLTkuNSwwLjktMjEuMyw0LjgNCgkJYy0xMC4yLDMuNC0xMy4yLDQtMTUuMiwyLjljLTAuNy0wLjMtMS40LTAuOS0xLjctMS4zYy0wLjctMS40LTAuNS00LjIsMC43LTYuNGMxLjQtMi45LDcuNC04LjgsMTAuNi0xMC41YzEuNi0wLjksMi45LTEuMiw0LjEtMS4zDQoJCUM1MTAuNSw1MCw1MTEuNiw1MS43LDUxMC4yLDU0LjV6IE01MDEsNTcuMWMtMS4xLDEtMi43LDIuNy0zLjQsMy43Yy0yLjMsMy0xLjksMywyLjMsMGM0LjItMi45LDguOC04LDcuNi04DQoJCUM1MDYuOSw1Mi44LDUwMyw1NS40LDUwMSw1Ny4xeiIvPg0KPC9nPg0KPC9zdmc+DQo=")
});
}
view raw test.js hosted with ❤ by GitHub

Creating a PDF

The second button Export Signature Fields to PDF creates a PDF document including unsigned signature fields. These fields can be signed in Acrobat Reader after the PDF has been created.

Signature Fields

After opening this PDF in Acrobat Reader, the unsigned fields can be signed using a digital ID:

Signature Fields

Signing Signature Fields

The third button is calling an HttpPost controller method that uses a ServerTextControl TX Text Control .NET Server for ASP.NET
TXTextControl Namespace
ServerTextControl Class
The ServerTextControl class implements a component that provide high-level text processing features for server-based applications.
instance to sign the signature fields using the SaveSettings.SignatureFields TX Text Control .NET Server for ASP.NET
TXTextControl Namespace
SaveSettings Class
SignatureFields Property
Specifies an array of DigitalSignature objects, each of which defines an X.509 certificate and is associated with a SignatureField in the document.
property.

Learn More

Using TX Text Control, there are two ways of signing PDF documents: The whole document and individual signature fields. This article shows how to implement both ways in a .NET 6 command line application.

Digitally Signing Adobe PDF Documents

[HttpPost]
public string PDFSignSignatureFields(string document) {
byte[] bDocument;
// create temporary ServerTextControl
using (TXTextControl.ServerTextControl tx = new TXTextControl.ServerTextControl()) {
tx.Create();
tx.Load(Convert.FromBase64String(document), BinaryStreamType.InternalUnicodeFormat);
X509Certificate2 cert = new X509Certificate2(Server.MapPath("~/App_Data/textcontrolself.pfx"), "123");
List<DigitalSignature> digitalSignatures = new List<DigitalSignature>();
foreach (SignatureField field in tx.SignatureFields) {
field.Name = Guid.NewGuid().ToString();
digitalSignatures.Add(new DigitalSignature(cert, null, field.Name));
field.Image = new SignatureImage(Server.MapPath("~/App_Data/Documents/signature.svg"), 4);
field.SignerData = new SignerData("Tim Typer", "Developer", "", "", "Online Demo");
}
TXTextControl.SaveSettings saveSettings = new TXTextControl.SaveSettings() {
CreatorApplication = "TX Text Control Sample Application",
SignatureFields = digitalSignatures.ToArray()
};
// export to PDF
tx.Save(out bDocument, BinaryStreamType.AdobePDF, saveSettings);
}
// return as Base64 encoded string
return Convert.ToBase64String(bDocument);
}
view raw test.cs hosted with ❤ by GitHub

When loading this document into Acrobat Reader, the signature fields are shown as visual representations in the document. If you click on a field, a dialog confirms the validation status. Additionally, the signature field names are shown in the sidebar.

Signature Fields

Online Demo

Test this on your own using the live demos:

Text Control Technical Demos