# What's New in TX Text Control 19.0

> TX Text Control 19.0 (X9): MailMerge into barcodes and charts, canceled merges, even and odd headers and footers, restarted page numbers and content controls.

- **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 19.0
- **2957 words**
- **Web URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/1900/
- **LLMs URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/1900/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/1900/llms-full.txt

---

Barcodes became part of the document in TX Text Control 19.0, next to images, text frames and charts. The version also gave headers and footers separate content for even and odd pages, restarted page numbers per section, and let `MailMerge` fill barcodes and charts with data.

Version 19.0 was released in April 2013 as TX Text Control X9, together with the new TX Barcode .NET 2.0, as the blog article [TX Text Control X9 and TX Barcode .NET Have Been Released](https://www.textcontrol.com/blog/2013/04/24/tx-text-control-x9-and-tx-barcode-net-have-been-released/) announced. Its server products were TX Text Control Server for ASP.NET (incl. Windows Forms) and TX Text Control Server for ASP.NET (incl. WPF). Features of the Windows Forms and WPF controls, such as built-in context menus, permanent control characters, the anchor symbol and new dialog boxes, aren't listed here.

### Version 19.0 at a Glance

| Area | What is new |
|---|---|
| Headers and footers | Different headers and footers for even and odd pages |
| Barcodes | Barcode frames in the text, positioned like images |
| Page numbering | Restarted numbering per section, the total number of pages |
| MS Word content controls | Imported from DOCX as application fields |
| Mail merge | Merging into barcodes and charts, canceling a merge, new events |

### Headers and Footers

A document, or a single section, can have different headers and footers for even and odd pages. The methods [Add](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/headerfootercollection/add-method/llms-full.txt), [GetItem](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/headerfootercollection/getitem-method/llms-full.txt) and [Remove](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/headerfootercollection/remove-method/llms-full.txt) of [HeaderFooterCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/headerfootercollection/llms-full.txt) accept the [HeaderFooterType](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/headerfootertype/enumeration/llms-full.txt) values `EvenHeader` and `EvenFooter`. When an even header or footer exists, a header or footer of the type `Header` or `Footer` is the one of the odd pages; otherwise, it is used on all pages. See [Headers and Footers](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/headers-footers/llms-full.txt).

### Barcodes

Barcode controls of the type `TXTextControl.Barcode.TXBarcodeControl` can be inserted into a document:

- **Position.** A barcode is placed like an image or a text frame: as a character in the text, anchored to a paragraph or at a fixed position in the document. A [DataVisualization.BarcodeFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/llms-full.txt) positions it and is connected to the barcode control, which holds the appearance and the data.
- **Collection.** [ServerTextControl.Barcodes](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/barcodes-property/llms-full.txt) returns a [DataVisualization.BarcodeCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodecollection/llms-full.txt), which adds and removes barcodes. The events [BarcodeCreated](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/barcodecreated-event/llms-full.txt) and [BarcodeDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/barcodedeleted-event/llms-full.txt) report changes.
- **Formats.** The TX Text Control format and RTF save a barcode as a barcode, which is rebuilt when the document is loaded. Other formats save its image. On a system without the barcode controls, the image is inserted instead.

[Charts and Barcodes](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/charts-barcodes/llms-full.txt) shows how barcodes are used in the current version.

### Page Numbering

- **Restart the numbering.** [SectionFormat.RestartPageNumbering](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/sectionformat/restartpagenumbering-property/llms-full.txt) restarts the page numbers of a section instead of continuing those of the previous section.
- **Page number fields.** A [PageNumberField](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/llms-full.txt), a field in a header or footer, shows the page number with a [NumberFormat](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/numberformat-property/llms-full.txt) and a [StartNumber](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/startnumber-property/llms-full.txt), or, with [ShowNumberOfPages](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/shownumberofpages-property/llms-full.txt), the total number of pages.

### MS Word Content Controls

When a DOCX document is loaded, its MS Word content controls are converted to fields of the type [ApplicationField](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/applicationfield/llms-full.txt). [Version 21.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2100/llms-full.txt) added adapter classes for them; [Content Controls](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/content-controls/llms-full.txt) describes them today.

### Mail Merge

- **Barcodes.** [MailMerge](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/llms-full.txt) merges data into a `BarcodeFrame` whose name is the name of a table column, like a merge field. This also works in merge blocks. See [Barcodes](https://docs.textcontrol.com/tx-text-control-dotnet-server/mail-merge/barcodes/llms-full.txt).
- **Charts.** Data is merged into a [ChartFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/chartframe/llms-full.txt) outside of merge blocks through data relations, which have to be part of the `DataTable` passed to [Merge](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/merge-method/llms-full.txt).
- **Cancel a merge.** After each merged data row, setting [Cancel](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-datarowmergedeventargs/cancel-property/llms-full.txt) of the [DataRowMerged](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/datarowmerged-event/llms-full.txt) event stops the merge, which then throws a [MergeCanceledException](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mergecanceledexception/llms-full.txt).
- **Events.** [BarcodeMerged](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/barcodemerged-event/llms-full.txt) and [ChartMerged](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/chartmerged-event/llms-full.txt) occur after a barcode or a chart has been merged.
- **Block fields.** [GetBlockFieldNames](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/getblockfieldnames-method/llms-full.txt) returns the field names of a merge block, and [IncludeTextMergingEventArgs.IncludeTextField](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-includetextmergingeventargs/includetextfield-property/llms-full.txt) returns the INCLUDETEXT field that is being merged.

### Upgrade to Version 19.0

- **HeaderFooterType.** The methods of `HeaderFooterCollection` accept the new values `EvenHeader` and `EvenFooter`. Code that handles all values of [HeaderFooterType](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/headerfootertype/enumeration/llms-full.txt) has to handle these as well.

### New Classes, Properties, Methods and Events

The classes and members below are the ones that the What's New documentation of version 19.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. The version's own list also names the event `ShapeDeleted` of `Drawing.TXDrawingCore`, a class that the reference dates to version 33.0; it is left out here. The list also names `PageNumberField` as a new class, but `PageNumberFieldCollection` already took `PageNumberField` objects in version 13.0, so it isn't listed under New Classes.

#### New Classes

- [DataVisualization.BarcodeCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodecollection/llms-full.txt)
- [DataVisualization.BarcodeEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeeventargs/llms-full.txt)
- [DataVisualization.BarcodeFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/llms-full.txt)
- [DocumentServer.MailMerge.BarcodeMergedEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-barcodemergedeventargs/llms-full.txt)
- [DocumentServer.MailMerge.ChartMergedEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-chartmergedeventargs/llms-full.txt)
- [DocumentServer.MergeCanceledException](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mergecanceledexception/llms-full.txt)

#### Members by Class

| Class | Properties | Methods | Events |
|---|---|---|---|
| [DataVisualization.BarcodeCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodecollection/llms-full.txt) |  | [Add](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodecollection/add-method/llms-full.txt), [CopyTo](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodecollection/copyto-method/llms-full.txt), [GetItem](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodecollection/getitem-method/llms-full.txt), [Remove](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodecollection/remove-method/llms-full.txt) |  |
| [DataVisualization.BarcodeEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeeventargs/llms-full.txt) | [BarcodeFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeeventargs/barcodeframe-property/llms-full.txt) |  |  |
| [DataVisualization.BarcodeFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/llms-full.txt) | [Barcode](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/barcode-property/llms-full.txt), [ExportCompressionQuality](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/exportcompressionquality-property/llms-full.txt), [ExportFileName](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/exportfilename-property/llms-full.txt), [ExportFilterIndex](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/exportfilterindex-property/llms-full.txt), [ExportResolution](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/exportresolution-property/llms-full.txt), [SaveMode](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/savemode-property/llms-full.txt) | [AddUndoUnit](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/addundounit-method/llms-full.txt), [Refresh](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/barcodeframe/refresh-method/llms-full.txt) |  |
| [DocumentServer.MailMerge](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/llms-full.txt) |  | [GetBlockFieldNames](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/getblockfieldnames-method/llms-full.txt) | [BarcodeMerged](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/barcodemerged-event/llms-full.txt), [ChartMerged](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge/chartmerged-event/llms-full.txt) |
| [DocumentServer.MailMerge.BarcodeMergedEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-barcodemergedeventargs/llms-full.txt) | [BarcodeFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-barcodemergedeventargs/barcodeframe-property/llms-full.txt) |  |  |
| [DocumentServer.MailMerge.ChartMergedEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-chartmergedeventargs/llms-full.txt) | [ChartFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-chartmergedeventargs/chartframe-property/llms-full.txt) |  |  |
| [DocumentServer.MailMerge.DataRowMergedEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-datarowmergedeventargs/llms-full.txt) | [Cancel](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-datarowmergedeventargs/cancel-property/llms-full.txt) |  |  |
| [DocumentServer.MailMerge.IncludeTextMergingEventArgs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-includetextmergingeventargs/llms-full.txt) | [IncludeTextField](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-documentserver/mailmerge-includetextmergingeventargs/includetextfield-property/llms-full.txt) |  |  |
| [PageNumberField](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/llms-full.txt) | [NumberFormat](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/numberformat-property/llms-full.txt), [ShowNumberOfPages](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/shownumberofpages-property/llms-full.txt), [StartNumber](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/startnumber-property/llms-full.txt) | [PageNumberDialog](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/pagenumberfield/pagenumberdialog-method/llms-full.txt) |  |
| [SectionFormat](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/sectionformat/llms-full.txt) | [RestartPageNumbering](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/sectionformat/restartpagenumbering-property/llms-full.txt) |  |  |
| [ServerTextControl](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/llms-full.txt) | [Barcodes](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/barcodes-property/llms-full.txt) | [OnBarcodeCreated](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/onbarcodecreated-method/llms-full.txt), [OnBarcodeDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/onbarcodedeleted-method/llms-full.txt) | [BarcodeCreated](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/barcodecreated-event/llms-full.txt), [BarcodeDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/barcodedeleted-event/llms-full.txt) |

### Next Steps

- [Version 20.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2000/llms-full.txt): the features of the next version.
- [Version 18.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/1800/llms-full.txt): charts, z-order and the frame collection.
- [Barcodes](https://docs.textcontrol.com/tx-text-control-dotnet-server/mail-merge/barcodes/llms-full.txt): merge data into barcodes.

---

## Nearby

- **Previous:** [What's New in TX Text Control 20.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/2000/llms-full.txt)
- **Next:** [What's New in TX Text Control 18.0](https://docs.textcontrol.com/tx-text-control-dotnet-server/whats-new/older-versions/1800/llms-full.txt)
