We updated our WordFile functions to store the resulting word file into a container instead of a file with the new WordFile.WriteContainer function. You can substitute any text in the word file with WordFile.Substitute function or check whether some text is there with WordFile.Contains function.
In this release we add thread pooling for Windows. This highly benefits some functions using threads like e.g. CURL.PerformInBackground. We can reuse threads and lower the memory footprint.
If you have to read plist files on macOS, please check our new PList functions. We return content as JSON and also allow to write back those plist files.
Our SendMail functions got an upgrade to produce S/MIME signed emails with new SendMail.Sign function. For this we also added new PKey.ReadFromContainer function to read in private keys to sign.
For iOS we added SharingPanel functions to run the sharing dialog for sending text, files, pictures or URLs to other applications or services, e.g. AirDrop.
We got a new function Container.Screenshot to take snapshots for WebViewer controls. But this function can also be used for all other named controls on a layout to snapshot content like pictures of text fields.
For DynaPDF we got new functions to set printer settings via new DynaPDF.Print.SetSetting function. You can check whether an input PDF is a tagged one with the new DynaPDF.GetInIsTaggedPDF function.
For macOS you can now have the plugin prevent closing the database design dialog while relationship tab is selected. See SyntaxColoring.DontOpenManageDatabaseDialogWithRelations.SetEnabled function to enable it.
We improved errors printed into trace log, got new SQL.FieldExists and SystemInfo.isWindows11 functions, allow backslash for escaping paths in XML.GetPathValue function and added HEAD as verb for CURL.SetupAWS and CURL.SetupOAuth functions.
Finally we updated CURL library to version 7.78.0, DynaPDF to 18.104.22.168 and SQLAPI to 5.1.5.
See release notes for a complete list of changes.