# What's New in TX Text Control .NET Server 22.0

> TX Text Control .NET Server 22.0 (X12): Web Editor clipboard, drag and drop, Web.Selection and text parts, JavaScript in PDF, TIF and GIF image export.

- **Product:** TX Text Control .NET Server
- **Section:** Documentation
- **Kind:** Topic
- **Path:** TX Text Control .NET Server > What's New > Older Versions > What's New in TX Text Control .NET Server 22.0
- **3035 words**
- **Web URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2200/
- **LLMs URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2200/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2200/llms-full.txt

---

Version 22.0 built on the HTML5 Web Editor that version 21.0 had introduced. The editor learned to paste formatted content and accept dropped files, and its server control received an API for selections and text parts. For document processing, the version switched image handling to the Windows Imaging Component and added JavaScript actions to PDF documents.

Version 22.0 was released in April 2015 as TX Text Control X12, together with TX Spell .NET 6.0, as the blog article [TX Text Control X12 and TX Spell 6.0 Released](https://www.textcontrol.com/blog/2015/04/15/tx-text-control-x12-and-tx-spell-60-released/) announced. The HTML5 Web Editor of this version is the ASP.NET Web Forms control `Web.TextControl` on the .NET Framework, which is legacy technology today; new applications use the [Document Editor](https://docs.textcontrol.com/tx-text-control-dotnet-server/overview/components/document-editor/llms-full.txt). The features of the Windows Forms and WPF controls of this version, such as the new WPF button bar, ribbon tabs and dialog boxes, aren't part of TX Text Control .NET Server and aren't listed here.

### Version 22.0 at a Glance

| Area | What is new |
|---|---|
| HTML5 Web Editor | Pasting formatted content, dropping files and images, a collapsible ribbon, a spell checking dialog, direct printing, full localization |
| Web Editor programming | Selections and text parts on the server, the `TXTextControl` JavaScript object in the browser, new properties of `Web.TextControl` |
| Images | Loading and saving with the Windows Imaging Component, TIF and GIF export |
| PDF | Document-level JavaScript actions |
| Text positions | Input position markers, scrolling to the input position, headers and footers of a page |

### HTML5 Web Editor

The Web Editor is the [Web.TextControl](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/llms-full.txt) server control, a WYSIWYG word processor in an ASP.NET Web Forms page. Version 22.0 changed how users work with it:

- **Clipboard.** Formatted content copied in a client application, for example MS Word, can be pasted into the editor.
- **Drag and drop.** Users can drop document files and images directly onto the text area.
- **Ribbon.** The ribbon bar can be collapsed and scrolls horizontally when it doesn't fit.
- **Spell checking.** A dialog box for spell checking was added.
- **Printing.** Printing opens the print dialog box of the browser without an extra window.
- **Localization.** The Web Editor belongs to the resource kit and can be localized completely.

### Program the Web Editor

- **Selections.** [Web.TextControl.Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/selection-property/llms-full.txt) returns a [Web.Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/llms-full.txt) object. Its [Start](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/start-property/llms-full.txt) and [Length](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/length-property/llms-full.txt) describe the selected text, [Load](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/load-method/llms-full.txt) replaces it with text in a given format, and [Save](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/save-method/llms-full.txt) saves it.
- **Text parts.** [Web.TextControl.TextParts](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/textparts-property/llms-full.txt) returns a [Web.TextPartCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpartcollection/llms-full.txt) with the main text ([Web.MainText](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/maintext/llms-full.txt)), the headers and footers ([Web.HeaderFooter](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/headerfooter/llms-full.txt), with its [Section](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/headerfooter/section-property/llms-full.txt) and [Type](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/headerfooter/type-property/llms-full.txt)) and the text frames ([Web.TextFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textframe/llms-full.txt)). Each [Web.TextPart](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpart/llms-full.txt) implements [Web.IFormattedText](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/iformattedtext/llms-full.txt) and has its own `Selection`. [Activate](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpartcollection/activate-method/llms-full.txt) moves the input focus into a text part and scrolls the document to it.
- **JavaScript in the browser.** The `TXTextControl` JavaScript object attaches event handlers to the editor and hides parts of it, such as the ruler bars or the status bar.
- **Appearance and behavior.** New properties of `Web.TextControl` control the editor from the server: [EditMode](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/editmode-property/llms-full.txt) (read-only, selectable or editable), [ControlChars](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/controlchars-property/llms-full.txt), [TextFieldsEditable](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/textfieldseditable-property/llms-full.txt), [ContextMenusEnabled](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/contextmenusenabled-property/llms-full.txt), [TableGridLines](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/tablegridlines-property/llms-full.txt), [DocumentTargetMarkers](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/documenttargetmarkers-property/llms-full.txt), [TextFrameMarkerLines](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/textframemarkerlines-property/llms-full.txt), [BackColor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/backcolor-property/llms-full.txt), [StatusBarColor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/statusbarcolor-property/llms-full.txt) and [SaveDocumentQuestionDialogEnabled](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/savedocumentquestiondialogenabled-property/llms-full.txt), which asks for confirmation before unsaved changes are discarded.
- **WebSocket handler.** [WebSocketHandlerPath](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/websockethandlerpath-property/llms-full.txt) sets the part of the path between the root of the web site and the handler file *TXWebSocketHandler.ashx*. With `null`, the default, or an empty string, the browser derives the handler's url from the url of the page.

### Document Processing

- **Images.** TX Text Control uses the Windows Imaging Component (WIC) to load and save images. Images can now also be exported as TIF and GIF, selected with [Image.ExportFilterIndex](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/image/exportfilterindex-property/llms-full.txt) for one image or [SaveSettings.ImageExportFilterIndex](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/savesettings/imageexportfilterindex-property/llms-full.txt) for all images of a document.
- **JavaScript in PDF documents.** [SaveSettings.DocumentLevelJavaScriptActions](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/savesettings/documentleveljavascriptactions-property/llms-full.txt) takes an array of scripts that are embedded at document level and run when the PDF document is opened. PDF/A documents don't get them. See [PDF Creation](https://docs.textcontrol.com/tx-text-control-dotnet-server/pdf/creation/llms-full.txt).
- **Input position.** [InputPosition.InactiveMarker](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/inputposition/inactivemarker-property/llms-full.txt) shows a marker at the input position while the control is inactive and the caret isn't visible, and [InputPosition.ScrollTo](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/inputposition/scrollto-method/llms-full.txt) scrolls the input position into view. [TextField.ContainsInputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textfield/containsinputposition-property/llms-full.txt) and [DocumentTarget.ContainsInputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/documenttarget/containsinputposition-property/llms-full.txt) tell whether a field or a target is at the input position.
- **Headers and footers of a page.** [Page.Header](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/page/header-property/llms-full.txt) and [Page.Footer](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/page/footer-property/llms-full.txt) return the header and the footer of a page, or `null` if the page has none. See [Pages](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/pages/llms-full.txt).

### Upgrade to Version 22.0

The update notes of version 22.0 concern TX Text Control .NET for WPF only: the WPF button bar replaced several of its properties with `Items`, `BorderBrush` and `BorderThickness`, the WPF `TextControl` lost its `MousePosition` property and can be used only after its own `Loaded` event. None of these classes is part of TX Text Control .NET Server.

### New Classes, Properties, Methods and Events

The classes and members below are the ones that the What's New documentation of version 22.0 lists for TX Text Control .NET Server. Names are relative to the `TXTextControl` namespace, each name links to its current reference page, and "(obsolete)" marks a member that is obsolete today.

#### New Classes

- [Web.HeaderFooter](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/headerfooter/llms-full.txt)
- [Web.IFormattedText](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/iformattedtext/llms-full.txt)
- [Web.MainText](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/maintext/llms-full.txt)
- [Web.Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/llms-full.txt)
- [Web.TextFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textframe/llms-full.txt)
- [Web.TextPart](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpart/llms-full.txt)
- [Web.TextPartCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpartcollection/llms-full.txt)

#### Members by Class

| Class | Properties | Methods | Events |
|---|---|---|---|
| [DocumentTarget](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/documenttarget/llms-full.txt) | [ContainsInputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/documenttarget/containsinputposition-property/llms-full.txt) |  |  |
| [InputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/inputposition/llms-full.txt) | [InactiveMarker](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/inputposition/inactivemarker-property/llms-full.txt) | [ScrollTo](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/inputposition/scrollto-method/llms-full.txt) |  |
| [Page](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/page/llms-full.txt) | [Footer](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/page/footer-property/llms-full.txt), [Header](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/page/header-property/llms-full.txt) |  |  |
| [SaveSettings](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/savesettings/llms-full.txt) | [DocumentLevelJavaScriptActions](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/savesettings/documentleveljavascriptactions-property/llms-full.txt) |  |  |
| [TextField](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textfield/llms-full.txt) | [ContainsInputPosition](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textfield/containsinputposition-property/llms-full.txt) |  |  |
| [Web.HeaderFooter](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/headerfooter/llms-full.txt) | [Section](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/headerfooter/section-property/llms-full.txt), [Type](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/headerfooter/type-property/llms-full.txt) |  |  |
| [Web.IFormattedText](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/iformattedtext/llms-full.txt) | [Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/iformattedtext/selection-property/llms-full.txt) |  |  |
| [Web.Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/llms-full.txt) | [Length](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/length-property/llms-full.txt), [Start](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/start-property/llms-full.txt) | [Load](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/load-method/llms-full.txt), [Save](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/selection/save-method/llms-full.txt) |  |
| [Web.TextControl](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/llms-full.txt) | [BackColor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/backcolor-property/llms-full.txt), [ContextMenusEnabled](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/contextmenusenabled-property/llms-full.txt), [ControlChars](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/controlchars-property/llms-full.txt), [DocumentTargetMarkers](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/documenttargetmarkers-property/llms-full.txt), [EditMode](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/editmode-property/llms-full.txt), [SaveDocumentQuestionDialogEnabled](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/savedocumentquestiondialogenabled-property/llms-full.txt), [Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/selection-property/llms-full.txt), [StatusBarColor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/statusbarcolor-property/llms-full.txt), [TableGridLines](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/tablegridlines-property/llms-full.txt), [TextFieldsEditable](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/textfieldseditable-property/llms-full.txt), [TextFrameMarkerLines](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/textframemarkerlines-property/llms-full.txt), [TextParts](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/textparts-property/llms-full.txt), [WebSocketHandlerPath](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textcontrol/websockethandlerpath-property/llms-full.txt) |  |  |
| [Web.TextPart](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpart/llms-full.txt) | [Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpart/selection-property/llms-full.txt) |  |  |
| [Web.TextPartCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpartcollection/llms-full.txt) |  | [Activate](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-web/textpartcollection/activate-method/llms-full.txt) |  |

### Next Steps

- [Version 23.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2300/llms-full.txt): the features of the next version.
- [Version 21.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2100/llms-full.txt): the version that introduced the HTML5 Web Editor and the ServerVisualization namespace.
- [Document Editor](https://docs.textcontrol.com/tx-text-control-dotnet-server/overview/components/document-editor/llms-full.txt): the browser-based editor of the current version.

---

## Nearby

- **Previous:** [What's New in TX Text Control .NET Server 23.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2300/llms-full.txt)
- **Next:** [What's New in TX Text Control .NET Server 21.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2100/llms-full.txt)
