Products Technologies Demo Docs Blog Support Company

Demo: Signature Fields in the Document Editor

We just published a new online demo that shows how to insert and handle signature fields in the document editor. Additionally, signature fields are exported to PDF and signed individually using digital certificates.

Demo: Signature Fields in the Document Editor

SignatureField objects are compatible to the Document Viewer 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 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 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=")
    });
}

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 instance to sign the signature fields using the SaveSettings.SignatureFields 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);

}

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

Stay in the loop!

Subscribe to the newsletter to receive the latest updates.

Related Posts

ASP.NETWindows FormsWPF

TX Text Control 33.0 SP3 is Now Available: What's New in the Latest Version

TX Text Control 33.0 Service Pack 3 is now available, offering important updates and bug fixes for all platforms. If you use TX Text Control in your document processing applications, this service…


ASP.NETASP.NET CoreDocument Viewer

High-Performance Text Replacement in Large DOCX Files using C# .NET

Learn how to efficiently replace text in large DOCX files using C# .NET and the ServerTextControl component from Text Control. This article demonstrates the performance benefits of using the…


ASP.NETASP.NET CoreDocument Viewer

Document Viewer 33.2.1 Released: New Event and Bug Fixes

This service pack includes important bug fixes and improvements to enhance the stability and performance of the Document Viewer. In addition, a new event has been introduced to provide developers…


ASP.NETAccessibilityASP.NET Core

Upcoming Support for PDF/UA Compliance and Tagged PDF Generation in Version 34.0

We are happy to announce that version 34.0 will support PDF/UA compliance and the creation of tagged PDF documents. This significant update demonstrates our ongoing commitment to accessibility by…


ASP.NETWindows FormsWPF

TX Text Control 33.0 SP2 is Now Available: What's New in the Latest Version

TX Text Control 33.0 Service Pack 2 is now available, offering important updates and bug fixes for all platforms. If you use TX Text Control in your document processing applications, this service…