# What's New in TX Text Control .NET for WPF 32.0

> TX Text Control .NET for WPF 32.0 adds footnotes to the editor and the RibbonReferencesTab, pages as SVG with Page.GetImage and an editable [Normal] style.

- **Product:** TX Text Control .NET for WPF
- **Section:** Documentation
- **Kind:** Topic
- **Path:** TX Text Control .NET for WPF > What's New > What's New in TX Text Control .NET for WPF 32.0
- **3154 words**
- **Web URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/3200/
- **LLMs URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/3200/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/3200/llms-full.txt

---

Footnotes are the headline of version 32.0: TX Text Control .NET for WPF inserts, numbers and edits them, in code and in the ribbon. The version also renders document pages as SVG, adds undo steps for headers and footers, and lets you change the \[Normal\] style that all other styles inherit from.

Version 32.0 was released in September 2023, together with TX Text Control .NET Server, TX Text Control .NET for Windows Forms and TX Text Control ActiveX 32.0. The current version is [Version 34.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/3400/llms-full.txt). The service packs of 32.0, among them Service Pack 2 with its new licensing, are listed on [Service Packs](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/service-packs/#version-32-0).

### Version 32.0 at a Glance

| Area | What is new |
|---|---|
| Footnotes | Footnotes in documents and the API, six events of `TextControl`, ribbon items, a search option and a context menu location |
| Pages | SVG images of document pages |
| Editing | An undo step for headers and footers, removing the formatting of a selection, an editable \[Normal\] style |
| Dialog boxes | Format detection and preselection in the open file and insert image dialog boxes |
| .NET | A package for .NET 5 and higher, for .NET 6 and higher from Service Pack 2 |

### Footnotes

A footnote has two parts: a reference mark in the text and the footnote itself at the bottom of the page. Version 32.0 added footnotes to documents and to the API. Footnotes are part of the Enterprise edition; see [Editions and Feature Availability](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/overview/editions/llms-full.txt).

- **The API.** [TextControl.Footnotes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/footnotes-property/llms-full.txt), a [FootnoteCollection](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/llms-full.txt), inserts, finds and removes [Footnote](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/llms-full.txt) objects and sets the start number, number format and highlighting of all footnotes. [ServerTextControl.Footnotes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/servertextcontrol/footnotes-property/llms-full.txt) does the same without a user interface.
- **Events.** `TextControl` raises six events when a footnote is created or deleted, when the input position enters or leaves a reference mark and when the footnote section of a page is activated or deactivated. `ServerTextControl` raises the first two.
- **Numbering and content.** Footnotes are renumbered when one is inserted in front of others, and their text can contain all formatting, tables and images. Headers, footers and text frames can't hold footnotes.
- **File formats.** Footnotes are saved in the TX Text Control format, RTF, DOC and DOCX.

[Footnotes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/footnotes/llms-full.txt) shows how to insert, number, find and remove footnotes and how to handle their events. The blog article [Sneak Peek 32.0: Introducing Footnotes](https://www.textcontrol.com/blog/2023/06/23/sneak-peek-320-introducing-footnotes/) shows footnotes with formatted text and tables.

#### Footnotes in the User Interface

- **Ribbon.** The [RibbonReferencesTab](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/ribbonreferencestab/llms-full.txt) has footnote items to insert, delete, edit and navigate footnotes, highlight their marks and set the start number and the number format. Their identifiers are values of [RibbonReferencesTab.RibbonItem](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/ribbonreferencestab/ribbonitem-enumeration/llms-full.txt), such as `TXITEM_InsertFootnote`, and of [RibbonDropDownItem](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/ribbonreferencestab/ribbondropdownitem-enumeration/llms-full.txt) for the number formats.
- **Find and replace.** The find and replace panel of the [Sidebar](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/sidebar/llms-full.txt) has a check box to search in footnotes, identified by `TXITEM_SearchInFootnotes` of [Sidebar.FindAndReplaceItem](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/sidebar/findandreplaceitem-enumeration/llms-full.txt).
- **Context menu.** The value `Footnote` of [ContextMenuLocation](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/contextmenulocation/enumeration/llms-full.txt) tells a handler of [TextContextMenuOpening](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/textcontextmenuopening-event/llms-full.txt) that the menu opens on a footnote reference mark.

### SVG Images of Pages

Version 32.0 can render a page of a document as Scalable Vector Graphics (SVG), a vector image format.

- **Page.GetImage.** A new overload of [Page.GetImage](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/page/getimage-method/llms-full.txt) returns a page as a string in SVG format. Its first parameter, a [PageContent](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/pagecontent/enumeration/llms-full.txt) value, selects the parts of the page, such as the main text or the headers and footers. In code, the enumeration is written `Page.PageContent`. You get the pages of a document from [GetPages](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/getpages-property/llms-full.txt), which returns pages only when the [ViewMode](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/viewmode-property/llms-full.txt) of `TextControl` is `PageView`.
- **What the SVG contains.** Characters are stored as outline curves (cubic Bézier splines), coordinates are in twips, and pixel images are embedded as PNG. The second parameter sets the maximum resolution of these images in dpi. An SVG image in the document is embedded unchanged, including its script data. The feature description of version 32.0 also names text with font information as a second way of storing characters, but the reference of the overload describes outline curves only, and the overload has no parameter that selects text output.

The overload is an addition, so existing calls of `GetImage` keep working.

### Other Additions

- **Undo for headers and footers.** Changes that your code makes through the properties and methods of a header or footer aren't added to the undo stack of `TextControl` automatically. [HeaderFooter.AddUndoUnit](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/headerfooter/addundounit-method/llms-full.txt) adds the current state of the header or footer to it. When a user edits the text or its formatting, the call isn't needed. See [Undo and Redo](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/editing-text/undo-redo/llms-full.txt).
- **Remove formatting.** [Selection.RemoveFormatting](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/selection/removeformatting-method/llms-full.txt) resets the character formatting of the selected text to its defaults. If nothing or more than one paragraph is selected, it resets the paragraph formatting as well.
- **The \[Normal\] style.** The \[Normal\] style, which all other styles of a document inherit from, can be changed, and the change applies to every style based on it. The style is saved with the document. The blog article [Sneak Peek 32.0: Modifying the Normal Stylesheet](https://www.textcontrol.com/blog/2023/07/04/sneak-peek-320-modifying-the-normal-stylesheet/) shows it; see also [Stylesheets](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/stylesheets/llms-full.txt).
- **File dialog boxes.** The open file and insert image dialog boxes detect the format of a file from its extension and preselect the format opened last when they open again. See [Loading and Saving Documents](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/document-editor/load-save/llms-full.txt).

### .NET

The package `TXTextControl.TextControl.WPF.SDK` of version 32.0 targeted .NET 5 and higher. Service Pack 2 changed the target to .NET 6 and higher, and it introduced the license file that replaces *licenses.licx* in .NET projects. Text Control tested version 32.0 with the final release of .NET 8; see the blog article [TX Text Control Supports .NET 8 in Windows Forms and WPF Applications](https://www.textcontrol.com/blog/2024/01/17/tx-text-control-supports-net-8-in-windows-forms-and-wpf-applications/). Since version 33.0, the package requires .NET 8 or higher.

### New Classes and Members

The What's New documentation of version 32.0 lists these classes, properties, methods and events as new in TX Text Control .NET for WPF, grouped by class. Each name leads to its reference page. The `On` methods, such as `OnFootnoteCreated`, are protected methods that raise the event of the same name. The list of the documentation also names the `HeaderFooter` class and members of it that existed before version 32.0, such as `Distance`, `Images` and `Activate`, and they are left out here. The two `EntryAssembly` properties came with [Service Pack 2](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/service-packs/#version-32-0).

- [Footnote](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/llms-full.txt) (new class): [DefaultHighlightColor](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/defaulthighlightcolor-property/llms-full.txt), [Edit](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/edit-method/llms-full.txt), [HighlightColor](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/highlightcolor-property/llms-full.txt), [HighlightMode](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/highlightmode-property/llms-full.txt), [ID](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/id-property/llms-full.txt), [Name](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/name-property/llms-full.txt), [Number](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/number-property/llms-full.txt), [ReferenceMarkLength](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/referencemarklength-property/llms-full.txt), [ReferenceMarkStart](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/referencemarkstart-property/llms-full.txt), [Save](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/save-method/llms-full.txt), [ScrollTo](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/scrollto-method/llms-full.txt), [Text](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnote/text-property/llms-full.txt)
- [FootnoteCollection](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/llms-full.txt) (new class): [Add](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/add-method/llms-full.txt), [CopyTo](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/copyto-method/llms-full.txt), [Count](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/count-property/llms-full.txt), [GetEnumerator](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/getenumerator-method/llms-full.txt), [GetItem](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/getitem-method/llms-full.txt), [HighlightMode](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/highlightmode-property/llms-full.txt), [Item](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/item-property/llms-full.txt), [NumberFormat](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/numberformat-property/llms-full.txt), [Remove](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/remove-method/llms-full.txt), [StartNumber](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotecollection/startnumber-property/llms-full.txt)
- [FootnoteEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnoteeventargs/llms-full.txt) (new class): [Footnote](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnoteeventargs/footnote-property/llms-full.txt)
- [FootnoteSection](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotesection/llms-full.txt) (new class)
- [FootnoteText](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/footnotetext/llms-full.txt) (new class)
- [HeaderFooter](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/headerfooter/llms-full.txt): [AddUndoUnit](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/headerfooter/addundounit-method/llms-full.txt)
- [Selection](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/selection/llms-full.txt): [RemoveFormatting](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/selection/removeformatting-method/llms-full.txt)
- [ServerTextControl](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/servertextcontrol/llms-full.txt): [EntryAssembly](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/servertextcontrol/entryassembly-property/llms-full.txt), [FootnoteCreated](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/servertextcontrol/footnotecreated-event/llms-full.txt), [FootnoteDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/servertextcontrol/footnotedeleted-event/llms-full.txt), [Footnotes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/servertextcontrol/footnotes-property/llms-full.txt), [OnFootnoteCreated](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/servertextcontrol/onfootnotecreated-method/llms-full.txt), [OnFootnoteDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol/servertextcontrol/onfootnotedeleted-method/llms-full.txt)
- [WPF.TextControl](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/llms-full.txt): [EntryAssembly](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/entryassembly-property/llms-full.txt), [FootnoteCreated](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/footnotecreated-event/llms-full.txt), [FootnoteDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/footnotedeleted-event/llms-full.txt), [FootnoteReferenceMarkEntered](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/footnotereferencemarkentered-event/llms-full.txt), [FootnoteReferenceMarkLeft](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/footnotereferencemarkleft-event/llms-full.txt), [Footnotes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/footnotes-property/llms-full.txt), [FootnoteSectionActivated](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/footnotesectionactivated-event/llms-full.txt), [FootnoteSectionDeactivated](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/footnotesectiondeactivated-event/llms-full.txt), [OnFootnoteCreated](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/onfootnotecreated-method/llms-full.txt), [OnFootnoteDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/onfootnotedeleted-method/llms-full.txt), [OnFootnoteReferenceMarkEntered](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/onfootnotereferencemarkentered-method/llms-full.txt), [OnFootnoteReferenceMarkLeft](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/onfootnotereferencemarkleft-method/llms-full.txt), [OnFootnoteSectionActivated](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/onfootnotesectionactivated-method/llms-full.txt), [OnFootnoteSectionDeactivated](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/onfootnotesectiondeactivated-method/llms-full.txt)

### Upgrade to Version 32.0

The update notes of version 32.0 list only the new SVG overload of `Page.GetImage`, which doesn't require code changes. Since Service Pack 2, .NET projects use the license file *txtextcontrol.wpf.license* instead of *licenses.licx*, and a class library or user control sets [TextControl.EntryAssembly](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/reference/txtextcontrol-wpf/textcontrol/entryassembly-property/llms-full.txt). [Breaking Changes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/upgrading/breaking-changes/#version-32-0) in the Upgrade Guide describes what to change, and [Upgrading from Previous Versions](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/installation/upgrading/previous-versions/llms-full.txt) has the steps.

### Next Steps

- [Version 33.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/3300/llms-full.txt): the features of the next version.
- [Version 31.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/3100/llms-full.txt): the features of the previous version.
- [Breaking Changes](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/breaking-changes/llms-full.txt): the changes that can require work when you upgrade.
- [TX Text Control 32.0 Has Been Released](https://www.textcontrol.com/blog/2023/09/13/tx-text-control-320-has-been-released/): the release announcement on the Text Control Blog.

---

## Nearby

- **Previous:** [What's New in TX Text Control .NET for WPF 33.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/3300/llms-full.txt)
- **Next:** [What's New in TX Text Control .NET for WPF 31.0](https://docs.textcontrol.com/tx-text-control-dotnet-wpf/whats-new/3100/llms-full.txt)
