Impressions from NDC London 2017
Blogged by Björn Meyer on Wednesday, January 18 2017
This week, we are exhibiting at the NDC London 2017 as partners - an event we are sponsoring since the beginning in 2013. The NDC conferences (Oslo, London, Sydney) became one of Europe`s largest conferences for .NET & Agile development.
We are giving demos of our latest TX Text Control release X14, our Web API ReportingCloud and are talking to many users from the UK and other countries. As always, it is a great experience to talk to so many enthusiastic developers.
Find below some impressions from our first day at NDC London 2017:
Meet Text Control at NDC London 2017: We're changing the way you look at reporting
Blogged by Björn Meyer on Tuesday, January 03 2017
From January 16-20, 2017, NDC is coming back to the ICC Suites ExCeL Arena in London. We have been supporting this fast growing event from the beginning as a partner and we are very proud to be part of it again this year.
The above rendered image of our booth design shows our new tagline for 2017:
We're changing the way you look at reporting.
Over the last 25 years, we engineered software components for developers. Instead of entering new markets, we focused on our core business: Reporting and word processing tools. We want to be the best in this particular field and keep our market leadership by inventing new technologies, products and services. And our success confirms that this is the right approach. Again, 2016 was a record year from all perspectives. We increased the number of users and licenses significantly and we are proud of every single customer.
In 2016, we had 2 product launches: ReportingCloud - the Web API to create reports in the cloud and version X14 of TX Text Control.
We are aiming high for 2017. We have game changing product and technology ideas we are working on. I obviously cannot say too much, but I can say that our new tagline will keep its promise.
In late 2016, we finished construction on a new headquarters office building that provides space for future expansion, open spaces for meetings and collaboration, but also privacy without interruptions and distractions for more focused work. This new building gives us the perfect environment for our current and future needs while we provide you, our customers, with innovated and high quality products.
NDC London is the start of the conference season in 2017 and we are already very excited to meet users from the UK, Scandinavia, Germany and many other countries. NDC is growing every year. Here are the numbers for this year: 141 speakers, 156 sessions and 20 workshops.
Stop by our booth and say hello. See you in London!
Printing labels with MS Word compatible templates and data sources
Blogged by Björn Meyer on Friday, December 16 2016
We just printed and signed our corporate holiday cards we are sending out to clients. Of course, we are using TX Text Control's MailMerge capabilities to print the labels for the envelopes.
TX Text Control's mail merge functionality is completely compatible to MS Word and you can not only use the Avery address label MS Word templates, but also the Access database files from MS Word.
As a data source, MailMerge supports JSON, structured IEnumerable objects, DataSets or DataTables. Using the new DataSourceManager, you can connect to any data source such ODBC and ADO.NET. If you are using MS Word for mail merge purposes, you typed in customer addresses into the New Address List dialog:
This address list is saved as a Microsoft Access Database file (*.mdb or *.accdb).
Using the pre-compiled demo TX Text Control Words - a reference implementation of TX Text Control - you can open this data source. TX Text Control Words uses the ready-to-use RibbonReportingTab class which implements the DataSourceManager that provides the UI workflow and the following dialog boxes. All of them can be used in your own application based on TX Text Control.
Select Data Source from the Select Data Source drop-down in the Reporting ribbon tab.
Choose Microsoft Access Database File and confirm with OK.
In the next dialog page, browse for the database file and confirm with OK.
Now find your specific label template and load it into TX Text Control Words.
The Avery label templates use tables to separate the labels:
In the next step, you can add the merge fields to the first label.
Select Office Address List as your Master Table and insert your required fields using the Insert Merge Field drop-down button:
After the last field, insert a Next field from the Insert Special Field drop-down button:
Copy the complete content of the first cell into the clipboard and duplicate it by pasting it into all other cells in the table:
Click on the Merge into Current Document menu item of the Finish & Merge drop-down button:
The data is merged into the template and you are ready to print the document directly onto your label sheets.
ReportingCloud: Reference implementation of TX Text Control X14 (24.0)
Blogged by Björn Meyer on Friday, December 09 2016
Text Control ReportingCloud brings the complete reporting functionality into the Cloud and makes it accessible for all platforms and programming languages using a highly available RESTful Web API.
The portal interface allows you to manage, upload, download and create templates and JSON data source excerpts. It implements the current version of TX Text Control .NET Server for ASP.NET and the included HTML5-based document editor TXTextControl.Web in it's ASP.NET MVC version.
The template editor within ReportingCloud is a kind of reference implementation of what's possible using this MVC control. This article gives an overview of key features of this implementation and how to implement them.
After a document has been selected from the list of available templates, you can choose a data source which is then loaded into the editor to fill the merge field drop-down lists.
In the Reports ribbon tab, the selected data source is used to provide the usable merge fields and merge blocks:
The following code shows the MVC HTML Helper of TX Text Control. It defines the service address (the rendering is calculated on different cloud servers) and the image file directory. Additionally, the JSON data source is loaded directly in the view using the LoadDataFromJson method. The template is loaded from a model property using the LoadText method:
The editor implements a dirty flag that determines whether the document needs to be saved or not. The file ribbon menu has been removed and a Save template button has been added to a bar at the top of the page. If the user is changing the document, the button get's enabled and the document can be saved:
The dirtyFlag will be changed on the new event textControlChanged and the save button will be enabled. On saving, the dirty flag will be set back to false.
If the user is clicking the Back button to get back to the template overview and the document has not been saved (dirty flag), a pop-up is displayed asking the user to save the document.
You can test this reference implementation by creating a free ReportingCloud account:
ReportingCloud: Conditional text blocks based on merge blocks
Blogged by Björn Meyer on Wednesday, November 02 2016
In several applications, it is required to render or to remove a complete text block in a template based on specific conditions. The following screenshot shows a template with a merge block (highlighted in red) that should be rendered, if the merge data contains data for this specific block with the name conditional:
Consider, we have the following classes as the data source in C# .NET:
The following code creates a new instance of the data class Report and an empty Conditional class. In the MergeSettings object, which is part of the ReportingCloud MergeBody, the RemoveEmptyBlocks property is set to true.
In case, the data for the merge block conditional is empty, the complete merge block gets removed, if RemoveEmptyBlocks is set to true. The following animation shows the result for both cases:
The logic that defines which block gets rendered or removed is not part of the template, but your data source and therefore, part of your application.
Impressions from DevIntersection 2016, Las Vegas - Roadmap for version X14
Blogged by Björn Meyer on Sunday, October 30 2016
We had a fantastic week at DevIntersection in Las Vegas, one of the largest Microsoft focused conferences in the United States. We presented features of the upcoming version X14 (24.0) and our Web API product ReportingCloud. Traditionally, we unveiled the roadmap for the new version and we are going to publish details of version X14 over the next couple of weeks until the release end of November.
Today, we would like to publish the list of major new features. I have to say that this version is one of the largest updates we ever published. We set a record for the number of new features and new API members.
Windows Forms Ribbon control
TX Text Control .NET for Windows Forms will be shipped with it's own Ribbon control and ready-to-use Ribbon tabs for all typical tasks of TX Text Control. Essentially, you can build our demo TX Text Control Words within seconds without writing a single line of code.
Out-of-the-box WPF Ribbon tabs
TX Text Control .NET for WPF is now shipped with a complete set of Ribbon tabs for all typical tasks of TX Text Control. These tabs are identical to the Windows Forms tabs and can be easily connected to Text Control without programming a single line of code.
A paragraph and paragraph frames can now be colored.
Zoom to whole page, zoom to text and zoom to page width are new out-of-the-box options when zooming in TX Text Control.
- Improved InputFormat class
Better exception handing
New exception classes have been introduced: TextEditorException, FilterException and LicenseLevelException.
- ASP.NET HTML5: Performance, auto-scrolling and drag and drop
- MailMerge: Performance, JSON data support, improved event handling
- ASP.NET HTML5: Load data from JSON and from a model (MVC)
The Selection object can be manipulated, document TextParts and SubTextParts can be retrieved and the ribbon bar received events and tab pages can be selected programmatically. Overall, the ASP.NET control received 24 new classes, 43 new properties, 29 new methods and 13 new events.
This is just a short-list of new features that are coming in version X14. Most features are available for all platforms (MailMerge, zooming, paragraph coloring, InputFormat and exceptions) and major improvements have been done in the Reporting Framework of TX Text Control which is also available for all platforms including Windows Forms, WPF and ASP.NET.
In the next weeks, we will present detailed information, screenshots and videos about these features. We target a release date of end of November this year.
Stay tuned and find below some impressions of our booth area at the DevIntersection in Las Vegas.
Web API Test Sandbox released on ReportingCloud Portal
Blogged by Björn Meyer on Friday, October 07 2016
We just released a Web API Test Sandbox at the ReportingCloud portal. This sandbox can be used to test Web API calls with your account data and your template storage (so not a completely isolated sandbox per definition) that doesn't count against your document quota.
The following screenshot shows the sandbox in action for the merge endpoint:
The overview page also lists some sample Web API calls and in the Web API Endpoint Reference, each endpoint description shows a button to launch the test sandbox for that endpoint:
ReportingCloud: New test parameter for document quota related endpoints
Blogged by Björn Meyer on Thursday, October 06 2016
This parameter allows you to test your templates and data packages without affecting the document quota of your account. The resulting documents contain a TEST MODE watermark and a specific document title.
The test mode can be defined using a simple request parameter in the HTTP method call:
To learn more about the parameters of these endpoints, please have a look at the Web API reference:Web API Endpoint Reference
ReportingCloud: The mergeData JSON object format explained
Blogged by Björn Meyer on Tuesday, October 04 2016
When merging templates with data, a JSON object contains merge data for all merge fields and merge blocks in the document. Using the language specific wrappers, the JSON object is created automatically and you don't need to know the exact expected JSON structure. For example, the .NET wrapper accepts an object as data which is then transformed to the required JSON data implicitly.
Consider the following .NET class:
In the MergeDocument method, the MergeBody object is simply passed as a parameter:
Internally, the wrapper is creating the expected JSON format of the complete MergeBody object:
The sample template, that gets copied into your template storage when creating a trial account, contains top level merge fields and a merge block that contains separate merge fields:
Top level merge fields are all fields in a template that are not part of a merge block. The complete template is repeated based on the number of records (array entries) in the merge data. Merge fields encapsulated in a merge block are repeated based on the number of merge block data rows in the JSON array. Additionally, merge blocks can be nested in unlimited levels. The following JSON data contains 1 top level record:
The data is part of an JSON array. The array contains 1 top level entry and this entry has two items in the merge block item. The following sample JSON structure contains 2 top level array entries that produces 2 resulting documents:
Creating dynamic HTML forms using ReportingCloud
Blogged by Björn Meyer on Wednesday, September 28 2016
Our Web API product ReportingCloud provides the reporting functionality of TX Text Control in an easy-to-use, platform independent REST web service. This sample shows how to use ReportingCloud to create dynamic HTML forms from MS Word compatible templates.
The following template consists of flat merge fields that should be merged with data entered in a web form.
This sample uses the .NET wrapper for ReportingCloud that encapsulates all HTTP requests and provides compatible .NET classes to manage templates and to merge documents.
In the controller code, a new ReportingCloud object is created and the template is uploaded to the ReportingCloud template storage. Using the GetTemplateInfo method, merge field and merge block information of a template can be retrieved. This TemplateInfo object is returned to the view:
In the view code, an HTML form element is created for each merge field in the template. The text of the field is used as the label text for each input element:
The following screenshot shows the HTML form with the dynamically created input form elements for each merge field.
In the controller Merge method, a Dictionary with the form data key pair values is created. This data is passed to the MergeDocument method as part of the MergeBody object. The MergeDocument method returns the created PDF document which is then returned to the browser:
The returned PDF document shows the resulting document with the populated merge fields:
With ReportingCloud, you can implement mail merge and reporting functionality into any application without installing any libraries on your servers or clients. Test this on your own and create a free trial account today.
Download the sample from GitHub and test it on your own.
Download and fork this sample on GitHub
We proudly host our sample code on github.com/textcontrol. Feel free to fork and contribute!
Requirements for this sample
- at least Visual Studio 2015
- At least a trial version of ReportingCloud and the ReportingCloud .NET wrapper
Read older blog entries