TX Text Control .NET for WPF

Breaking Changes

Topic

Upgrading a WPF project to TX Text Control 34.0 rarely touches your XAML or code-behind. What can need work is the project around it: the target framework of the NuGet package, the way the license reaches your assembly, a removed overload of the WPF barcode control and renamed files. Each change is listed with the version that made it and the change your project needs. Start at the section of the version you use today and work up to 34.0: read the entries of every version between yours and the target, since an upgrade from 32.0 to 34.0 includes the changes of 33.0. Some changes, such as the licensing of Service Pack 2 of 32.0, arrived between major versions; Service Packs lists what each service pack changed.

At a Glance

Your project usesCheck
33.0No code changes. Test your PDF output, which is now tagged, and PDF/A output, which is now PDF/A-3a.
32.0Move the project to .NET 8 or higher, replace calls of the removed TXBarcodeControl overloads and follow the new file names.
32.0 before Service Pack 2, on .NETReplace licenses.licx with the license file of the package, and set EntryAssembly in libraries.
29.0 or earlier, on the .NET FrameworkWrite the full assembly version into each licenses.licx entry.

Version 34.0

  • No changes to existing API. The update notes of version 34.0 name the AppendSettings enumeration without a description, and no other class, property, method or event. It isn't a change: AppendSettings and its values None, StartWithNewParagraph and StartWithNewSection have existed since the Append methods of TextControl were introduced in version 14.0.
  • The same target framework. The 34.0 package targets .NET 8, like the 33.0 package. A project that uses 33.0 keeps its target framework, and version 34.0 runs on .NET 10 without code changes.
  • Tagged PDF. PDF documents now contain a logical structure, with headings, paragraphs, tables, text frames and footnotes, stored separately from the visible content for assistive technologies. StreamType.AdobePDFA saves PDF/A-3a. If your application validates, compares or post-processes the PDF files it creates, test it with the new output. See PDF/A.
  • Descriptive texts. The new properties HypertextLink.DescriptiveText, DocumentLink.DescriptiveText, FormField.DescriptiveText, Table.DescriptiveText and FrameBase.DescriptiveText describe objects in accessible PDF files. Existing code doesn't need them.
  • The toolbox category. The toolbox items are unchanged, and their category is now TX Text Control 34.0.
  • The native library names. The native libraries of the package are named after the major version, tx34.dll and tx34_pdf.dll where 33.0 had tx33.dll and tx33_pdf.dll. Installers that list the files by hand have to follow.

Version 33.0

  • .NET 8 or higher. The 32.0 packages targeted .NET 5 and, from Service Pack 2, .NET 6. Since 33.0, TXTextControl.TextControl.WPF.SDK targets .NET 8. Change the target framework of a project on .NET 6 or .NET 7 to net8.0-windows or higher before you install the 33.0 or 34.0 package.
  • Barcode overloads removed. TXBarcodeControl.Load and TXBarcodeControl.Save of the namespace TXTextControl.WPF.Barcode lost both overloads that take a SerializationFormat. Call one of the remaining overloads: Load with a file name, a Stream, a TextReader or an XmlReader, and Save with a file name, a Stream, a TextWriter or an XmlWriter.
  • Renamed files. The package contains TXSVGResources.dll where the 32.0 package contained TXSVGGenerator.dll. Its native libraries tx33.dll, tx33_tls.dll and tx33_ic.dll take the place of txkernel.dll, txtools.dll and txic.dll of the 32.0 package. A project with a package reference needs no change; an installer or a script that lists the files does.

Version 32.0

  • The license file since Service Pack 2. .NET projects no longer use the license compiler and licenses.licx. The package TXTextControl.TextControl.WPF.SDK adds txtextcontrol.wpf.license, which the build embeds into your assembly. The update of the package removes licenses.licx; check that it is gone, and delete it if it isn't. Existing licenses keep working. .NET Framework projects keep licenses.licx as before. See Development Licenses.
  • Libraries since Service Pack 2. TX Text Control can run in a user control library or class library that is called from unlicensed assemblies. The library names itself as the assembly that holds the license with TextControl.EntryAssembly or ServerTextControl.EntryAssembly, as User Controls and Class Libraries shows.
  • SVG pages. New overloads of Page.GetImage return a page as SVG. Existing calls keep working.

Version 31.0

No change requires work. The version added support for .NET 5 and .NET 6, and for .NET 7, then a preview, with NuGet packages in the package source Text Control Offline Packages, and projects that reference the assemblies directly can move to these packages.

Version 30.0

Since version 30.0, the setup doesn't register the assemblies in the global assembly cache. In a .NET Framework project, every entry of licenses.licx has to name the full assembly version; without it, an older installed version of the assembly can be used and cause a licensing error. .NET Framework: licenses.licx shows such an entry. When the license is compiled with lc.exe, for example for a build server, each /i option names the full path of the assembly. See Build Servers.

LoadSettings.PDFImportSettings has been extended with new settings. Existing calls keep working.

Obsolete Members

A few members of the document engine and of mail merge still work in version 34.0 but are marked obsolete, among them ListFormat.CharAfterNumber and MailMerge.MergeBlocks. They don't block an upgrade; Deprecated APIs lists each of them with its replacement. No member of the TXTextControl.WPF namespace is obsolete.