# Fast-Report > Fast Reports creates components libraries and tools for generating reports and documents. ## English (EN) ### -15% Off Single Licenses for Independent Developers URL: https://www.fast-report.com/news/single-free-may-2026 Summary: Get 15% off Single licenses for FastReport .NET, FastReport VCL, and FastReport Desktop until May 22 Get 15% off Single licenses for FastReport .NET, FastReport VCL, and FastReport Desktop until May 22 Freelancers’ Day is a great occasion to celebrate individual developers. From May 18 to May 22 , get 15% off Single licenses for: — FastReport .NET — FastReport VCL — FastReport Desktop If you work independently, manage projects, build products, and solve complex challenges every day on your own, this offer is for you. FastReport itself once started as a tool created by an independent developer. And today, we continue to support those who move the industry forward with their ideas, expertise, and code. Get your license with a discount before May 22! ### .NET 6.0 update URL: https://www.fast-report.com/blogs/update-dotnet6 Summary: We are reviewing new opportunities .NET 6.0, which are already supported by FastReport products, namely utilities, json, http/3 and much more. We are reviewing new opportunities .NET 6.0, which are already supported by FastReport products, namely utilities, json, http/3 and much more. We are reviewing new opportunities .NET 6.0, which are already supported by FastReport products, namely utilities, json, http/3 and much more. It looks like that lockdown was not hard for Microsoft. This year, the Plenty’s Horn opened and we had a shower with new software products — the long-awaited Windows 11, and the new Visual Studio 22, and, of course, .NET 6.0. This is good news in these bad times. Let's talk about the new product, which is the most interesting for developers — .NET 6.0. Hardly developers ported their projects to NET 5.0 when a new version was released. I will go forward to tell the obvious truth that version 6 is not something fundamentally new - it is the “finished-off” fifth version. Most changes include modified or revised solutions from last year's release, but the sixth version received LTS (Long Time Support) status — it became a version with long-term support. From now on, this will be the case for all even versions. As you remember, starting with .NET 5.0 Microsoft decided to merge all its frameworks into one. This was done to get rid of the "heterogeneity". That is, we came to the original concept of the .NET Framework, but now it is not a monolith, but looks like this. There are a lot of changes and additions in NET 6.0. To make this article more than just a tedious treatise, I will briefly review the main, most interesting ones: 1. Crossgen2 - Pre-compilation The updated Crossgen utility now had a second version. The old pre-compilation technology was, let’s have it straight, imperfect, and only enabled generating native code for the platform where the old crossgen utility was running. Now it enables running the JIT compiler regardless of the platform using different strategies and optimizations depending on the situation.   2. Profile-Guided Optimization (PGO) It is a compiler optimization to prioritize the compilation of application parts. The point is that not all parts of the program are used during execution or are used extremely rarely. For example, some exotic else if branches. We can improve application performance if we point to frequently executed areas. Now you can turn on the analyzer, which, during the execution, will determine frequently and rarely used areas, and also generate an optimization profile. There are three optimization scenarios: Static – the code is split into frequently and rarely executed (hot-cold splitting). In this case, the optimization profile is generated only once . If the operating conditions of the application change, you will have to generate it again and re-optimize it. This approach complies with the most frequently executed areas of the application and places them together in the executable file. This will load it very quickly, thanks to the cache. Very rarely executed code is not compiled. If necessary, it will be compiled during the execution of the application. A dynamic approach where no preliminary optimization profile is generated . The analyzer monitors the execution of the application during real operation and recompiles sections of the code if the optimization is required. The mixed approach speaks for itself. Here both approaches are used. That is, the application is optimized according to the optimization profile. It is then adjusted during operation according to a dynamic scheme. 3. Hot reload You will be especially happy with this feature. Finally, debugging applications got really simple! Now you can start debugging once and edit the code in real time. You will understand how this works if you have ever debugged javascript in your .NET Core projects. You probably remember something like "Edit and Continue". We had the opportunity to change the code at runtime, but it was not very convenient. You had to set breakpoints and pause the application. The breakpoint had to be set before the moment to be debugged. Edit possibilities were also very limited. https://docs.microsoft.com/en-us/visualstudio/debugger/supported-code-changes-csharp?view=vs-2019 Now we can fix the code right at runtime while debugging. Then save the changes and see them in real time. This greatly speeds up the debugging process, especially if you know what and where to fix and want to see the result immediately without restarting the debugger. And yes, it now works in VS Code as well. The list of available changes is short and is available here . 4. .NET MAUI As part of globalization or combining all the frameworks, Microsoft is adding support for Xamarin. Now we have developments for macOS, iOS, and Android in VisualStudio. However, this will not work in the standard SDK. You will need to install the optional Optional SDK Workloads. In fact, development is becoming more and more convenient. Creating a project on Android is a matter of a team: ``` dotnet new android ``` They decided to abandon the name Xamarin and now presented the Multi-platform App UI or MAUI. 5. Minimal API Framework It is worth talking about an interesting tool Minimal API. This framework enables to make do with minimal code for creating and accessing web methods. You don't need to create the MVC binding, customize the controller and method headers to build up the routing. Moreover, you won’t need Setup.cs either. All you need is Program.cs where you can immediately develop web methods with routing.  ``` app.MapGet("/", (Func)(() => "Hello World!"));                                                              ``` The unnamed function will return "Hello World!" for any query. This is exactly what is needed for microservices or prototyping. 6. Supported operating systems Microsoft has published a list of all supported operating systems, namely: Windows — Windows Client, Windows 10 Client, Windows 11, Windows Server, Windows Server Core, Nano Server; MacOS; Linux  — Alpine Linux, CentOS, Debian, Fedora, openSUSE, Red Hat Enterprise Linux, SUSE Enterprise Linux (SLES), Ubuntu; Mobile — Android and iOS. 7. ARM64 architecture support ARM64 support was implemented in NET 5 for Windows. In the sixth version, it was expanded to the ARM64 Apple processors. 8. Blazor desktop app support While Blazor is a framework for web-based applications, Microsoft decided to break the mold and enable developing desktop applications. Blazor has probably proven its worth. 9. MSBuild optimization Razor compiler was merged to Roslyn Source Generators, which significantly accelerated the build. Roslyn Source Generators was introduced in NET 5 and made a stir with its possibility to generate C # code on the fly while developing. 10. LINQ                                           Developers also worked on our favorite LINQ. With every .NET release, they add something new to this language (especially in .NET 5) and this release was no exception. LINQ has been made faster over the past few years and the code duplication was reduced. Here is a small list of useful features: The TryGetNonEnumeratedCount function enables to determine the count of items in a sequence without enumerating them, thereby significantly speeding up the application in some cases; The Chunk function splits the items of the sequence into a specified number of groups; The MaxBy and MinBy functions allow you to find the maximum or minimum element for a given key selector; The DistinctBy, ExceptBy, IntersectBy, and UnionBy functions also allow you to perform actions according to a key selector; The ElementAt and ElementAtOrDefault functions return the element from a specific index with the difference of returning a default value; The FirstOrDefault function finally can set a default value. “Your prayers have been answered”, because not everyone was happy with null; The Max function now can accept a comparator to compare values; The Take function enables to set a range. 11. JSON  Well, how we could forget modifications to the System.Text.JSON library. The main changes were made to the serializer. Namely: Avoiding circular references;An object IAsyncEnumerable was added, which turns into an array; Deserialization of an array document, where the DeserializeAsyncEnumerable method appeared. Support for source generators - a technology of serialization without reflection, which significantly speeds up and reduces the cost of the application; New interfaces IJsonOnDeserialized, IJsonOnDeserializing, IJsonOnSerialized, IjsonOnSerializing were added, which contain event handlers of the same name. That is, you can execute any code during serialization/deserialization; You can set the order of field serialization using the JsonPropertyOrder attribute; Deserialization from a stream; Another very interesting "feature" is the support for working with JSON documents as with DOM. This feature is quite useful because sometimes you just don't want to spawn POCO objects for simple operations. Do not forget that the DOM approach to work with JSON reduces performance and overuses resources. We are assured that this will not happen, but we will find out in practice how true this is. 12. HTTP/3 The HTTP communications protocol has been around for ages. Everyone knows that it is based on another protocol, TCP, which has been around for even longer. Yes, the rapid development of the Internet has put http in a difficult position - it looks like a weak link against the growth of network bandwidth. Finally, we got the third version of this wonderful protocol. It did not eliminate the problems but significantly reduced their degree. The new QUIC protocol, which replaced TCP, is faster if packages are lost. It is faster during the connection setup. It allows for parallel data transmission. Moreover, it is inherently secure thanks to encrypted queries. 13. Priority queue A new class has appeared — PriorityQueue . It allows you to set the priority on each added item and creates a priority queue. These items are removed starting with the lowest priority. 14. Date/Time Developers also worked with the date. Some of the most interesting modifications: There are two new methods System.DateOnly and System.TimeOnly, which allow you to work directly with a date or time, and not DateTime as before. Conversion of time zones. That is, you can now use the Windows or IANA identifier when determining a zone using the TimeZoneInfo.FindSystemTimeZoneById method. If the search does not find the identifier of a zone of one type, then the time is automatically converted to a different format according to the second type of identifier. 15.  C# 10 support We can write a separate article about the new features of version 10. I will not even mention the most interesting here. You can check out this list of changes . Let's sum up - what does .NET 6 offer: Performance. Indeed, the .NET 6 platform is very fast with various optimization features, especially when it comes to the web part. Versatility. It is one platform for creating any application for different platforms. Many were positive about this idea. The learning curve became lower and it is convenient. However, there are also enough skeptics. We all know that the versatile is usually worse than something special. Of course, we tested our products for compatibility with the new framework. FastReport operates on .NET 6 just as well as on version 5. We can say that there is a right vector to consolidate platforms, languages, and technologies. Yes, the younger generation has the fewer technical knowledge, but we no longer need them. Just like an automatic gearbox displaces a mechanical one. People just should drive and not think about gears and engine rpm. Like many modern developers do not want to get into the technical buzzwords of certain processes. Now they can enjoy the creative aspect of software development. Tags: .NET, MacOS, C#, JSON, Blazor, .NET, MacOS, C#, JSON, Blazor ### 15% Discount on FastReport .NET Avalonia and FastReport VCL Reporting Lazarus URL: https://www.fast-report.com/news/sale-15-avalonia-lazarus Summary: Until May 31, take advantage of our limited-time offer — 15% off FastReport .NET Avalonia and FastReport VCL Reporting Lazarus! Until May 31, take advantage of our limited-time offer — 15% off FastReport .NET Avalonia and FastReport VCL Reporting Lazarus! Until May 31, take advantage of our limited-time offer — 15% off FastReport .NET Avalonia and FastReport VCL Reporting Lazarus! If you need a powerful reporting tool with Windows, Linux, and macOS support, this is your chance to deploy a reliable solution at a great price. FastReport .NET Avalonia  is a versatile component for generating reports in cross-platform applications built with Avalonia UI. Reporting Lazarus is an LCL component suite with full source code for generating reports and documents in Lazarus on Linux and Windows. What you get: Cross-platform reports: create reports on Windows, macOS, and Linux simultaneously  Export to PDF, Excel, HTML, RTF, and more Visual report designer Interactive tables, charts, and filters Database connectivity and custom data sources This offer applies only to new purchases and is valid from May 13 through May 31 , inclusive. Don’t miss your chance to secure your license at the best price! ### 20% discount on FastReport VCL URL: https://www.fast-report.com/news/fastreport-vcl-discount Summary: 20% discount on Professional and Enterprise editions of the FastReport VCL report generator. 20% discount on Professional and Enterprise editions of the FastReport VCL report generator. 20% discount on Professional and Enterprise editions of the FastReport VCL report generator. From August 15 to September 15 get the powerful Delphi report generator FastReport VCL of Professional and Enterprise editions almost at the price of the Standard. However, unlike the Standard Edition, you will also get: ✓ Visual SQL builder ✓ Source Code ✓ Lazarus support ✓ Linux support and much more. This is a great opportunity to save money while getting much broader functionality. Compare editions and choose the most suitable one here. To take advantage of the offer, click on the following link. ### 25 years of product history of our company URL: https://www.fast-report.com/news/birthday-fastreport-2023 Summary: Be our guest and enjoy the birthday celebration of FastReport 2023. Be our guest and enjoy the birthday celebration of FastReport 2023. We turned 25 in August! Thank you for being with us all these years and for helping make our products better and more powerful! ### 5 functions for working with reports in FastReport Online Designer URL: https://www.fast-report.com/blogs/functions-online-designer Summary: There have been some updates in FastReport Online Designer, which improve usability and simplify report creation. There have been some updates in FastReport Online Designer, which improve usability and simplify report creation. There have been some updates in FastReport Online Designer, which improve usability and simplify report creation. The time for Fast Reports products is not standing still. Every month we add new functions and objects and improve and optimize the current code. There have been some updates in FastReport Online Designer, which improve usability and simplify report creation. Here is their list: Autosave; Selection of several objects in the report tree and table cells; Setting favorite properties for objects; You can change property values for multiple selected objects; The settings of FastReport Online Designer Builder are now saved when you specify a new configuration. Now you don't need to set values all over again. Autosave Now you can enable Autosave in FastReport Online Designer. This can be done in two ways. 1. To enable Autosave in the already built FastReport Online Designer. 2. To set the corresponding option in FastReport Online Designer Builder. Let's take a closer look at these two methods. Autosave in the already built FastReport Online Designer To enable Autosave, set the Autosave option to true in the build.json file, which is located in the directory with the built-up designer. Autosave in FastReport Online Designer Builder You can also enable Autosave in the designer builder. This option is located in the "Settings" tab. Selecting multiple objects in the report tree and table cells We have added the ability to select multiple items in the report tree by holding Shift or Ctrl. This also works with table cells. Favorite Properties for Objects We have added the ability to mark an object property as a Favorite. Now you do not need to search a frequently changed property each time. To add a property to "Favorites", right-click on it and select "Add to Favorites" in the context menu. Changing property values for multiple selected objects Now you can change property values for several objects at the same time: Saving settings for FastReport Online Designer Builder Previously, FastReport Online Designer Builder did not remember the selected options, and you had to set all the options again each time with a new configuration. Now it remembers the values. The FastReport Online Designer development team is committed to improving the user experience. In the future, FastReport Online Designer will offer even more useful features that simplify report creation. We are always open to feedback from you. Contact our support ! Tags: FastReport, Online Designer ### 50% off FastReport Single license renewal — only until April 30! URL: https://www.fast-report.com/news/single-april-2025 Summary: Great news for owners of FastReport VCL and FastReport .NET Single licenses! Until April 30, you can renew your license with an impressive 50% discount. Great news for owners of FastReport VCL and FastReport .NET Single licenses! Until April 30, you can renew your license with an impressive 50% discount. Great news for owners of FastReport VCL and FastReport .NET Single licenses! Until April 30 , you can renew your license with an impressive 50% discount. It’s a perfect opportunity to regain access to the latest updates, improvements, and technical support. Plus, you’ll save a significant amount — starting from $200 ! Why it matters: Back on track — keep using FastReport at full efficiency; Risk-free — renewal ensures correct operation and stability; Maximum value — stay up to date with all the new features and enhancements. Don’t put it off — this special offer is only available for a few weeks! Contact us at sales@fast-report.com to take advantage of it. ### A closer look at FastReport Cloud - cloud reporting URL: https://www.fast-report.com/blogs/closer-look-cloud-reporting Summary: A small overview of the new FastReport Cloud product, which is a cross-platform solution and does not require installation on your device. A small overview of the new FastReport Cloud product, which is a cross-platform solution and does not require installation on your device. A small overview of the new FastReport Cloud product, which is a cross-platform solution and does not require installation on your device. FastReport Cloud is a set of tools for building documents. The service allows making reports and documents based on preconceived templates kept in a cloud. The story behind FastReport Cloud FastReport Cloud is based on FastReport .NET library, released in March 2009 and being developed until today. A shift to the cloud is the most logical way of development for the company products. First, it provides users with full cross-platform software and simplifies the introduction process. Now you do not need to install anything, just enter a login and a password. Reports in our life Any business accumulates and stores data in some form. It could be a database or a simple file on a hard disc. As a rule, such a type is convenient to store but not to present, obtain the important information, or make decisions by users. Our tools, solutions and libraries allow making data informative. These may be documents or tables – structured in the way that is necessary and convenient for the users to solve their specific tasks. Works directly in a browser FastReport Cloud allows creating and setting templates, connecting to them data from remote sources, and exporting into various formats directly in a browser. All these files are stored in a cloud; thus, you only need access to the Internet for your work. Documents building, which may appear rather demanding for large volumes of data, is also transferred to the cloud. This allows redirecting resources (both computational and human) to higher priority tasks. The result of such building can be accessed from any place. Online Designer An online designer is built in FastReport Cloud. It allows users to: Change properties of all report objects, add news and remove old ones. Configure bands. Connect to the report data sources from a subscription or create new ones (the currently supported ones are JSON, CSV, XML, MS SQL, PostgreSQL, MySQL, and Oracle DB). Edit template scripts. Use preview. The online designer supports various objects, among which: Text. Table. Image. Bar code (both string and two-dimensional). Matrix. Digital signature. Scale. RichText (text with broader formatting opportunities). Check boxes. Geometric shapes. Nested report (nestedness is not limited: a nested report may have its own nested report, and so on). Simple introduction to the user applications We have created tools (SDK) to work with our API for many programming languages, including C#, Java, JavaScript, Python, Golang, Haskell, and C++. This will simplify FastReport Cloud operating from user applications. All the feature set of our API is used directly from the code regardless of a platform or an operational system. You may see the examples of using the SDK  here . Team work Cloud storing and flexible setting of rights allow sharing the created documents with all members of your organization. Additionally, you may set the rights so that only a certain group of individuals had an access to confidential data. The rights are attributed to groups of users and are grouped by type. Each separate right gives an access to a certain action. At the same time, a creator or an owner of a file is also a group, although consisting of just one person. For all new files, default rights are applied. You can set them too, as you wish. If you need to make an exception, an authorized user may set their own distribution of rights which will rewrite the default rights. Planning and storing documents All documents in FastReport Cloud are stored in folders. By default, every subscription has three root folders for each document type. When browsing catalogs with documents, one may sort and search. Having selected a file or a folder, the user may relocate or copy their data, even into a folder of another subscription, if the user has the relevant rights. The user interface allows working with several files at a time, without repeating the same actions for every document. Safety The automation service supports a two-factor authentication via Microsoft Authenticator or Google Authenticator. We strongly recommend switching on a two-factor authentication , so that attackers had no access to your resources even if they know the data for entering under your account.  Using a Cloud for business solutions Give a couple of examples: A customer has a web-application which returns data in JSON format on request. This information will be further used in various PDF documents. To solve this task, it is sufficient to create a data source, indicate the http address at which that JSON can be found, and connect the data source to the template. From that moment on, a PDF document with actual data can be made in one click. Another case describes creating a price list with scheduled daily uploading. First create a template in the designer and a data source is indicated. Then we set uploading to FTP at a certain time of the day with our planner. Additionally, we set sending the ready data via e-mail. Conclusion Transition to a cloud provides the company products with full cross-platform software and gives an opportunity to work from any spot on the Earth. The most important thing is that you do not have to install anything. The entry threshold for new users became much lower, while the flexibility of use scenarios increased. Tags: FastReport, Cloud ### A new version of FastReport Cloud 2024.1 released URL: https://www.fast-report.com/news/fastreport-cloud-2024.1 Summary: From this version were added: integration with ClickHouse, preview from WASM, a new notification service, mass deletion of files. From this version were added: integration with ClickHouse, preview from WASM, a new notification service, mass deletion of files. With this version, the cloud service for document generation and storage has introduced the following features: integration with ClickHouse, interactive preview from WASM, a new notification service, bulk file deletion, email notifications, and much more. Integration with ClickHouse We have added connection to the ClickHouse columnar database. Go to the "Data" panel and click on the "+" button. You will see a menu for selecting available sources. Read more in the article. Notification service FastReport Cloud has added the ability to receive notifications about various events: successful document exports, file creation or deletion, and others. You can configure the display of notifications on the Profile Settings page. The simple version will look like this: It will look different in the expanded format: Bulk file deletion  Our team has optimized the application. Now, instead of requests to delete each file from the recycle bin, you can create 1 single request. So the bin can be emptied several times faster. Folder properties page We have improved information about already created folders. Now there is a properties page with a description of the creator and owner of the folder and the size and location of the folder in the workspace. Folder size calculation Added an API that calculates how much space a folder's contents take up (relevant for templates, reports, and exports). You can see its size on the folder properties page. The size after downloading the folder is shown in brackets. Interactive preview Added a beta microservice for viewing reports in a browser based on WASM technology. Unlike the current static preview, it can work with interactive objects: maps and drop-down lists. To use it, you need to replace the word staticpreview with wasmpreview in the browser line  (/staticpreview/t/6235f34d935bef40aa09e8c3 -> /wasmpreview/t/6235f34d935bef40aa09e8c3). Apikey in staticpreview Added the ability to use apikey in staticpreview. This way you can give preview access only to users with this key. The key is sent as follows: ``` https://fastreport.cloud/staticpreview/t/6235f34d935bef40aa09e8c3?apikey={your key} ``` New task page design The Task system has been significantly redesigned. The user interface has become more ergonomic and intuitive for users. Mailings by email A page for setting up mailings has been added. Now you can send letters with templates, reports, and exports. You can also set up a newsletter once and reuse it for other tasks. New breadcrumbs Breadcrumbs on file and folder pages have been replaced with a more compact version. Downloading folders We have added the ability to download groups of files and folders. To do this, select the “Download” item in the context menu. When you select folders or several files, a common archive will be created and download will start automatically. New online designer The online report designer has been updated to the latest version. You can find more about the designer changes on the product page. Storage of VCL templates With the release of 2024.1, we added storage of VCL templates. Now you can save .fp3 and .fr3 files in the cloud, and then use them in future projects. Full list of changes: --- ### [Backend] + added Tahoma font to worker; + added API, which will create a folder with the specified name if it does not exist when requested; + added serialization for the transport property of export tasks; + added a cache for previews; + added localization for checking scripts; + added a parser for ReportInfo VCL templates; + added a connection to the ClickHouse database; + added a validation method for transports and exports; + added a way to receive notifications from audit; + added bulk file deletion; + added an API for calculating how much space a folder takes up; + added checking and solving the problem when files did not have GridFS chunks; + added missing "Access Denied" logs for tasks; * updated installation script; * updated behavior when copies of files will no longer be created with the same rights as the original; * localized FastReport .NET errors; *updated the FastReport package to the version with SkiaSharp; *refactored task updating; *improved updating of transports for transfer tasks; *improved task updating logic, now the process occurs in the View Model; * renamed TaskUpdateType to EnumerablePatchType; *merged some similar retrieval methods, removed unnecessary code, adjusted naming; *improved GET request for one folder, now the calculated size of its contents will be returned; * refactored View Models; * converted subscription and entity identifiers in ObjectId audits; *removed the Count field from audits due to performance problems; *improved query for statistics on audits; *added a new configuration file for the online designer; * moved all View Models to another directory; - adjusted records when creating audit; - fixed rights check for groups with null rights; - fixed error message display in online design; - fixed connection checking when creating or editing a data source; - fixed a bug with redundant auditing when exporting; - fixed the creation of loggers with incorrect contexts; - fixed a bug where an incorrect date value in creating or updating a subscription resulted in a 500 error; - fixed a bug when the “.preview” folder was created for each preview; - fixed numerous serialization problems; - fixed a lack of traceId in the backend logs; - fixed a naming error for SDK generation; - fixed a bug when the report parameters broke the export; - fixed duplication of file names during exports; - fixed an error in the win1251 encoding in a FireBird connection; - fixed UpdateTaskTest; - fixed transports in transformer tasks; - fixed serialization of tasks and audits; - fixed a bug with report dialogs when building; - fixed missing associated audits; - fixed the type of the returned View Model in InternalDesignerController; - fixed the preparation of the AMP tag for reading in XML; - fixed the error displaying line breaks and spaces in the designer; - fixed the returned View Model when exporting folders; - fixed the error when the messageId of the export could be null; ### [Frontend] + added icons for data sources; + added a preview button to the file properties page; + added support for mixins in the online designer; + added sorting by users page; + added creation time on the users page; + added a message showing that the folder was successfully exported; + added a workspace identifier to the file information pages in the admin panel; + added localization for the headers of the file and folder selection dialogs; + added the TemplateId field to the export page in the admin panel; + added a beta microservice for viewing reports in a browser using WASM technology; + added the Deleted field to file pages in the admin panel; + added redirection to the logout page from the authentication server after exiting the application; + added a properties page for folders; + added a new switch for deleted files in the admin panel; + added the opportunity to go to the selected workspace from the user card; + added new icons in the online designer; + added search on the data sources page in the admin panel; + added the ability to use API Key in staticpreview; + added loading indicators for pages in the admin panel; + added sorting on the data sources page in the admin panel; + added blocking of the download button after clicking on it; + added an error message if updating the data source failed; + added behavior when the file pages of the admin panel the pressed ToBin button will change to Restore and vice versa; + added red coloring of the expiration date when the API key has already expired; *localized the inscription “just now” and other text in pop-up messages; *updated Blazor components, now they have unique html classes for future tests; * the history of file properties is hidden if the history is empty or there are insufficient rights to view it; * updated information about limits on the “about the workspace” page, implemented more accurate rounding of numbers; * enabled cutting of WASM technology; *updated Blazorise in the admin panel, fixed the page for creating a subscription plan; *replaced custom checkboxes with a variation from Blazorise on the page for editing a subscription plan in the admin panel; * changed the behavior for deleting on the file page; *changed the design of the task page; *changed the add parameter button in tasks; *refactored the admin panel; *breadcrumbs on the pages of files and folders were replaced with a more compact version; * improved redirect to a special page when the subscription has expired; - fixed text alignment on service pages; - fixed a bug when the delete dialog was displayed without selected files; - fixed a bug when you could not delete a file if a file with no rights to delete was deleted along with it; - fixed a bug when several data sources were created while checking the status of the source; - fixed a redirect when logging into the service; - fixed non-aligned subscription cards in the admin panel; - fixed a bug where it was impossible to move or copy a file to another subscription via the frontend; - fixed a bug when searching in audits resulted in a 404 error; - fixed a 404 error when switching workspace on file pages in the admin panel; - fixed the window headers of the selection dialogs; - fixed the dialog for selecting the export type in tasks; - fixed the behavior of the middle mouse button, now clicking on the admin side panel opens new tabs; - fixed the bug with displaying the template identifier on the export pages; - fixed a bug in the new dotent SDK, fixed the layout of the export loading screen; - fixed frontend errors when connecting to ClickHouse; - fixed non-aligned data display on the pages of files and data sources; - fixed invisible calendar in audits; - fixed a bug when the value from the URL did not appear in the search bar on the workspaces page in the admin panel; - fixed checkboxes on the plan update page in the admin panel; - fixed the position of the control panel in the preview; - fixed dashboard graphics (double graphs, missing colors, broken URL parameter); - fixed initialization of dashboards; - fixed a bug when long text broke the header of the selection dialogs; ### [Demos] - fixed a bug when editing group rights; - fixed Java SDK and demo; ### [Common] + added HomePageLink to the configuration file; + added automatic update of the online designer; + added Old and New Value fields to the "Audit Details" page; + added storage of VCL templates; + added a scanner for critical API changes at the build stage; + added generation of documentation in PDF format; + added a new documentation chapter; + added documentation “How to update transports in transformer tasks and email addresses in email tasks"; + added storage of .fp3 files; + added preview service in JS; + added error messages for data sources; + added the link to renew subscription; + added downloading of folders; + added the current year in the license for the SDK; + added a button by which you can go to audits from the workspace; + added a test that checks the avoidance of folder name collisions; + added configs for data sources containing a timeout setting; + added cancellation tokens in the user panel for methods that access the API; + added cancellation tokens for methods that interact with the API; + added setting preview rights to the file properties page; + added links to objects in audits; + added a redirect to the home page when you click on the logo in the header; + added the ability to sort subscriptions by CreatedTime and SubscriptionPeriodVM.StartTime, SubscriptionPeriodVM.EndTime, Name, Locale, Plan in forward and reverse order; + added trimming of folder names; *moved file uploading (documentation, installation files) to a new server; *updated the project to .NET 6.0; *updated the version of the Open API Tool; *updated the search bar on the file pages in the admin panel; *updated cake scripts to version .NET 6.0; *removed the onclick event, which reloads the page *updated version of FastReport .NET to 2023.2 - fixed display of TraceId in logs; - fixed “Old” and “New value” fields in audits of file actions; - fixed the assembly of the wasm-preview microservice; - fixed a bug when the online designer could not load; - fixed the version of the preview library in WASM; - fixed errors in checking rights in data sources and Tasks; - fixed an empty search field when there was an existing parameter in the URL for the user's section in the admin panel; - fixed the error of the wrong report export root; - fixed changing the standard subscription to the current one when changing workspaces; - fixed redundant paginator pages provided that the search is used on the workspaces page of the admin panel; - fixed image archiving when exporting a report to image format without the “create separate files for each page” setting enabled; - fixed incorrect positioning of the context menu when trying to open it in a small window; - fixed console errors when pressing buttons that have JSRuntime in their logic and errors about null references when pressing the "Properties" button of the context menu; - fixed non-working breadcrumbs in audits. ### About Fast Reports URL: https://www.fast-report.com/about-company Summary: Fast Reports has been creating libraries and tools for generating reports and documents from databases since 1998. Fast Reports has been creating libraries and tools for generating reports and documents from databases since 1998. Fast Reports has been creating libraries and tools for generating reports and documents from databases since 1998. Fast Reports components are the basis of hundreds of thousands of programs in different programming languages and for different platforms: .NET Core, RAD Studio, Visual Studio, Lazarus, Mono, and others. Products are localized into 32 languages for users around the world, including those from the Fortune 500 list. Our awards: Customer opinions: Trustpilot Our contacts: Phone:  800-985-8986 (English, US) Phone:  +3197010258466 (English, Europe)  Phone:  +49 30 56837-3928 (German) Phone:  +55 19 98147-8148 (Portuguese) Mail:  info@fast-report.com Address: 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314 ### Add-on component in FastReport Ultimate .NET URL: https://www.fast-report.com/news/wpf-ultimate-net Summary: Subscription to the .NET Ultimate Edition gets even better! The edition now includes a reporting and document creation library for WPF. Subscription to the .NET Ultimate Edition gets even better! The edition now includes a reporting and document creation library for WPF. Subscription to the .NET Ultimate Edition gets even better! The edition now includes a new high-performance reporting and document library for Windows Presentation Foundation (WPF). Moreover, the price remained the same. FastReport Ultimate .NET contains products for projects integration developed using the ASP.NET, .NET Core, Blazor, WASM, WPF, WinForms, Mono platforms. Desktop and online designer is also included for comfortable work on any device. FastReport generators allow you to create different types of documents with many components for data visualisation and analytics, display options and export formats. Owners of an active Ultimate subscription can test FastReport WPF for free at their client panel . ### Adding New Users to FastReport Cloud URL: https://www.fast-report.com/blogs/new-users-cloud Summary: In the Business edition of the FastReport Cloud service, you can add users to a single workspace for simultaneous collaboration. In the Business edition of the FastReport Cloud service, you can add users to a single workspace for simultaneous collaboration. In the Business edition of the FastReport Cloud service, you can add users to a single workspace. This allows multiple people to collaborate on reports or edit templates. In the Business edition of our cloud service for working with reports, FastReport Cloud , there is an option to add users to the same workspace. This means that multiple individuals can prepare reports from a single large list of previously added templates. Additionally, several people working on report templates can quickly and conveniently add them to a space where those reports can be prepared by another group of users who do not have editing permissions for the templates. To begin, let’s add a new user to the workspace. When a new user first opens FastReport Cloud, they will see the following screen:   Each user must have an account on our authentication service, FastReport ID . After successful registration and logging into FastReport Cloud, the user will see the following message: At this stage, we go back to the account that purchased the license for FastReport Cloud. In the “Users” tab, you will see a list of users that have already been added, as well as a button that we will need right now— “Make Invite Link.” If you click on this button, you will see a text field with an invitation link, as well as a button that allows you to copy this link.   By default, this link is reusable and is valid for one day. Currently, this can only be changed through the API. Share this link with the new user. When they click on this link, they will see a dialog prompting them to accept the invitation to FastReport Cloud.   After clicking “Accept,” two things will happen. First, the new user will be able to perform actions permitted for the “All Users” group. For example, if you have disabled access to document information by default, this is what they will see: Secondly, you will be able to see the new user in the same “Users” menu from which the invitation link was copied.   If you want to remove a user from the subscription, you can right-click on that user and select the appropriate option.   By the way, if you go to the workspace information menu, you will be able to see the maximum number of added users.   Thus, the Business edition of FastReport Cloud allows for effective organization of collaborative work on reports. By adding users to a single workspace, simultaneous preparation of reports from a shared list of templates can be ensured, or tasks can be distributed among different groups of users. This streamlines the reporting process and makes it more convenient and efficient. Tags: FastReport, Cloud ### Adding pages from another report to FastReport .NET URL: https://www.fast-report.com/blogs/page-another-report-net Summary: We add pages and dialog forms from other reports in FastReport .NET to the report being developed. Working with reports has become even easier! We add pages and dialog forms from other reports in FastReport .NET to the report being developed. Working with reports has become even easier! We add pages and dialog forms from other reports in FastReport .NET to the report being developed. Working with reports has become even easier! The latest update in FastReport .NET allows you to add pages from other reports to the developed one. This will help you work with reports faster. Before you would need to merge several files or redo the report manually. To add a page, open the File menu and select Open Page. You will see a file selection dialog, similar to the dialog when a report is loaded in the usual way. After selection, you will see a window with a list of all report pages, dialog forms, and a preview of the selected page. Pages are displayed in the same way as in the designer. The preview changes when you change the page selection from the list. You can add one or more pages or dialog forms to the report. Then you will see the last selected page in the menu area. By clicking on "OK", you will add the selected pages to the main report. If the name of the page, dialog form, or element names on the selected pages match the existing ones, the new elements will automatically receive new names in the standard format. It is necessary to avoid objects with the same name in the report. This situation can result in many errors. As a clear example, let’s add Page1 to the main report. This is how it looks in the original report. After adding the page, its appearance remained the same, but the names of some elements have changed because the main report has elements with similar names. The name of the newly added page has changed by the same principle. Data sources, Parameters, Variables, Totals, and the script of the report, from which we add the page, are not migrated. Therefore, it may be required to revise the report manually. It is now easier to work with reports! For any questions, write to our support at  support@fast-report.com Tags: .NET, FastReport, Designer, Report ### Advices accelerating report creation URL: https://www.fast-report.com/blogs/advices-accelerating-report-creation Summary: Get useful tips on how to speed up report creation in FastReport. Find more usefull tips and acticles in our blog. Get useful tips on how to speed up report creation in FastReport. Find more usefull tips and acticles in our blog. Get useful tips on how to speed up report creation in FastReport. Find more usefull tips and acticles in our blog. Today I would like to talk about some of the techniques to accelerate the development of the report. We are all accustomed to the drag & drop technology. Most often in such a way, the developers adds controls and field from the tables to the reports page. But you forget that you can drag more than one object, but several. For example, the fields of the table. Click on the desired field, and then, holding the Ctrl key mark the other. As a result, you have a few selected data fields. Now you can drag them pulling any of the selected fields. Also, instead of Ctrl, you can use the Shift key. This selects all elements located between the first marked field and second. Considered way for adding data to a report page is actual for any element from the "Data" window: the data, functions, variables, results. For example, let's drag and drop some fields from the table Emploee to the "Data" band: And now. Add a dialog form into the report . You can rapidly create filters on the fields of the table. For this "drag" on the shape of the field from the data tree. For example HireDate. We got control DateTimePeacker related with field HireDate. Now the data will be automatically filtered for the selected date. We add in the same way another filter -  the field FirstName: In this case, we can choose the type of the added components: • TextBox; • MaskedTextBox; • ComboBox; • CheckedListBox; • ListBox; • DataSelector. Any of these components can perform a role of a filter. You can enter the name manually in the TextBox. Or choose from a drop-down list. A DataSelector or CheckedListBox allow to select multiple names. By the way, if you change the ListBox SelectionMode property to MultiSimple, it is also possible to select multiple items to filter. Added filter can be changed to suit your needs. FilterOperation field allows you to select the type of filtering. It can be full compliance with the selected item from the list, or do not match, and others. These simple tips can help you to speed up work on the creation of reports, as well as a simplified manual labor. Tags: .NET, FastReport, Desktop, Designer ### Analysis VCL URL: https://www.fast-report.com/products/analysis-vcl Summary: High-speed OLAP cube engine for fast big data analysis and generation of tables with graphs and diagrams High-speed OLAP cube engine for fast big data analysis and generation of tables with graphs and diagrams High-speed OLAP cube engine for fast big data analysis and generation of tables with graphs and diagrams. Analysis VCL High-speed OLAP cube engine for fast big data analysis and generation of tables with graphs and diagrams Comprar Experimente de graça Documentação ## Analysis VCL instantly processes arrays and transforms database information into compact and generalized reports. Integrate the OLAP library into your project, prepare the data (or several sets) that your users will need for analysis, and get BI in your application. Embedding in the interface Full customization and integration into the interface of your business application. Data sources Connection to databases takes place not only through standard ADO and BDE components but also through any built based on TDataSet. Visual results To create graphs and charts based on table slices, you can use TeeChart (both from RAD Studio and the commercial edition of TeeChart Pro). Global filter Use one data cube for synchronous analysis based on various criteria, built on independent filters. Graphics core GDI is used to create graphic elements, render text, and manage graphics. Source code This set of components includes source codes. Maximum convenience for companies wishing to adapt the code to their needs. Ultimate VCL Saiba mais sobre o Ultimate VCL How to Set Up WSL 2 for Working with FastReport and FastCube In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. Installing FastReport and FastCube components in Lazarus Instructions for installing FastReport in Lazarus for various operating systems with a comparison of Trial, Professional editions. Instructions for installing FastReport in Lazarus for various operating systems with a comparison of Trial, Professional editions. How to use filters and sorting options in FastCube VCL We talk about the types of filtering and sorting data in the FastCube VCL analytical environment with detailed instructions for creating custom filters. We talk about the types of filtering and sorting data in the FastCube VCL analytical environment with detailed instructions for creating custom filters. Mais alguma dúvida? Entre em contato com o gerente ### Analysis VCL - FAQ URL: https://www.fast-report.com/faqs/analysis-vcl Summary: Explore detailed analysis of FastReport VCL, including usage, features, and common troubleshooting. Explore detailed analysis of FastReport VCL, including usage, features, and common troubleshooting. Is there a way to group one or more columns in run-time (when the cube is open)? Yes, it’s possible. TfcxSlice has the corresponding methods. Is there a way to set a column as hidden? It is possible to remove column (dimension) from filters or remove it from the pivot table (`TfcxSliceGrid`). There are no other ways to hide it. Is possible to set colors (in cells and columns) in run-time? This depends on what you need. If this is about styling then yes, you can set flat style and set colors of grid elements. If it is about highlighting of cells - then it is also possible in run-time. Speaking about columns - we don’t highlight their values, only data cells. Is possible to change the orientation in run-time? (vertical/horizontal) Yes, TfcxSlice has the corresponding methods. Is it possible not to show NULL values? It depends on what you specifically want. If you want to replace "null" with "", that's possible (there's such an option in `TfcxSlice`). If it's about hiding empty rows/columns – that's also possible. If it's about filtering dimension elements with "null" values – that can be done too. ### Another new version of the FastReport Generator for .NET has been released - FastReport .NET v. 1. 4! URL: https://www.fast-report.com/news/fastreport-net-1.4 Summary: Let's take a closer look at another new version of the fast report generator for .NET has been released - FastReport .NET v. 1. 4! in FastReport. Let's take a closer look at another new version of the fast report generator for .NET has been released - FastReport .NET v. 1. 4! in FastReport. What's new in FastReport .NET v. 1. 4! --------------- + added support for Visual Studio 2010 + added support for font subgroups for export to PDF + added SQL CE connection + added the system variable HierachyRow#, which returns strings of digits in hierarchical form + added support for table schemas in OleDB and ODBC + added NumToWordsEs function to support Spanish + Dutch location added + added Ukrainian location + added Config property.ReportSettings.DefaultPaperSize + added HTMLExport property.Print (shows the browser print window when the html document is open, only available in "one-page" mode) + added HTMLExport property.PageBreaks (inserts page breaks in "one-page" mode) + added ForceLoadData property for all data sources + added band property.FirstRowStartsNewPage + added Parameter property.Warning + added Config property.TempFolder + added report property.ReportInfo.PreviewPictureRatio + added DataBand property.PrintIfDatasourceEmpty + added ChildBand property.PrintIfDatabandEmpty + added Config constraint.DesignerSettings.Restrictions.DontCreateData to disable the "Data|Add Data Source" menu..."["Data / add data source..."] - fixed Row# and StartNewPage bug - fixed nullable personalization feature bug - fixed a bug with bands that the CanBreak and StartNewPage properties set as true - fixed HTML export bug (style skipping when exporting multiple pages in "one-page" mode) - Fixed bug with plugin registration - Fixed bug with Dialog controls attached to calculated column - fixed a bug in creating queries (incorrect connection type) - improved layout of dialog form controls - fixed a bug with Dock != None and CanGrow, CanShrink - fixed HTML export bug - fixed "Save printer in the report file"option - fixed a bug in Graph objects (ClearValues method does not work) - Fixed bug in data wizard - fixed an error in sums when the Convert null values option is disabled - Fixed bug with saving reports as VB class - fixed outline in hierarchical report - fixed a bug in Chart objects (when trying to group unsorted data by month) - fixed a bug in the data wizard under OS Vista - Fixed bug with built-in TTC fonts in PDF export - Fixed bug with exporting table containing hidden rows * fixed dialog "data wizard" (loading table lists is much faster) * designer Command DesignerControl.cmdData replaced with cmdAddData and cmdChooseData * reduced size of result files when exporting HTML * improved performance when working with complex business objects * tables in the "data wizard" window are now sorted, the "Sort tables" button has been removed * minor fixes in the Data window (the ability to move up and down the list of parameters using the Ctrl + Up/Down arrow keys) * installer now adds all builds automatically FastReport.Net the GAC * fastreport compilation.dll divided into two parts-FastReport.dll, FastReport.Web.dll our customers can download the latest version from the private panel or order FastReport.Net with a favorable discount (also via the link located in the private panel). FastReport.Net it is a fully functional reporting solution for Windows Forms, ASP.NET and WPF. This tool can be used in Microsoft Visual Studio 2005,2008 and 2010, as well as Delphi Prizm. It is written in clear C# language and can work with an application written in C# or VB.Net and also in Pascal (Delphi Prizm). Z FastReport.Net you can create application-independent .NET reports. in other words FastReport.Net it can be a stand-alone tool for creating reports. See for yourself: * you can connect to any database, work on any tables from these databases or create queries; * you can add dialog forms to the report to invoke specific parameters before running the report; * using the built-in script, you can manage the relationships between the controls of dialog forms, handle data in a comprehensive manner; * finally, you can view the results, print them, and export them to many commonly used document formats. Order FastReport .NET v. 1. 4 ### Application with FastReport .NET in Docker with Linux URL: https://www.fast-report.com/blogs/application-net-docker-linux Summary: Docker executes unfolding with literally two commands, while containers take much less space than the virtual machine images. Docker executes unfolding with literally two commands, while containers take much less space than the virtual machine images. Docker executes unfolding with literally two commands, while containers take much less space than the virtual machine images. Docker is a software platform for rapid development, testing and launching of applications. Due to it, one may locate multiple containers on one server. The containers are understood as integrity of our application, its dependences, and image. One should remember that an image is a template which represents a cast of a file system. As we have recollected a number of terms, we may speak of how to boost FastReport.Core + FastReport.Web in our container. First, we need to install Docker onto any Linux distributive, in our case Ubuntu 20.04. On installing Docker with Linux you may read  this article . After installing and checking, you may proceed to the next step. Now we have to create DockerFile. It is an ordinary text document containing all commands for building an image. You may build and edit this file both in an ordinary word processor or in VS code. By the way, VS code has a convenient docker plug-in, which to some extent simplifies coding and editing. An example of DockerFile: ``` FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app   RUN ln -s /lib/x86_64-linux-gnu/libdl-2.24.so /lib/x86_64-linux-gnu/libdl.so RUN apt-get update \ && apt-get install -y --allow-unauthenticated \ libc6-dev \ libgdiplus \ libx11-dev \ && rm -rf /var/lib/apt/lists/* ENV DISPLAY :99   FROM microsoft/dotnet:2.1-sdk AS build WORKDIR /src COPY ["fastreport_net", "FastReport.Net"] RUN dotnet restore "FastReport.Net/Demos/Core/FastReport.Core.Web21.MVC/FastReport.Core.Web21.MVC.csproj" COPY . . WORKDIR "/src/FastReport.Net/Demos/Core/FastReport.Core.Web21.MVC" RUN dotnet build "FastReport.Core.Web21.MVC.csproj" -c Release -o /app   FROM build AS publish RUN dotnet publish "FastReport.Core.Web21.MVC.csproj" -c Release -o /app   FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "FastReport.Core.Web21.MVC.dll"]   ``` This docker file unfolds the image of a Demo application of FastReport.Core.Web21.MVC, which uses FastReport.Web and FastReport.Core. You may try it yourself in the  next link , or find a directory Demos\Core\FastReport.Core.Web21.MVC when downloading  FastReport.NET . After writing DockerFile you must build it. It is very simple. Start a terminal from the directory which DockerFile is located in, and write the command into it: ``` sudo docker build ``` After successful build, unfold the container with a command: ``` sudo docker run -d -p 8080:80 build/fastreport ``` In this command we forward port 8080 and name the image as “build/fastreport”. After the successful start of the container, we open http://localhost:8080/. Then we transfer to the page of our application; if all dependences were executed and resolved, then we will see our project: To sum it up, Docker executes unfolding with literally two commands, while containers take much less space than the virtual machine images, which saves a lot of time and space. Tags: .NET, .NET, FastReport, FastReport, Linux, Linux, Core, Core, Libgdiplus, Libgdiplus, Ubuntu, Ubuntu ### Assembly of FastCube.Core for .NET 5.0 URL: https://www.fast-report.com/blogs/assembly-of-pivot-grid-core-net5 Summary: Step-by-step guide for assembling the OLAP data-pivoting tool for .NET 5.0 Step-by-step guide for assembling the OLAP data-pivoting tool for .NET 5.0 Step-by-step guide for assembling the OLAP data-pivoting tool for .NET 5.0 Today, such analytical tools as OLAP cubes are extremely demanded. Fast Report possesses such a system and allows displaying data cubes with slices in .NET applications, for example in NET 5.0. Now we will discuss how to use it in your reports. To use the FastCube.Core libraries, one has to preliminarily assemble them from the source codes. To assemble FastCube.Core for .NET 5.0, use the FastCube.Core.sln solution. After starting this solution, change the target operating environment for .NET 5.0. Then assemble the project; you will see FastCube.Core.2020.2.1.nupkg in our work directory. Place this package to the folder which you will use as a local source of packages. Now we can start creating the .NET Core project. First of all, add the FastCube.Core library to the created project. To do that, use the NuGet package manager. As the packages of libraries are placed on the local disc, we will have to add the local source of packages. Click a gear icon in the upper right corner of the package manager and add a new source, which will refer to the local folder with your nupkg packages: At this stage, you may select the added source in a dropdown list and set the packages: We have added a library to the project, now it should be connected by writing in the file .cs: ``` using FastReport.Olap ``` To check how it works, use the following code: ``` class Program { private static string FindDataFolder() { string dataFolder = ""; string thisFolder = Config.ApplicationFolder;   for (int i = 0; i < 6; i++) { string dir = Path.Combine(thisFolder, "Data"); if (Directory.Exists(dir)) { string data_dir = Path.GetFullPath(dir); if (File.Exists(Path.Combine(data_dir, "config.xml"))) { dataFolder = data_dir; break; } } thisFolder += ".." + Path.DirectorySeparatorChar; }   if (dataFolder == "") { thisFolder = Config.ApplicationFolder; for (int i = 0; i < 6; i++) { string dir = Path.Combine(thisFolder, "Demos", "Data"); if (Directory.Exists(dir)) { string data_dir = Path.GetFullPath(dir); if (File.Exists(Path.Combine(data_dir, "config.xml"))) { dataFolder = data_dir; break; } } thisFolder += ".." + Path.DirectorySeparatorChar; } }   if (dataFolder == "") throw new Exception("Could not locate the Data folder."); return dataFolder; }   static void Main(string[] args) { string dataFolder = FindDataFolder(); // create cube and slice Cube cube = new Cube(); Slice cubeSlice = new Slice(); cubeSlice.Cube = cube; // load cube cube.Load(Path.Combine(dataFolder, "Cubes", "2_0_sample_en1.mdc")); // open cube cube.Active = true; // export slice HTMLExport export = new HTMLExport(); export.Slice = cubeSlice; export.Export(Path.Combine(Config.ApplicationFolder, "export.html")); } } } ``` After that, in the directory of our application we will see a file of .html format. Open it in any editor and get the following: Thus, we have viewed using the FastCube.Core library in a console application. As one can see, the library works perfectly with NET 5.0. Now you can use data cubes in your applications. Tags: .NET, .NET, FastCube, FastCube, OLAP, OLAP, Core, Core ### Asynchronous programming in C #. Introduction. URL: https://www.fast-report.com/blogs/asynchronous-programming-c Summary: Learn what asynchronous programming is in C# in FastReport. Find more usefull tips and acticles in our blog. Learn what asynchronous programming is in C# in FastReport. Find more usefull tips and acticles in our blog. Learn what asynchronous programming is in C# in FastReport. Find more usefull tips and acticles in our blog. Many people have heard of this, but not many use it in their code. Meanwhile, no serious programs with client-server architecture will do without asynchronous programming. Exchange of data with the database, the interaction of the client and the server - this takes time, which can be occupied by other processes instead of waiting. When the operation is executed synchronously, the thread is blocked by another thread. And we have to wait for the implementation of this second process to return control to the first one. This causes unnecessary waste of resources, because a stream with a single task can wait for a long time to respond. From a database, for example, or a web service. And if temporary resources can save multi-threading (the benefit of modern processors allows it), then memory resources will not save it. After all, in fact, multi-threading is also synchronous execution of operations. Just there are few of them. The real solution is to use asynchronous processing. With this approach, we can use several threads to control one or the other. That is, while waiting for a response from another task, the current one does not block the thread, but provides it to another task. Let's look at the picture: In this case, a single-threaded asynchronous approach is used. And here a multi-threaded asynchronous stream. Each thread performs many tasks. When one of the tasks stops in anticipation, another one is taken. Thus, tasks flow from one thread to another, depending on the one that was freed first. The figure shows that Task 1 started executing in the first thread, and finished in the second. Let's consider one more figure - a sequence diagram: The diagram describes the behavior of threads for a client-server application. The client sends a request for data from the server, and instead of "hanging" waiting for the response (as in the synchronous approach) continues to work, providing the user with another application functionality. So, if you are a web developer, then without asynchrony you can do nothing. Let's understand a little in theory. There are three patterns of asynchronous programming: Asynchronous Programming Model (APM); Event-based Asynchronous Pattern (EAP); Task-based Asynchronous Pattern(TAP). Asynchronous Programming Model appeared in the first version of the .Net Framework. APM allowed to create asynchronous versions of synchronous methods using two methods - Begin and End . So, there are only two methods: ``` public IAsyncResult Begin{MethodName}(TIn[] args, AsyncCallback callback, object userState =null) { … } ```  And: ``` public TResult End{MethodName}(IAsyncResult result) { ... } ```  The Begin{MethodName} method starts an asynchronous operation. It takes the parameters args, callback - the delegate to the method called after the asynchronous method is executed, the userState object, which is used to transfer information about the state of a particular application to the method called when the asynchronous operation ends. The method returns an object of type IAsyncResult that stores information about an asynchronous operation. The End{MethodName} method terminates the asynchronous operation. It takes an input object, type IAsyncResult, and returns TResult, which actually returns the type defined in the synchronous copy of this method. Let's see how this template is used in a simplified example: ``` public void Button_Click (...) { WebRequest request = WebRequest.Create(url); request.BeginGetResponse(Callback , request); }   public void Callback(IAsyncResult ar) { WebRequest request = (WebRequest) ar.AsyncState; try { var response = request.EndGetResponse(ar); // Code does something with successful response } catch (WebException e) { // Error handling code } } ```  We called the Begin method in the button click event handler. As a parameter, we pass a callback to this method. And, already in the callback itself we call the pair method - End. The disadvantages of the asynchronous programming model include: The necessity to create a callback function; The absence of the way to abort the operation. The absence of the way to refuse to call the callback method, if it was passed at the beginning of the operation. The absence of the notification of the operation progress or of interim results. Event-based Asynchronous Pattern This pattern of asynchronous programming appeared in the second version of the .Net framework. It is based on events and asynchronous methods. The class that implements this template will contain the methods MethodNameAsync and MethodNameAsyncCancel (if operation cancellation processing is required), and the MethodNameCompleted event. In the same class, you can place synchronous versions of methods that work with the same thread. Most often this template is used when working with web services. For example, ajax implements the Event-based Asynchronous Pattern. You can get the result of an asynchronous operation and process errors only in the MethodNameCompleted event handler. The asynchronous programming pattern based on events solved some problems of the predecessor: • Declaration a method to get the result of an asynchronous operation; • There is no mechanism for notification of the progress of the operation. However, this template still has a number of drawbacks: • It is not possible to transfer the context of the operation call (user data) to the result processing method; • Not all operations can be interrupted. Methods that support only one operation in the queue cannot be interrupted; • It is not possible to specify in the context of which thread callback methods will be called. Task-based Asynchronous Pattern (TAP) The third template for asynchronous programming appeared in .Net Framework 4.0. From the title it is clear that it is based on the use of tasks. The basis of TAP is two types of System.Threading.Tasks.Task and System.Threading.Tasks.Task . TAP allows developers to define asynchronous functions within a single method. Now there is no need to create the functions of the beginning and the end of the asynchronous operation, and then also the callback. This of course facilitates the work of the programmer, reduces the threshold of entry into the technology, and simply makes programming pleasant. TAP uses tasks to perform operations. For each task, a separate thread is used, which is taken from the thread pool. After the task is completed, the thread returns to the pool. The modifier "async" - this modifier is applied to a method or lambda expression, or an anonymous method - it indicates that the method is asynchronous and signals the possibility of one or more occurrences of the wait statement in this method. Let's have a look at an example of a method definition: ``` public async TaskMyProcessAsync() { … Var Overtime = await new ERP().ProcessOvertime(emp); … } ```  Note the keywords async and await. These are operators that signal that the Task-based Asynchronous Pattern is being used. The async modifier indicates that the method is asynchronous. And the await statement can be called inside the method one or more times. It suspends the execution of the task until the result is obtained, while the thread continues its work. And here is an example of using TAP from life. Calling the web service: ``` static async Task SendMessageAsync() { var client = new MyServiceClient(); var task = Task.Factory.StartNew(() => client.SendMessageAsync("Message")); var result = await task; return result; } ```  And here is another way of calling, even simpler and more understandable: ``` static async Task SendMessageAsyncNew() { var client = new MyServiceClient(); var result = await client.SendMessageAsync("Message"); return result; } ```  This "lightweight" version of using await is available in the .Net Framework 4.5. The asynchronous task-based approach solved most of the problems of the previous templates. Then you and the ability to interrupt the asynchronous operation, and a simple implementation of one method, the ability to track the progress of the operation. Currently, Microsoft recommends using this template to implement asynchronous calls when developing components. As for the expediency of using this template. Using TAP will increase the bandwidth of the server. However, the cost of creating an asynchronous process can offset benefits if you have a small amount of traffic (for example, a client-server). In this case, the synchronous approach will work faster. I understand that we have just "ran through the tops" and this information is not enough for a good understanding of how different approaches to asynchronous programming work. And therefore, we'll look at each template in detail, in subsequent articles. Tags: C#, Asynchronous programming ### Attention: New objects behavior URL: https://www.fast-report.com/news/new-objects-behavior Summary: Attention: New objects behavior Attention: New objects behavior It's finally happened! By popular demand we've adjusted behaviour of our objects so that your data looks more realistic.  Attention! It's a beta version. Download demo and see your current reports come alive!   Share your new reports with #itsalive_fr ### Attention: we no longer work with Digital River URL: https://www.fast-report.com/news/digital-river-conditions-breach Summary: Due to a systematic breach of contract conditions, Fast Reports no longer works with Digital River. All licenses and renewals payments are redirected to another payment aggregator. Due to a systematic breach of contract conditions, Fast Reports no longer works with Digital River. All licenses and renewals payments are redirected to another payment aggregator. Due to a systematic breach of contract conditions, we no longer work with Digital River. All licenses and renewals payments are redirected to another payment aggregator.  Digital River withheld customer payments and violated the terms of our agreement. Therefore, we have decided to return customer payments made starting July 1, 2024. We will contact all our customers by email. If you have any questions, email us at sales@fast-report.com . ### Autumn events with Fast Reports URL: https://www.fast-report.com/news/autumn-events-fastreports Summary: Autumn events with Fast Reports. Fall brings us another exciting series of events in Europe. Join us there! Autumn events with Fast Reports. Fall brings us another exciting series of events in Europe. Join us there! Fall brings us another exciting series of events in Europe. Join us there!  Date Name Location For .Net Developers For Delphi Developers Link September 18 – 19 .Net Developer Days Warsaw, Poland + https://net.developerdays.pl/ September 25 – 27 Basta! Mainz, Germany + https://basta.net/ October 23 Embarcadero Conference São Paulo, Brazil  + https://embarcaderoconference.com.br/ November 5 -7 EKON 22 Dusseldorf, Germany + https://www.developer-week.de/ ### Avalonia URL: https://www.fast-report.com/products/avalonia Summary: A universal component for generating reports when developing cross-platform applications using Avalonia UI A universal component for generating reports when developing cross-platform applications using Avalonia UI Set of custom components for Avalonia UI framework for report generation. Use our embeddable reporting tool that supports C# and .NET — FastReport .NET Avalonia. FastReport .NET Avalonia Um componente universal para gerar relatórios ao desenvolver aplicativos multiplataforma usando Avalonia UI Comprar Experimente de graça Documentação Practically any: invoices, financial reports, product catalogs with color profile support, restaurant menus, sales details, questionnaires with electronic forms, airline tickets, utility bills, and much more. If you have data that needs to be made visually understandable, FastReport is the perfect solution for you. Embeddability in projects Install the necessary packages from the NuGet repository, or download packages from our website and add the necessary libraries to the project. No additional modules or special extensions are required. Saving development resources The advantage of the Avalonia framework, multiplied by the ease of working with FastReport: create reporting components for your application for three platforms at once: macOS, Linux, and Windows. One piece of code—three platforms! Quick access to the report and data structure From the report tree and properties tree, you can edit the report structure, parameters, and filters, as well as data sources with global styles. Compatibility and integration Avalonia is part of the unified FastReport platform in C#. In FastReport Cloud, you can store your templates, reports, and data sources, and then use them in the desktop designer. Smooth transition from other solutions Our report generator instantly converts your reports from List&Label, DevExpress, Microsoft Reporting Services (RDL, RDLC), Crystal Reports, StimulSoft, and Jasper Library into FastReport format. Graphics engine SkiaSharp is used as a renderer, which allows you to build beautiful, professional-looking reports in maximum quality. How to Export a Report from FastReport .NET to PostScript FastReport .NET supports exporting reports to many popular formats, such as PDF, Excel, Word, and others. However, professional printing, plotters, and specialized printing equipment often require the PostScript (.ps) format. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. How to configure Content Security Policy for FastReport .NET WEB reports Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions of FastReport .NET WEB, the architecture of the client-side has been significantly reworked, which simplifies compliance with a strict CSP without losing report functionality. In this article, we will examine how to properly configure CSP for FastReport reports and take into account typical risks. Learn how to configure Content Security Policy for FastReport .NET WEB reports: an overview of CSP directives and values, changes in the FastReport architecture, typical bypass scenarios, and ways to protect against them. How to Configure a Report with Business Objects in Code and the FastReport .NET Designer FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects (Category → Products). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects in FastReport .NET. ### Aztec– code URL: https://www.fast-report.com/blogs/barcode-aztec-net Summary: Let's take a closer look at what Aztec QR-code in FastReport Is. Find more usefull tips and articles in our blog. Let's take a closer look at what Aztec QR-code in FastReport Is. Find more usefull tips and articles in our blog. Let's take a closer look at what Aztec QR-code in FastReport Is. Find more usefull tips and acticles in our blog. In the article "Using QR-codes in FastReport .NET" we have reviewed the popular 2D barcode formats. Today, I would like to talk about another popular format, which is also supported in FastReport .NET. This is an “Aztec-code”. The name of the code is associated with an ancient Indian tribe from Central America -the Aztecs. Please, look at the code: The square which is located in the center of the code contains several smaller squares. It reminds a view overlooking the Aztec pyramid. So, the “Aztec – code” got its name due to the similarity between the external view of the code and the symbols of the Aztec tribe. “Aztec – Code” was developed in 1995 and it combines the best ideas of two-dimensional bar codes: MaxiCode, SuperCode, Code One, Data Matrix, Dot Code, PDF417.  Despite the patent, this development has been transferred into the public domain. The standard describes the coding set out in ISO / IEC 24778: 2008. The code size depends on the amount of encoded information. For example, the minimum size of 15x15 pixels allows you to encode 6 bytes, i.e. 12 letters or 13 digits. A maximum size 151х151 pixel allows encoding of 1914 bytes, 3067 characters or 3832 numbers. It must be mentioned that the code has two display formats: “Compact” (Compact) and "Full-Range" (Full). A choice of a format depends on the amount of data to be encoded. Please, look at two images given bellow. The left image has a symbol of a target consisting of two squares and the right one has a symbol of a target consisting of three squares. The obvious advantage of this type of coding comparing to others is the possibility of reading the code when it’s in different positions. Moreover, even mirrored the code will still be read easily. This is achieved by the use of navigational markers. Using the target in the center of the code allows to read data even from garbled or stretched image. Through using the algorithm Reed-Solomon coding, “Aztec – code” may be read being partly damaged. For such an occasion the code has redundancy. You can adjust the percentage of red redundant code from 5 to 95. Therefore, it is possible to provide a very high resistance to reading errors. Layered structure of the code makes it possible to increase the amount of information stored by increasing the coding region. All of these advantages have made “Aztec - code” very attractive for application in transport networks as electronic tickets, for example, in air and rail transportation. In some countries it is used in government documents. Also, like other high-density codes, “Aztec code” is popular in commerce, logistics, manufacturing and pharmaceuticals. Compared with the “QR-code”, “Aztec-code” has a larger recording density and does not require a field around the code. Also, the minimum size of “Aztec-code” is 15x15 against 21x21 at “QR-code”. You can use FastReport .NET to create “Aztec-code” and many other codes. Tags: .NET, FastReport, Barcode ### Barcodes in FastReport .NET URL: https://www.fast-report.com/blogs/barcodes-in-net Summary: Let's take a detailed look at how different barcodes work in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a detailed look at how different barcodes work in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a detailed look at how different barcodes work in FastReport .NET. Find more usefull tips and articles in our blog. For more than half a century used barcodes. But this popularity they received during the database development. Barcodes allows you to quickly identify the goods and to find information about it in the database. However, today's two-dimensional bar codes can contain all the information about the product inside. In the traditional sense bar code - a set of characters or lines arranged in a certain order according to the standard. Classic bar codes are a series of vertical lines of varying thickness. The specific order and line size allows to encode characters. Two-dimensional barcodes typically take a square or rectangular area and are composed of pixels, and combinations thereof. These codes allow you to encode more information than linear. In addition to characters can be encoded binary code. Linear bar codes are used mainly in trade, logistics and inventory control, whereas the two-dimensional - in transport networks, government documents, identity cards. The main advantage of the barcode - the quick and accurate code reading. Perhaps today there is no supermarket without a barcode scanner. One can imagine what would happen if the cashier will enter the identifiers of goods manually  - long queues. In addition, there is a risk to make a mistake when entering a sequence of numbers. Some linear codes are provided with self-checking. This avoids erroneous reading of the code, if it is damaged. Two-dimensional codes have the same error correction mechanism. Even partially damaged code can be read, because of inherent in it redundant. Different bar code standards are used for different purposes. Below is a list of the most popular barcode standards and contains the scope of each standard. There is a great variety of barcode standards. All of them have a certain scope. FastReport .NET allows the use of the most popular bar codes in your reports: -        Linear: 2/5 Interleaved, 2/5 Industrial, 2/5 Matrix, Codabar, Code 39, Code 39 Extended, Code 93, Code 93 Extended, Code 128 (A,B,C) autoencode, EAN8, EAN13, UPC-A, UPC-E, Supplement code, MSI, PostNet, Plessey, GS1-128 -        2D: QR code, Aztec code, PDF417, Datamatrix Consider the scope of each of them: 2/5 Interleaved -  very popular high density barcode for coding numeric data. Based on algorithms Standart 2 of 5. It is used in logistics and warehouse inventory. 2/5 Industrial - barcode of any length to encode numeric data. This standard is used with the 60-ies for marking tickets and other purposes. Also known as Standard 2 of 5. The disadvantages are low coding density as light strips are not involved in coding, and perform only the role of the separators. Used in industry. Almost expelled by Code 39. 2/5 Matrix - the bar code of any length to encode numeric data. Legacy format. Disadvantages - low code density. Used in inventory control, marking tickets. Currently almost not used. Codabar - discrete symbology with self-monitoring, developed in 1972 g. known in Japan as NW-7. It has the narrow and wide strips and the elements 7 to the symbol. It is intended to encode numeric data, some characters and four letters: A, B, C, D. Advantage - coding 6 special characters. Disadvantage - a small effective code density. Used in warehouses, transport, logistics, libraries, and some hospitals. Code 39 - barcode with self-examination. Usually encoded alphanumeric data. This standard is widely used for many years and is the most popular in the world for common tasks. Now superseded by more modern Code 93 and Code 128, due to their greater compactness. Code 39 is a discrete symbology - so that the gap between the ciphers may be more than one character. Some people mistake the gap between the ciphers of the gap. Large gaps wider than do other code barcode with the same data, which is a major disadvantage. Code 39 Extended - includes lowercase letters and punctuation marks. It should be noted that Extended Code 39 represents the majority of the additional symbols using two characters from the standard set of characters Code 39. Consequently, Extended Code 39 characters is approximately two times longer than the standard Code 39 characters. Code 93 - the code of arbitrary length. Code 93 was developed in addition to the Code 39 is a more compact code than the last. Code 93 symbology don't have self-checking. Code 93 characters include two Mod 47 check character. Special codes are used to provide a complete set of ASCII characters, which makes the system more reliable than Code 39. Code 93 Extended . Standard Code 93 encodes numerals and capital letters, and the extended code 93 encodes the full ASCII character set. Code 128 - Modern bar code high density to encoding of numbers, letters and other symbols. Advantages - Compact, alphanumeric data. It is used in the trade, documents and various other areas that require a coded text. EAN-8 - a European standard bar code to encode to 8 digits. It is used in trade to identify the product, the manufacturer. The advantage - compactness. EAN-13 - this is an expanded version of the EAN-8. It allows you to encode 13 digits. In addition to Product ID and the manufacturer, was added a country code. It is also widely used in the retail trade. UPC-A - is a bar code similar to destination EAN-13, but is designed and operates in the United States. Encoded 12 digits. Scope - retail trade. UPC-E - a shortened version of UPC-A. Encoded 6 digits. It is used in the retail industry, to be placed on small products where it is impossible to use a full format UPC-A. Supplement code.  EAN-8, EAN-13, UPC-A, UPC-E, may include additional bar code to the right of the main bar code. This second bar code is used to encode additional information for newspapers, books and other periodicals. An additional bar code may encode 2 or 5 digits of information. MSI - bar code to encode the numbers. It does not support the self-checking. It is commonly used to monitor the availability of goods on retail warehouses. This is a relatively "weak" code that not effectively uses the space. PostNet - bar code is designed specifically for the US Postal Service. Lets you encode numbers only. Coding postcodes dimension 5 or 9 characters and delivery code with size of 11 characters. Plessey - outdated barcode is still popular in some industries. Supports encoding of numbers and letters: X, B, C, D, E, F. Also, an 8-bit CRC, divided by two control characters. Disadvantages include more stringent requirements for code printing quality, due to the thin strip cipher. GS1-128 (UCC / EAN-128) - a modern type of barcode. It has a high density. Based on the algorithm of the standard Code 128. It is used mainly in logistics for the exchange of information on the cargo between enterprises. When encoding, just before the data is established a special identifier that identifies the type of data (date of manufacture, expiry date and al.) PDF417 - a two-dimensional bar code to encode alpha-numeric data. It allows you to encode up to 2710 characters. It is used in the trade, the document flow in the organs of accounting and control, transport networks. coding algorithm is very similar to another format - DataMatrix. DataMatrix - a two-dimensional bar code to encode text and numeric data. The volume of data to be encoded on the enormous truth - from a few bytes to hundreds of kilobytes. But the most commonly used sizes of codes of 2 bytes up to 2 kilobytes. coding algorithm allows correcting code read errors due to redundancy. DataMatrix is used for labeling luggage transport networks, marking of electronic devices and components, on identity cards. QR Code - a popular two-dimensional bar code to encode different information: numbers, text, binary, characters. Code is popular due to the ease of reading and resistance readings or damage to the error code. Developed and widely used (in virtually all sectors) in Japan. But in European products can often find this code. Aztec code - another two-dimensional bar code to encode different information. The main advantages of which are: resistance to damage and distortion of the code, indifference to the orientation of the code when reading (even at an angle), compactness. Actively used in the railway and air transport, in public documents in some countries. So, we have considered a brief description of each of the bar codes represented in FastReport .NET. Barcodes are used in most industries. For example, in logistics barcodes contain information about the cargo and route. All of the waybill information may be encoded in a two-dimensional bar code. This ensures the integrity of the information. In addition, bar code could replace the manual entry of information in the information system. This is useful in retail trade. The work of the cashier is much easier, and customer service rate increases. Thus, FastReport .NET allows you to create reports for such scopes of activity as trade, logistics, inventory control, and other industries. Tags: .NET, FastReport, Barcode ### Basta! 2025 in Mainz: our experience URL: https://www.fast-report.com/news/fast-reports-basta-2025 Summary: Fast Reports participated in BASTA! 2025 in Mainz, Germany. Road shows planned before and after spring BASTA! 2026. Fast Reports participated in BASTA! 2025 in Mainz, Germany. Road shows planned before and after spring BASTA! 2026. Every year, Fast Reports shows up at the BASTA! conference to present its strength on the reporting and standard document market. The fall BASTA! conference for .NET, web & AI innovation took place from 23rd till 25th of September 2025 in the beautiful city Mainz in Germany. Over 500 software professionals visited the event and we spoke to 120 people amongst them. One very valuable review from a customer I kept in my mind. A garbage can disposal needs to write invoices to each residential area which includes 300 pages. Already since 1998 they have successfully worked with FastReport .NET Ultimate and have always been renewing the versions. For those potential customers that are planning to switch from another report generator to Fast Reports or deepen the usage of the FastReport products we are scheduling a road show before and after the spring BASTA! in March 2026. Victoria Schmidt Fast Reports Team ### Basta! in Mainz from 21 to 25 September 2009 URL: https://www.fast-report.com/news/basta-2009 Summary: Basta! in Mainz from 21 to 25 September 2009 Basta! in Mainz from 21 to 25 September 2009 Dear friends! We invite you vizit developer conference Basta! Basta! in Mainz from 21 to 25 September 2009 https://basta.net/ Fast Reports will take part in Basta! as an exhibitor: https://basta.net/ ### Become our guest on CeBit 2006! URL: https://www.fast-report.com/news/forum-cebit-2006 Summary: Become our guest on CeBit 2006! Become our guest on CeBit 2006! As you can know we shall participate in  CeBit 2006 We shall be glad to see you as our guests - Hall 5, Stand B70/3. You can see FastReport and FastReport Studio in work. Also we with Alexander Tzyganenko shall first time demonstrate our new product - FastReport Server. Our new customers, who shall register FastReport Studio or FastReport from 20 february to 8 march can receive ticket to CeBit 2006 for free as gift from us. The quantity of tickets is limited! ### Become our guest on CeBit 2008! URL: https://www.fast-report.com/news/guest-cebit-2008 Summary: Become our guest on CeBit 2008! Become our guest on CeBit 2008! As you can know we shall participate in CeBit 2008  We shall be glad to see you as our guests - Hall 3, Stand B37/1.  Live demonstration of FastReport 4, FastReport Studio, FastReport Server and FastCube. Consulting of our professionals. And preview of FastReport .Net  Map of 3rd hall  See you on the CeBit 2008!  Fast Reports team ### Become our guest on Interop 2007 Moscow! URL: https://www.fast-report.com/news/exhibition-interop-2007 Summary: Become our guest on Interop 2007 Moscow! Become our guest on Interop 2007 Moscow! "Fast Reports" shall participate in Interop 2007 Moscow We shall be glad to see you as our guests on the Stand №209/3. Only news from our company in the Interop'2007 Moscow: 1. the 4th version of FastReport Studio for Windows Vista 2. the 2nd version of the reporting server FastReport Server 3. OLAP-components FastCube 4. Fast Report's partner program  See the Interop's plane Schedule a meeting. ### Black Friday at Fast Reports URL: https://www.fast-report.com/news/black-friday-2024 Summary: November 27, 28, and 29, report generators for VCL and .NET are on sale with 40% off! November 27, 28, and 29, report generators for VCL and .NET are on sale with 40% off! November 27, 28, and 29, report generators for VCL and .NET are on sale with 40% off! What products are participating?  FastReport .NET of Ultimate, WEB, Avalonia, WinForms, WPF, and Mono editions.  FastReport VCL of the following versions: Ultimate, Optimum, Reporting VCL, Reporting FMX, Lazarus, Analysis VCL.  Discounts apply to a new purchase only. The promotion does not apply to renewals and upgrades. You can ask questions in the chat on our website or email sales@fast-report.com . ### Black Friday Discount URL: https://www.fast-report.com/news/black-friday-discount-2013 Summary: Black Friday Discount Black Friday Discount We are glad to let you know about Black Friday discounts to all Fast Reports products. Action will start 29 November and will continue until the date 3 December 2013. ### Black Friday for .NET products with up to 40% discount URL: https://www.fast-report.com/news/black-friday-2023 Summary: Black Friday! Have time to purchase .NET products from November 21 to 24 with a 20% and 40% discount for yourself and your team! Black Friday! Have time to purchase .NET products from November 21 to 24 with a 20% and 40% discount for yourself and your team! During the period from November 21 to 24, hurry up to purchase a license with maximum benefit!  Single license with a 20% off on .NET solutions in Professional, Enterprise, Ultimate editions. Team license with a 15% off on NET solutions in the Professional, Enterprise, Ultimate editions and, taking into account the Team edition discount, a total of 40% ! Discounts are applied to: FastReport .NET FastReport WPF FastReport Mono FastReport Desktop Single license is for 1 developer. The Team license is suitable for 2-4 developers and includes the Build server license in the price. Discounts can only be applied when purchasing a license. The promotion does not apply to renewals and upgrades. You can ask questions in the chat on our website or email to sales@fast-report.com . ### Black Friday! 50% discount for your team URL: https://www.fast-report.com/news/black-friday-2022 Summary: November 24-29 any edition of FastReport or FastCube for Teams of developers can be purchased at half price. November 24-29 any edition of FastReport or FastCube for Teams of developers can be purchased at half price. November 24-29 any edition of FastReport or FastCube for Teams of developers can be purchased at half price. 50% discount applies for all Fast Reports products of Team and Site editions: FastReport .NET FastReport VCL FastReport Mono FastReport FMX FastReport Business Graphics .NET FastCube .NET FastCube VCL FastCube FMX The Team license is suitable for 2-4 developers and includes Build server license. The Site license is suitable for a large development team of 4 people or more within one location and includes Build server license. The offer is valid for a new purchase only. Discount doesn’t apply to subscription renewals and upgrades. You can ask questions in the chat on our website or by emailing  sales@fast-report.com ### Black Friday: 3 days to get report generators with a 35% discount URL: https://www.fast-report.com/news/black-friday-2025 Summary: A unique opportunity until November 28 to purchase FastReport VCL, FastReport .NET, and FastReport Desktop with a 35% discount. If you have postponed your purchase or upgrade, now is the best moment. A unique opportunity until November 28 to purchase FastReport VCL, FastReport .NET, and FastReport Desktop with a 35% discount. If you have postponed your purchase or upgrade, now is the best moment. A unique opportunity until November 28 to purchase FastReport VCL , FastReport .NET , and FastReport Desktop with a 35% discount. If you have postponed your purchase or upgrade, now is the best moment. This is your chance to update your data tools, speed up report development, and reduce time spent on routine tasks. A 35% discount is a real opportunity to optimize processes and prepare for new challenges without additional costs. Invest in reliable and convenient tools for analytics and reporting at the best price of the year. The offer is valid only for new purchases and cannot be applied to license renewals or upgrades. ### Black Friday: discounts for teams URL: https://www.fast-report.com/news/black-friday-2021 Summary: November 22-28 any edition of FastReport or FastCube for Teams up to 4 developers can be purchased for half price. November 22-28 any edition of FastReport or FastCube for Teams up to 4 developers can be purchased for half price. November 22-28 any edition of FastReport or FastCube for Teams up to 4 developers can be purchased for half price. 50% discount applies for all Fast Reports products of Team edition: FastReport .NET FastReport VCL FastReport Mono FastReport FMX FastReport Business Graphics FastCube .NET FastCube VCL FastCube FMX The Team license is suitable for 2-4 developers and includes Build server license. The offer is valid for a new purchase only. Discount doesn’t apply to subscription renewals and upgrades. ### Blogs URL: https://www.fast-report.com/blogs Summary: Read our articles for helpful tips and expert advice on how to improve your reporting processes. August 03, 2026 #.NET #Export #FastReport #Report #Printing How to Export a Report from FastReport .NET to PostScript FastReport .NET supports exporting reports to many popular formats, such as PDF, Excel, Word, and others. However, professional printing, plotters, and specialized printing equipment often require the PostScript (.ps) format. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. Read more July 10, 2026 #.NET #FastReport #WebReport #HTML #CSS How to configure Content Security Policy for FastReport .NET WEB reports Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions of FastReport .NET WEB, the architecture of the client-side has been significantly reworked, which simplifies compliance with a strict CSP without losing report functionality. In this article, we will examine how to properly configure CSP for FastReport reports and take into account typical risks. Read more June 22, 2026 #.NET #FastReport #Data Source #Designer #C# #Preview How to Configure a Report with Business Objects in Code and the FastReport .NET Designer FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects (Category → Products). Read more May 20, 2026 #VCL #FastReport #FastGrid Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. Read more April 28, 2026 #VCL #FastReport #Designer #Delphi #Customization New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Read more April 21, 2026 #VCL #FastReport #PDF #Designer #Preview #Delphi #Word #HTML Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. Read more April 08, 2026 #.NET #FastReport #Designer #Customization New Banding Capabilities in the FastReport .NET Designer When creating reports, it's not just the data content that's important, but also the ease of use of its structure. Bands are the foundation of report design, and their arrangement directly influences the logic of information display. Previously, changing the order of bands was done through the Configure Bands window, which wasn't always convenient and required additional steps. The latest version of FastReport .NET now allows you to change the order of bands directly in the designer—with a simple drag-and-drop operation. Read more April 07, 2026 #.NET #FastReport #Plugin #Web Storage How To Connect a Plugin to Google Sheets in FastReport .NET Google Sheets is a cloud-based spreadsheet application. Like Microsoft Excel, Google Sheets can be used as a data source for reports. However, unlike desktop solutions, it's a web application, so connecting to it requires some specific setup. In this article, we'll cover how to get started with Google Sheets in FastReport .NET. Read more ### Building libgdiplus library from source URL: https://www.fast-report.com/blogs/Building-libgdiplus-library-from-source Summary: Fixing the word wrap and incorrect spacing errors in Linux by building the libgdiplus library and bug System.OutOfMemoryException: Not enough memory to complete operation [GDI+ status: OutOfMemory] Fixing the word wrap and incorrect spacing errors in Linux by building the libgdiplus library and bug System.OutOfMemoryException: Not enough memory to complete operation [GDI+ status: OutOfMemory] Fixing the word wrap and incorrect spacing errors in Linux by building the libgdiplus library and bug System.OutOfMemoryException: Not enough memory to complete operation [GDI+ status: OutOfMemory] When using the FastReport.NET (Core) , FastReport Open Source and FastReport Mono libraries on Linux operating system, as well as when saving documents as images or PDF files, there is a possibility to experience the incorrect display of Unicode texts in the report preview. One of the most common problems is a hyphenation error and, as a result, incorrect spacing between words. For example, when using Thai language on Windows OS, we see the following text: When running the same report on Linux Ubuntu, the following line is formatted incorrectly: There may also be problems with the word wrap. Let’s look at another example with Thai on Windows operating system: The same text is displayed incorrectly in Linux Ubuntu operating system: Such text display errors can be observed in other languages. It is also possible that the following error will occur: ``` System.OutOfMemoryException: Not enough memory to complete operation [GDI+ status: OutOfMemory] ``` Fortunately, there is a solution – lingdiplus library self-assembly from source with Pango. Before starting, it is highly recommended to make a backup copy of the /usr/lib/libgdiplus*.* files, as they will be overwritten with the new ones in the process of building the library. In this case, you can return the system to its original state if the desired result has not been achieved. In the first step, we need to install the required dependencies using the command: ``` $ sudo apt-get install libgif-dev autoconf libtool automake build-essential gettext libglib2.0-dev libcairo2-dev libtiff-dev libexif-dev libpango1.0-dev ``` Then we need to make a copy of the needed libgdiplus library from the GitHub repository:  ``` $ git clone https://github.com/mono/libgdiplus.git ``` After that, go to the libgdiplus folder and execute the build commands: ``` $ ./autogen.sh --with-pango --prefix=/usr $ make ``` If the build was successful and there are no errors, then you can install the built library: ``` $ sudo make install ``` The files will replace the old ones in the /usr/lib folder. Now you can run the program with reports and make sure it works correctly. For example, you can see how FastReport Mono works under Linux Ubuntu 18.04: All of the above is also true for web applications using the .NET Core and Mono frameworks. I wish you the best of luck and less problems with cross-platform programs! Tags: .NET, .NET, Mono, Mono, FastReport, FastReport, Linux, Linux, Core, Core, Open Source, Open Source, Libgdiplus, Libgdiplus ### Business Graphics .NET URL: https://www.fast-report.com/products/business-graphics-net Summary: Data visualization library for .NET Framework 4.6.2 and .NET 6-8 Data visualization library for .NET Framework 4.6.2 and .NET 6-8 With FastReport Business Graphics library you can visualize different hierarchical data, build business diagrams for further analysis and decision-making FastReport Business Graphics .NET Data visualization library for .NET Framework 4.6.2 and .NET 6-8 Buy Ultimate .NET Try for free Documentation ## With FastReport Business Graphics library you can visualize different hierarchical data, build business diagrams for further analysis and decision-making. All this can work directly in your application! Data Ability to use hierarchical data from the application, including those prepared in FastCube .NET The standard set of FastReport Business Graphics includes two classes providing  data presentation for hierarchical charts . The Children field builds hierarchical interrelations between the records. You may indicate which data elements should be used as tags for elements , values, or child records. You may build a hierarchical structure based on table sources. A collection with the names of fields and the order of nesting can be set. Additionally, you may set the limit of dipping by hierarchy.  Some charts, like  Sunburst , may display the root element. Interactivity When static reports are not enough, the FastReport Business Graphics charts provide excellent interactive opportunities. Allow the client  to immerse into data as deeply , as needed for the decision making and to ascend to the high level of abstraction. Most of the chart zones can interact with the user at a mouse click, with the ability to return to the previous image. When pointing at the necessary zone, an information text will appear; a mouse click will change the color or the hatching. You may add implementations of your own handlers of reactions in the interactive zones. Visualization Helps to make an informed decision with better data visualization. Reliable support in decision making by presenting even the most complicated information in an easily readable form. Visual dashboards help to estimate the status of processes and systems at a glance, instantly provide insight into the existing trends and tendencies. FastReport Business Graphics allows using different color palettes  to shade different levels of data presentation. Make information perception easier by adding hatch to parts of the charts or creating recognizable gradients. The freedom of choosing color solutions enables to create charts for thematic applications or customize the existing palettes by setting customer values. Choose a variant of shading: solid color, gradient, or hatch. The available options include changing the font, border around the text, width and color of the chart border. Integration A complementary element of the infrastructure: perfect integration with the OLAP operational data analysis library, the FastCube .NET cube. The ecosystem Fast Reports for introducing Business Intelligence into your applications. Preparing hierarchical data at FastCube .NET Operative work and “woolly” analytics with the abundance of visual opportunities of FastReport Business Graphics Forming documents and reports with colorful charts at FastReport .NET  All the wealth of preparing documents. Ideal integration with the report generator  FastReport .NET and  OLAP-cube FastCube .NET with the plug-ins supplied as part of these products. FastReport Business Graphics currently allows export into the following graphical formats: BMP, PNG, JPEG, TIFF, GIF, EMF . Surely, you may add our interactive diagrams into your own products – it is their key appointment! System.Drawing (GDI+) The familiar System.Drawing with GDI+ graphics functions is used to create graphical elements, render text, and manage graphic images. Embeddability in projects Install the required package from the NuGet repository, or download the package from our website to your computer and add the necessary libraries to the project. No additional modules or special extensions are required. Ultimate .NET Learn more about Ultimate .NET Buy Business Graphics .NET Currently, work with WinForms and applications is supported .NET Framework 4.6.2 and higher. What is a Bubble Chart? Taking a deep dive into a new tool for graphic data visualization - a Bubble Chart - and what are the algorithms for forming it. Taking a deep dive into a new tool for graphic data visualization - a Bubble Chart - and what are the algorithms for forming it. Installing FastReport Business Graphics into FastReport .NET Step-by-step instructions for installing FastReport Business Graphics in FastReport.NET when used as part of Designer or your project. Step-by-step instructions for installing FastReport Business Graphics in FastReport.NET when used as part of Designer or your project. How to use Gantt charts in FastReport Business Graphics We will figure out what is it a Gantt chart in FastReport BusinessGraphics. We’ll also learn about functional features and create our diagram from scratch. We will figure out what is it a Gantt chart in FastReport BusinessGraphics. We’ll also learn about functional features and create our diagram from scratch. Any other questions? Contact the manager ### Buy FastReport - Get FastCube for free URL: https://www.fast-report.com/news/fastcube-for-free Summary: With every purchase of report generator FastReport before January 1, 2022 we offer FastCube as a gift. With every purchase of report generator FastReport before January 1, 2022 we offer FastCube as a gift. With every purchase of report generator FastReport before January 1, 2022 we offer FastCube as a gift! Create an infrastructure for your data analysis by completing your document creating engine with a multidimensional data analysis library of the same platform: FastReport .NET + FastCube .NET FastReport VCL + FastCube VCL FastReport FMX + FastCube FMX FastCube will be automatically added to your product list after the purchase of FastReport. You can check its availability in your customer panel. Offer is valid for a full price purchase only and does not apply to a subscription renewal or an upgrade. Buy FastReport ### Celebrate With Us – Enjoy a Discount! URL: https://www.fast-report.com/news/our-birthday-20 Summary: To mark our company’s anniversary, we’re offering a 20% discount on all editions of FastReport VCL, FastReport .NET, and FastReport Desktop! To mark our company’s anniversary, we’re offering a 20% discount on all editions of FastReport VCL, FastReport .NET, and FastReport Desktop! To mark our company’s anniversary, we’re offering a 20% discount on all editions of FastReport VCL, FastReport .NET, and FastReport Desktop! FastReport VCL – reporting solution for Delphi/C++Builder FastReport .NET – reporting solution for the .NET platform FastReport Desktop – a ready-to-use report generator that requires no programming This offer is valid until August 31, 2025 (inclusive) and applies to new purchases only (not license renewals). If you’ve been planning to purchase or upgrade our products — now is a great time to do it and save. Don’t miss the chance to celebrate with us — treat yourself to a great deal! ### Change in prices for Brazil starting January 1, 2022 URL: https://www.fast-report.com/news/change-in-prices-for-Brazil Summary: Change in prices for Brazil starting January 1, 2022 Change in prices for Brazil starting January 1, 2022 All Fast Reports products in Brazil will be available for a higher price starting January 1, 2022. All the prices will remain in Brazilian reals. We accept and encourage to make orders using Boleto Bancário. Make sure to purchase for the old price till the end of the year. Starting January 1 it will no longer be possible. ### Changes to the FastCube .NET License Agreement and Terms of Use URL: https://www.fast-report.com/news/fastcube-new-eula Summary: New license agreement for FastCube .NET will come into effect at September 30, 2024 New license agreement for FastCube .NET will come into effect at September 30, 2024 We would like to inform you about changes to the agreement on use and distribution for .NET products. The changes affected paragraph 1.5: a list of dll and xml was added that the User and/or End User have the right to use as part of the KPO. You can read the changes at  this link . The changes come into effect on September 30, 2024. We would also like to inform FastCube .NET license holders that the product will be transitioning to a subscription licensing model starting September 30. Technical support and updates for previously purchased licenses for this product will no longer be available. The transition to a subscription license means that the license is valid for 12 months from the date of purchase. During this period, you receive technical support and updates. After this period, to continue receiving updates and support, you can renew it for 50% of the full cost (the discount is valid for 1 month after the license expires). We will be happy to answer questions by email at support@fast-report.com ### Charts in FastReport Mono URL: https://www.fast-report.com/blogs/charts-fastreport-mono Summary: Let's take a closer look at how diagrams work in FastReport Mono. Find more usefull tips and articles in our blog. Let's take a closer look at how diagrams work in FastReport Mono. Find more usefull tips and articles in our blog. Let's take a closer look at how diagrams work in FastReport Mono. Find more usefull tips and articles in our blog. Take the following steps to use charts in the report: Add reference to System.Windows.Forms.DataVisualization.dll in your project Add to project files from FastReport.Mono/Chart Enable charts in  FastReport.Mono/AssemblyInitializer.cs Activate charts in FastReport.Mono/Design/ImportPlugins/ComponentsFactory.cs Registration: --- FastReport.Mono/AssemblyInitializer.cs (revision 102) +++ FastReport.Mono/AssemblyInitializer.cs (working copy) @@ -22,6 +22,7 @@ using FastReport.Design; using FastReport.Functions; using FastReport.Export.OoXML; +using FastReport.MSChart; namespace FastReport { @@ -126,6 +127,8 @@ RegisteredObjects.Add(typeof(ShapeObject), "ReportPage,Shapes", 131, "Objects,Shapes,Diamond", 4); RegisteredObjects.Add(typeof(SubreportObject), "ReportPage", 104); #if! Basic + RegisteredObjects.Add(typeof(MSChartObject), "ReportPage", 125); + RegisteredObjects.Add(typeof(MSChartSeries), "", 130); RegisteredObjects.Add(typeof(TableObject), "ReportPage", 127); RegisteredObjects.Add(typeof(TableColumn), "", 215); RegisteredObjects.Add(typeof(TableRow), "", 216); --- FastReport.Mono/Design/ImportPlugins/ComponentsFactory.cs (revision 102) +++ FastReport.Mono/Design/ImportPlugins/ComponentsFactory.cs (working copy) @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Text; -//using FastReport.MSChart; +using FastReport.MSChart; using FastReport.Table; using FastReport.Matrix; @@ -169,13 +169,13 @@ // /// The name of the MSChartObject instance. // /// The parent of the MSChartObject instance. // /// The MSChartObject instance. -// public static MSChartObject CreateMSChartObject(string name, Base parent) -// { -// MSChartObject chart = new MSChartObject(); -// chart.Name = name; -// chart.Parent = parent; -// return chart; -// } + public static MSChartObject CreateMSChartObject(string name, Base parent) + { + MSChartObject chart = new MSChartObject(); + chart.Name = name; + chart.Parent = parent; + return chart; + } Then the project should be reassembled so that the changes take effect. The chart report template is shown below. Файл шаблона отчёта с чартами ```   ``` Enjoy Tags: Mono, FastReport ### Christmas sale on FastReport VCL and FastReport .NET URL: https://www.fast-report.com/news/happy-holidays-2023 Summary: Discount calendar for FastReport VCL and FastReport document generators .NET Single of all editions. Have time to buy with the greatest benefit! Discount calendar for FastReport VCL and FastReport document generators .NET Single of all editions. Have time to buy with the greatest benefit! Grab the best offer before it expires!  Christmas sale season on FastReport VCL and FastReport .NET Single reporting library of all editions! Days of the promotion: -30% on December 12 - 14 -20% on December 15 - 19 -10% on December 20 - 26 Offer is valid for a full price purchase only and does not apply to a subscription renewal or an upgrade. BUY NOW! ### Client Assistant URL: https://www.fast-report.com/buy Summary: We offer proven solutions for creating reports and documentation of any complexity. Choose reliable products that allow you to quickly create high-quality reports that meet your requirements. Optimize your workflow and improve your business efficiency with Fast Reports. Client Assistant .NET JavaScript Delphi/Pascal Desktop Cloud Server Ultimate .NET WEB Avalonia WinForms WPF Mono from $1,499 from $799 from $599 from $499 from $499 from $499 Buy Buy Buy Buy Buy Buy FastReport Engine Report Engine Demo Application Bands Code based XML report templates .NET Platform .NET 4.6.2-4.8.1 .NET 6 .NET 7 .NET 8 .NET 9 .NET 10 Mono WEB components Web reporting WebForms WCF ASP.NET MVC ASP.NET Core ASP.NET Web API 2 ASP.NET Core MVC Razor Pages Blazor Server Blazor WebAssembly (WASM) FastCube OLAP WinForms components Reporting components Report Viewer Runtime Report Designer FastCube OLAP Icicle Treemap Bubble Sunburst Gantt Avalonia components Reporting components Report Viewer Runtime Report Designer WPF components Reporting components Report Viewer Runtime Report Designer Mono components Reporting components Report Viewer Runtime Report Designer FastCube OLAP Online Designer FastReport.Core.Skia FastReport.Drawing (Skia) System.Drawing (GDI) IDE Microsoft Visual Studio Visual Studio Code Visual Studio for Mac Embarcadero Delphi Prism MonoDevelop (Linux) JetBrains Rider Operation System Microsoft Windows Apple macOS Linux Report script languages C# VB.NET Report script engine CodeDOM Roslyn FastScript .NET Data connections Apache Cassandra ClickHouse Couchbase CSV Elastic Search Firebird Google BigQuery IBM DB2 JSON MongoDB MS Access MS SQL MySQL NosDB ODBC OLE DB Oracle Oracle ODP PostgreSQL RavenDB Sharepoint SqlAnywhere SqlCe SQLite VistaDB XML Internal application datasets In-Memory Custom connections Reporting features Dialogue forms Report inheritance Master-detail-subdetail Drill-downs Groupping Sorting Headers and Footers URLs and hrefs HTML tags in text object Unlimited page sizes Preview component Design-time visual report designer Run-time visual report designer High DPI support Visual SQL Builder Localization languages 29 29 29 29 29 29 Report objects 2D barcode Advanced Matrix (AdvMatrix) Barcode Cellular Chart Checkbox Container Cross-tab (Matrix) Digital signature Gauge Gradient HTML Map Picture RFID Rich Text Shape Sparkline Sub-report SVG System text Table Text Zip code Barcodes ANSI Aztec Codabar Code 11 Code 27 Code 128 (A, B, C) Code 16K Code32 Code 25 (Industrial, Interleaved, Matrix) Code 39 (Extended) Code 93 (Extended) Data Matrix Deutsche Post Identcode Deutsche Post Leitcode EAN 13 EAN 128 EAN+2 EAN+5 EAN 14 EAN 8 ITF-14 GS1 DataMatrix GS1 8 GS1 12 GS1 128 GS1 Expanded GS1 Expanded Stacked GS1Stacked GS1 Omnidirectional GS1 DataBar RSS-14 Maxicode MSI PDF417 Pharmacode Plessey Postnet QRCode QR code ECI Swiss QR UPCA UPCE (0, 1) Intelligent Mail Japan Post 4-state Charts Bar Stacked Bar 100% Stacked Bar Column Stacked Column 100% Stacked Column Area Spline Area Stacked Area 100% Stacked Area Line Fast Line Step Line Spline Bubble Point Fast Point Pie Doughnut Polar Radar Stock Candlestick Kagi Renko Point & Figure Three Line Break Pyramid Funnel Range Spline Range Range Column Range Bar Printing Print to different printer trays Dot-matrix printer support Advanced printing modes Print via web browser Print via PDF Export in formats PDF PDF/A PDF/X Images Jpeg/PNG/BMP/GIF/TIFF/EMF SVG Rich Text Word OOXML (docx) PowerPoint OOXML (pptx) HTML HTML5 (layered) MHT (web archive) Microsoft XPS Excel XML Excel binary (biff8 xls) Excel OOXML (xlsx) PostScript PPML LaTeX DXF ZPL JSON CSV DBF (table) Plain Text Open Document Speadsheet (OpenOffice) Open Document Text (OpenOffice) XAML Transports Email FTP DropBox Box Google Drive OneDrive S3 FastReport Cloud Convertors from List&Label DevExpress Microsoft Reporting Services (RDL, RDLC) Crystal Reports StimulSoft Jasper Library Plugins Business Graphics Integration Cube Integration Html View Object Import from Microsoft Word ActiveQueryBuilder RTF2FRX Converter Crystal Import TeeChartObject WebP plugin Custom plugin support Support Online helpdesk Online chat E-mail Phone Source Code Ultimate .NET Ultimate VCL WEB Online Designer from $1,499 from $1,299 from $799 from $299 Buy Buy Buy Buy FastReport Engine Report Engine Demo Application Bands Code based XML report templates .NET Platform .NET 4.6.2-4.8.1 .NET 6 .NET 7 .NET 8 .NET 9 .NET 10 Mono WEB components Web reporting WebForms WCF ASP.NET MVC ASP.NET Core ASP.NET Web API 2 ASP.NET Core MVC Razor Pages Blazor Server Blazor WebAssembly (WASM) WinForms components Reporting components Report Viewer Runtime Report Designer FastCube OLAP Icicle Treemap Bubble Sunburst Gantt WPF components Reporting components Report Viewer Runtime Report Designer Mono components Reporting components Report Viewer Runtime Report Designer FastCube OLAP VCL components Core Core UI AdvancedMemo FastQueryBuilder FastScript FastReport ClientServer Transports FastCube FastEditors FastGrid FMX components Core FastScript FastReport FastCube Lazarus components Core Core UI AdvancedMemo FastQueryBuilder FastScript FastReport ClientServer FastCube FastEditors FastGrid Online Designer React Jquery Webpack IDE Microsoft Visual Studio Visual Studio Code Visual Studio for Mac Embarcadero Delphi Prism MonoDevelop (Linux) JetBrains Rider Embarcadero RAD Studio 2010 Embarcadero RAD Studio XE Embarcadero RAD Studio XE2-XE8 Embarcadero RAD Studio 10 Seattle Embarcadero RAD Studio 10.1 Berlin Embarcadero RAD Studio 10.2 Tokyo Embarcadero RAD Studio 10.3 Rio Embarcadero RAD Studio 10.4 Sydney Embarcadero RAD Studio 11 Alexandria Embarcadero RAD Studio 12 Athens Embarcadero RAD Studio 13 Florence Lazarus Operation System Microsoft Windows Apple macOS Linux Report script languages C# VB.NET Pascal Script C++ Script J Script VB Script Report script engine CodeDOM Roslyn CodeMirror FastScript .NET Data connections Apache Cassandra ClickHouse Couchbase CSV Elastic Search Firebird Google BigQuery IBM DB2 JSON MongoDB MS Access MS SQL MySQL NosDB ODBC OLE DB Oracle Oracle ODP PostgreSQL RavenDB Sharepoint SqlAnywhere SqlCe SQLite VistaDB XML Internal application datasets In-Memory Custom connections ADO BDE Client Data Set DBX FIB FireDAC IBO IBX Lazarus DBF Lazarus SQLite Reporting features Dialogue forms Report inheritance Master-detail-subdetail Drill-downs Groupping Sorting Headers and Footers URLs and hrefs HTML tags in text object Unlimited page sizes Preview component Design-time visual report designer Run-time visual report designer High DPI support Visual SQL Builder RTL mirror mode Localization languages 29 33 29 29 Report objects 2D barcode Advanced Matrix (AdvMatrix) Barcode Cellular Chart Checkbox Container Cross-tab (Matrix) Digital signature Gauge Gradient HTML Map Picture RFID Rich Text Shape Sparkline Sub-report SVG System text Table Text Zip code PDFView Barcodes ANSI Aztec Codabar Code 11 Code 27 Code 128 (A, B, C) Code 16K Code32 Code 25 (Industrial, Interleaved, Matrix) Code 39 (Extended) Code 93 (Extended) Data Matrix Deutsche Post Identcode Deutsche Post Leitcode EAN 13 EAN 128 EAN+2 EAN+5 EAN 14 EAN 8 ITF-14 GS1 DataMatrix GS1 8 GS1 12 GS1 128 GS1 Expanded GS1 Expanded Stacked GS1Stacked GS1 Omnidirectional GS1 DataBar RSS-14 Maxicode MSI PDF417 Pharmacode Plessey Postnet QRCode Swiss QR UPCA UPCE (0, 1) Intelligent Mail Japan Post 4-state Charts Bar Stacked Bar 100% Stacked Bar Column Stacked Column 100% Stacked Column Area Spline Area Stacked Area 100% Stacked Area Line Fast Line Step Line Spline Bubble Point Fast Point Pie Doughnut Polar Radar Stock Candlestick Kagi Renko Point & Figure Three Line Break Pyramid Funnel Range Spline Range Range Column Range Bar TeeChart Lazarus TAChart Printing Print to different printer trays Dot-matrix printer support Advanced printing modes Print via web browser Print via PDF Export in formats PDF PDF/A PDF/X Images Jpeg/PNG/BMP/GIF/TIFF/EMF SVG Rich Text Word OOXML (docx) PowerPoint OOXML (pptx) HTML HTML5 (layered) MHT (web archive) Microsoft XPS Excel OLE Excel XML Excel binary (biff8 xls) Excel OOXML (xlsx) PostScript PPML LaTeX DXF ZPL JSON CSV DBF (table) Plain Text Open Document Speadsheet (OpenOffice) Open Document Text (OpenOffice) XAML Transports Email FTP DropBox Box Google Drive OneDrive S3 FastReport Cloud Next Cloud Outlook Gmail Convertors from List&Label DevExpress Microsoft Reporting Services (RDL, RDLC) Crystal Reports StimulSoft Jasper Library Quick Report Report Builder Rave Reports Plugins Business Graphics Integration Cube Integration Html View Object ActiveQueryBuilder Crystal Import RTF2FRX Converter TeeChartObject Import from Microsoft Word WebP plugin Code Editor Guides Position block Ruler Resize band horizontally Hotkey Context menu Dblclick FastConverter .FP3 Custom plugin support Support Online helpdesk Online chat E-mail Phone Source Code Ultimate VCL Optimum VCL Reporting VCL Reporting FMX Reporting Lazarus Analysis VCL from $1,299 from $899 from $499 from $499 from $499 from $399 Buy Buy Buy Buy Buy Buy FastReport Engine Report Engine Bands Code based XML report templates Demo Application VCL components Core Core UI AdvancedMemo FastQueryBuilder FastScript FastReport ClientServer Transports FastCube FastEditors FastGrid FMX components Core FastScript FastReport FastCube Lazarus components Core Core UI AdvancedMemo FastQueryBuilder FastScript FastReport ClientServer FastCube FastEditors FastGrid Online Designer OLAP features Unlimited number of indicators Final value Vertical dimension headers Horizontal dimension headers Creating additional totals Summary Editor Calculate totals on totals Total position Convolution and unfolding operations Data region Data Axis Drill down to the source data Rotating a multidimensional data array Transposing a cross-table Interactive list of fields Filtering rows and columns Custom filters Range Editor Sorting by axis values Sorting by the results of the indicator Sorting by active row/column Formation of user groups Formatting data Rule for data allocation Custom rules for data allocation Two-color and three-color scale for indicators Histogram inside cells A set of icons next to the indicator value Highlighting only the matching cells Expression Editor Script support Creating a data representation scheme Cross-chart Working with the clipboard Calculated metrics and filters Output of indicators as a value, percentage or rank OLAP aggregation functions Sum Count Minimum Maximum Average Multiplication Variance Std Dev VarianceS Std DevS First value Last value List of values Median Weighted arithmetic mean Calculation Calculation (detail) IDE Embarcadero RAD Studio 2010 Embarcadero RAD Studio XE Embarcadero RAD Studio XE2-XE8 Embarcadero RAD Studio 10 Seattle Embarcadero RAD Studio 10.1 Berlin Embarcadero RAD Studio 10.2 Tokyo Embarcadero RAD Studio 10.3 Rio Embarcadero RAD Studio 10.4 Sydney Embarcadero RAD Studio 11 Alexandria Embarcadero RAD Studio 12 Athens Embarcadero RAD Studio 13 Florence Lazarus Graphic core requirements GDI GDI+ D2D Quarz GTK Metal Operation System Microsoft Windows Apple macOS Linux Script languages Pascal Script C++ Script J Script VB Script Data connections ADO BDE Client Data Set DBX FIB FireDAC IBO IBX Lazarus DBF Lazarus SQLite Reporting features Dialogue forms Report inheritance Master-detail-subdetail Drill-downs Groupping Filtering Headers and Footers URLs and hrefs HTML tags in text object Unlimited page sizes Preview component Design-time visual report designer Run-time visual report designer High DPI support Visual SQL Builder RTL mirror mode Localization languages 33 33 33 33 33 33 Report objects 2D barcode Barcode Cellular OLE Chart Checkbox Cross-tab (Matrix) Digital signature Gauge Gradient HTML Map Picture Rich Text Shape Sub-report SVG System text Table Text Zip code Barcodes Aztec Codabar Code 11 Code 128 (A, B, C) Code 39 (Extended) Code 93 (Extended) Data Matrix Deutsche Post Identcode Deutsche Post Leitcode EAN 13 EAN 128 EAN+2 EAN+5 EAN 14 EAN 8 ITF-14 GS1 DataMatrix GS1 128 GS1 Expanded GS1 Expanded Stacked GS1Stacked GS1 DataBar RSS-14 Maxicode MSI PDF417 Pharmacode Plessey Postnet QRCode QR code ECI Swiss QR UPCA UPCE (0, 1) Intelligent Mail Charts TeeChart Lazarus TAChart Printing Print to different printer trays Dot-matrix printer support Advanced printing modes Print via web browser Print via PDF Export in formats PDF PDF/A Images Jpeg/PNG/BMP/GIF/TIFF/EMF SVG Rich Text Word OOXML (docx) PowerPoint OOXML (pptx) HTML HTML5 (layered) Excel OLE Excel XML Excel binary (biff8 xls) Excel OOXML (xlsx) PostScript PPML ZPL CSV Plain Text Open Document Speadsheet (OpenOffice) Open Document Text (OpenOffice) Support Online helpdesk Online chat E-mail Phone Source Code Convertors from Quick Report Report Builder Rave Reports Transports Email FTP DropBox Box Google Drive OneDrive Yandex Next Cloud Amazon S3 Outlook Gmail FastReport Desktop Professional FastReport Desktop Standard FastConverter .FP3 FastReport Viewer from $999 from $399 from $199 Buy Buy Buy Get Applications Graphical user interface Report Viewer Reporting components Runtime Report Designer Command Line Interface Scheduler Report manager Common interface FastReport Engine Report Engine Demo Application Bands Code based XML report templates Operation System Microsoft Windows Apple macOS Linux (x64, arm64) Report script languages C# VB.NET Data connections ClickHouse Couchbase CSV Firebird JSON MongoDB MS Access MS SQL MySQL ODBC OLE DB Oracle PostgreSQL RavenDB XML Reporting features Dialogue forms Report inheritance Master-detail-subdetail Drill-downs Groupping Sorting Headers and Footers URLs and hrefs HTML tags in text object Unlimited page sizes Preview component Design-time visual report designer Run-time visual report designer High DPI support Visual SQL Builder Report objects 2D barcode Advanced Matrix (AdvMatrix) Barcode Cellular Chart Checkbox Container Cross-tab (Matrix) Digital signature Gauge Gradient HTML Map Picture RFID Rich Text Shape Sparkline Sub-report SVG System text Table Text Zip code Barcodes ANSI Aztec Codabar Code 11 Code 27 Code 128 (A, B, C) Code 16K Code32 Code 25 (Industrial, Interleaved, Matrix) Code 39 (Extended) Code 93 (Extended) Data Matrix Deutsche Post Identcode Deutsche Post Leitcode EAN 13 EAN 128 EAN+2 EAN+5 EAN 14 EAN 8 ITF-14 GS1 DataMatrix GS1 8 GS1 12 GS1 128 GS1 Expanded GS1 Expanded Stacked GS1Stacked GS1 Omnidirectional GS1 DataBar RSS-14 Maxicode MSI PDF417 Pharmacode Plessey Postnet QRCode QR code ECI Swiss QR UPCA UPCE (0, 1) Intelligent Mail Japan Post 4-state Charts Bar Stacked Bar 100% Stacked Bar Column Stacked Column 100% Stacked Column Area Spline Area Stacked Area 100% Stacked Area Line Fast Line Step Line Spline Bubble PointFast Point Pie Doughnut Polar Radar Stock Candlestick Kagi Renko Point & Figure Three Line Break Pyramid Funnel Range Spline Range Range Column Range Bar Printing Print to different printer trays Dot-matrix printer support Advanced printing modes Print via web browser Print via PDF Export to formats PDF PDF/A PDF/X Images Jpeg/PNG/BMP/GIF/TIFF/EMF SVG Rich Text Word OOXML (docx) PowerPoint OOXML (pptx) HTML HTML5 (layered) MHT (web archive) Microsoft XPS Excel XML Excel binary (biff8 xls) Excel OOXML (xlsx) PostScript PPML LaTeX DXF ZPL JSON CSV DBF (table) Plain Text Open Document Speadsheet (OpenOffice) Open Document Text (OpenOffice) XAML Transports Email FTP DropBox Box Google Drive OneDrive S3 FastReport Cloud Convertors from List&Label DevExpress Microsoft Reporting Services (RDL, RDLC) Crystal Reports StimulSoft Jasper Library Distribution Windows Installation file DEB RPM Support Online helpdesk Online chat E-mail Phone FastReport Cloud Business FastReport Cloud Team FastReport Cloud Personal FastReport Cloud Free from $300 from $100 from $50 Buy Buy Buy Get Users 25 5 1 1 Template storage capacity (MB) 3750 1000 250 25 Report storage capacity (MB) 3750 1000 250 25 Export file storage capacity (MB) 7500 2000 500 50 Maximum weight of the uploaded file (MB) 200 150 100 10 Limit of data sources ∞ ∞ ∞ 1 User Group limit 10 5 1 1 Pages limit ∞ ∞ ∞ 5 Transports Email FTP Webhook Online template editor File Storage Report Templates Generated reports Storage by folders Hiding folders Exports from reports Recycle Bin History of changes SDK and Integration Haskell JavaScript C++ Python Java Go C#/.NET, ASP.NET REST API User rights Getting information Getting rights Editing Administration Deletion Downloading Groups Group Control Panel Simultaneous access to files Creating tasks Preparing the report Exporting a template Exporting a report Tasks-transports Adding a structure to a data source Formation of a public link Generating reports on a schedule Data security Two-factor authentication Open ID authentication File access control Digital signature of PDF documents File editing protection Data connections Connecting data sources using the API ClickHouse CSV Firebird JSON MongoDB MS SQL MySQL OraclePostgreSQL XML Reporting features Report inheritance Master-detail-subdetail Drill-downs Groupping Sorting Headers and Footers URLs and hrefs HTML tags in text object Unlimited page sizes Preview component High DPI support Report objects 2D barcode Advanced Matrix (AdvMatrix) Barcode Cellular Chart Checkbox Container Cross-tab (Matrix) Digital signature Gauge Gradient HTML Map Picture Rich Text Shape Sparkline Sub-report SVG System text Table Text Zip code Barcodes ANSI Aztec Codabar Code 11 Code 27 Code 128 (A, B, C) Code 16K Code32 Code 25 (Industrial, Interleaved, Matrix Code 39 (Extended) Code 93 (Extended) Data Matrix Deutsche Post Identcode Deutsche Post Leitcode EAN 13 EAN 128 EAN+2 EAN+5 EAN 14 EAN 8 ITF-14 GS1 DataMatrix GS1 8 GS1 12 GS1 128 GS1 Expanded GS1 Expanded Stacked GS1Stacked GS1 Omnidirectional GS1 DataBar RSS-14 Maxicode MSI PDF417 Pharmacode Plessey Postnet QRCode QR code ECI Swiss QR UPCA UPCE (0, 1) Intelligent Mail Japan Post 4-state Charts Bar Stacked Bar 100% Stacked Bar Column Stacked Column 100% Stacked Column Area Spline Area Stacked Area 100% Stacked Area Line Fast Line Step Line Spline Bubble Point Fast Point Pie Doughnut Polar Radar Stock Candlestick Kagi Renko Point & Figure Three Line Break Pyramid Funnel Range Spline Range Range Column Range Bar Printing Print via web browser Print via PDF Export in formats PDF PDF/A PDF/X Images Jpeg/PNG/BMP/GIF/TIFF/EMF SVG Rich Text Word OOXML (docx) PowerPoint OOXML (pptx) HTML HTML5 (layered) MHT (web archive) Microsoft XPS Excel XML Excel binary (biff8 xls) Excel OOXML (xlsx) PostScript PPML LaTeX DXF ZPL JSON CSV DBF (table) Plain Text Open Document Speadsheet (OpenOffice) Open Document Text (OpenOffice) XAML Support Online helpdesk Online chat E-mail Phone Fonts Space Limit 50 Mb 10 Mb 5 Mb 1 Mb Publisher Corporate Server from $1,990 from $9,650 Buy Get Users 15 ∞ Administrators 1 3 Workspaces 1 2 Limit of data sources 3 ∞ User Groups Online template editor Launching with Docker Web interface Rest interface (web api) Scheduler Run in Kubernetes Scalability Pages limit ∞ ∞ File Storage Report Templates Generated reports Storage by folders Hiding folders Exports from reports Recycle Bin History of changes SDK and Integration Haskell JavaScript C++ Python Java Go REST API C#/.NET, ASP.NET User rights Getting information Getting rights Editing Administration Deletion Downloading Groups Group Control Panel Simultaneous access to files Creating tasks Preparing the report Exporting a template Exporting a report Tasks-transports Adding a structure to a data source Formation of a public link Data security Open ID authentication File access control Digital signature of PDF documents File editing protection Data connections Connecting data sources using the API ClickHouse CSV Firebird JSON MongoDB MS SQL MySQL Oracle PostgreSQL XML Reporting features Report inheritance Master-detail-subdetail Drill-downs Groupping Sorting Headers and Footers URLs and hrefs HTML tags in text object Unlimited page sizes Preview component High DPI support Report objects 2D barcode Advanced Matrix (AdvMatrix) Barcode Cellular Chart Checkbox Container Cross-tab (Matrix) Digital signature Gauge Gradient HTML Map Picture Rich Text Shape Sparkline Sub-report SVG System text Table Text Zip code Barcodes ANSI Aztec Codabar Code 11 Code 27 Code 128 (A, B, C) Code 16K Code32 Code 25 (Industrial, Interleaved, Matrix Code 39 (Extended) Code 93 (Extended) Data Matrix Deutsche Post Identcode Deutsche Post Leitcode EAN 13 EAN 128 EAN+2 EAN+5 EAN 14 EAN 8 ITF-14 GS1 DataMatrix GS1 8 GS1 12 GS1 128 GS1 Expanded GS1 Expanded Stacked GS1Stacked GS1 Omnidirectional GS1 DataBar RSS-14 Maxicode MSI PDF417 Pharmacode Plessey Postnet QRCode QR code ECI Swiss QR UPCA UPCE (0, 1) Intelligent Mail Japan Post 4-state Charts Bar Stacked Bar 100% Stacked Bar Column Stacked Column 100% Stacked Column Area Spline Area Stacked Area 100% Stacked Area Line Fast Line Step Line Spline Bubble Point Fast Point Pie Doughnut Polar Radar Stock Candlestick Kagi Renko Point & Figure Three Line Break Pyramid Funnel Range Spline Range Range Column Range Bar Printing Print via web browser Print via PDF Export in formats PDF PDF/A PDF/X Images Jpeg/PNG/BMP/GIF/TIFF/EMF SVG Rich Text Word OOXML (docx) PowerPoint OOXML (pptx) HTML HTML5 (layered) MHT (web archive) Microsoft XPS Excel XML Excel binary (biff8 xls) Excel OOXML (xlsx) PostScript PPML LaTeX DXF ZPL JSON CSV DBF (table) Plain Text Open Document Speadsheet (OpenOffice) Open Document Text (OpenOffice) XAML Transports Email FTP Webhook Support Online helpdesk Online chat E-mail Phone Contact us If you have any questions or issues, please contact our support team . We are always ready to assist you. info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Cloud Services for Business: Advantages and Opportunities URL: https://www.fast-report.com/blogs/cloud-services-fo-business Summary: In this article, we will explore the main cloud services, their benefits, and their impact on business. In this article, we will explore the main cloud services, their benefits, and their impact on business. In recent years, cloud technologies have become an integral part of business. Companies of various sizes and industries are increasingly turning to cloud services to enhance the efficiency, flexibility, and security of their operations. In this article, we will explore the main cloud services, their benefits, and their impact on business. In recent years, cloud technologies have become an integral part of business. Companies of various sizes and industries are increasingly turning to cloud services to enhance the efficiency, flexibility, and security of their operations. In this article, we will explore the main cloud services, their benefits, and their impact on business. What are Cloud Services? Cloud services are resources and services provided over the Internet. They allow companies to utilize computing power, data storage, development platforms, and various applications without the need to purchase and maintain physical hardware.  Cloud services are divided into three main types: 1. Infrastructure as a Service (IaaS) — provides virtualized computing resources: servers, storage, and networks. 2. Platform as a Service (PaaS)  — offers a platform for developing, testing, and deploying applications. 3. Software as a Service (SaaS)  — provides access to software programs over the Internet without the need to install them on local devices. Who Benefits from Cloud Services Cloud services are suitable for any business—from sole proprietorships without employees and startups to government agencies and international corporations. During the pandemic, many companies had to transition to a remote work format and used “cloud” services for this purpose. As a result, companies were able to automate their operations and increase profits. Advantages of Cloud Services for Business 1. Cost Reduction Transitioning to cloud technologies allows companies to significantly reduce expenses related to IT infrastructure. Instead of investing in expensive hardware and its maintenance, organizations can utilize cloud solutions on a pay-as-you-go basis. 2. Flexibility and Scalability Cloud services enable easy scaling of resources according to business needs. This is especially important for companies experiencing rapid growth or facing seasonal fluctuations in demand. 3. Accessibility and Mobility Cloud solutions provide access to data and applications from anywhere in the world with an internet connection. This fosters more flexible work for employees, including the ability to work remotely and collaborate in real-time. 4. Security Modern cloud providers invest in advanced security technologies, ensuring the protection of data from loss and cyberattacks. Encryption, multi-factor authentication, and regular backups are just a few methods used to safeguard information. 5. Automatic Updates Cloud services offer automatic updates and enhancements, allowing companies to stay at the forefront of technology without the need for manual software update management. Popular Cloud Services Amazon Web Services (AWS) AWS offers a wide range of services, from hosting to machine learning. It is suitable for businesses of all sizes and is actively used by startups and large enterprises. Salesforce Salesforce is a leader in cloud-based CRM solutions. It helps companies manage customer interactions and automate sales processes. FastReport Cloud Is a cloud service (SaaS) designed for storing, editing, creating, and sending reports within a business, with access available from anywhere in the world for your entire team without the need to create your own application. Types of Cloud Services There are three types of cloud services: Private Public Hybrid A private cloud belongs to a single company and operates on its own equipment. It is used only by the employees of that company. All information remains internal, making it easier to control and protect. However, only large companies can afford a private cloud because it is expensive to use: it requires purchasing or renting equipment, along with managing and maintaining it. A public cloud is maintained by a provider, which rents out computing power to various clients. A business can purchase exactly the amount of resources it needs for operations and data storage. This is convenient and cost-effective. When we talk about the use of cloud services, we are most often referring to public clouds. A hybrid cloud occurs when part of the workload is in a public cloud while another part is in a private cloud or even on physical storage. This often happens during a company's gradual transition from traditional infrastructure to cloud-based services. Our Cloud Solution Generating reports and documents using FastReport Cloud will not only save your company time but also optimize workflows. Creating the necessary document template occurs in FastReport Online Designer . You can modify the appearance of the document in any browser without a constant internet connection. By using our Cloud for your business, you can easily transform your data into clear and stylized documents, apply formatting to any text, add barcodes, and much more. FastReport Cloud supports various ways to connect data from JSON, CSV, XML, MS SQL, PostgreSQL, MySQL, and Oracle . Additionally, you can group service users and assign them different access rights to workspace resources. Create teams of administrators, managers, designers, and developers for collaborative work. While one user group can create new documents, another group can generate PDF reports from templates. Conclusion Cloud services provide businesses with numerous opportunities to optimize operations and reduce costs. They are becoming a key element of digital transformation strategies, allowing companies to be more flexible and adapt to market changes. By investing in cloud technologies, businesses gain access to modern solutions that help achieve set goals and maintain a competitive advantage. Tags: Cloud, Web Storage ### CMYK in PDF export URL: https://www.fast-report.com/blogs/cmyk-in-pdf Summary: Looking at the principle of making color documents in the prinitng undystry using CMYK instead of RGB, since RGB printing may cause color inacuracies Looking at the principle of making color documents in the prinitng undystry using CMYK instead of RGB, since RGB printing may cause color inacuracies Looking at the principle of making color documents in the prinitng undystry using CMYK instead of RGB, since RGB printing may cause color inacuracies CMYK is a color model based on a synthesis of any color that is based on four basic colors: blue (the Cyan), purple (Magenta), yellow (Yellow), Black (Key Color). This model is mainly used in the printing industry. Reviewing CMYK, one more color model must be mentioned –RGB. The color model RGB consists of red (Red), green (Green), blue (blue) colors. These three colors are the basis to create other colors. This model is used in color television and computers. When should CMYK be used? It is necessary to have documents based on CMYK to be printed on a printer and documents which are based on RGB to be posted on the Internet. Let us consider the principle of printing color documents in polygraphy (printing). First, apply one color on paper. Wait until the ink is dry. Then apply another color and wait again. Modern printers allow you to print with RGB. It took a lot of years of evolution of printing equipment to have a modern way of printing. Nevertheless, CMYK is still a generally accepted standard for printed documents, because RGB printing may differ in coloring on different printers. So, CMYK is based on color imposition while printing. Please, look at the picture given below. According to the image, the imposition of cyan, magenta, and yellow gives us the secondary colors - green, blue, and red. CMYK refers to the subtractive synthesis. This means that the colors are subtracted from the basic. It is necessary to mention, that paper is considered to be a reflective surface in the printing industry. So, we apply some ink as if we subtract the reflected light. Therefore, from white paper, we subtract three basic colors RGB and get three secondary colors CMYK. Unlike the subtractive synthesis of color, the additive synthesis is based on “addition” instead of “subtracting”. RGB scheme is formed on the principle of adding colors. In contrast to polygraphy where the light is reflected from paper, computer monitors and televisions emit light. The surface which does not emit light is considered by a human eye as black. The white color is obtained by combining all three colors. An additive synthesis image may differ on monitors from different manufacturers. It takes place due to the difference in the color temperature of white color and in gamma correction. As a matter of fact, the basic RGB colors can be obtained from a larger number of colors. PDF documents support two color models, that is, it is possible to create documents aimed to be used in printing or web documents. This is because of the technology of color profiles ICC. Color profiles define the color input or color output devices and requirements for the appearance. The reports generator FastReport.Net allows you to export reports in PDF format with a choice of RGB or CMYK color scheme: By default, the RGB color scheme has been chosen. From the drop-down list you can select CMYK. Click “OK” and you will get a document that can be opened in typography and sent to print without any further processing. It should be mentioned that nowadays it is possible to attach a color profile to a PDF export. This can be done from the user application code. For example, a typical report export in PDF: ``` stringcurdir = Environment.CurrentDirectory.ToString(); Reportreport = newReport(); report.Load(curdir + @"\Lines.frx"); report.Prepare(); PDFExport export = newPDFExport(); export.ColorProfile = File.ReadAllBytes(curdir + @"\G1400_CWPM190_CW490_D50_PM.icm"); export.Export(report); ```  Here is a line which we are interested in the most: ``` export.ColorProfile = File.ReadAllBytes(curdir + @"\G1400_CWPM190_CW490_D50_PM.icm"); ```  Сolor profile must be added as a byte array. You can use your color profiles only if the format PDF / X-4 is selected as they are supported in it. Tags: .NET, Export, FastReport, PDF ### Code Gone Wrong: The Scariest Developer Tales URL: https://www.fast-report.com/news/halloween-2025 Summary: Code Gone Wrong: The Scariest Developer Tales. We've collected your stories about the scary situations that made your hair stand on end. Code Gone Wrong: The Scariest Developer Tales. We've collected your stories about the scary situations that made your hair stand on end. It's spooky season! We've collected your stories about the scary situations that made your hair stand on end. Story 1 It was Friday evening. I just wanted to test a small change, added two lines, and accidentally hit Publish instead of Build. Production updated instantly. Users, too, instantly started reporting bugs. I closed my laptop and pretended the internet didn’t exist anymore😅  Story 2 There was an old project with dozens of global variables. One of them controlled licensing. Nobody knew how. No documentation, just a comment: // Don’t touch. Ever. Someone renamed it “for readability.” The server never started again. No one could explain why. Story 3 The bug only happened on the client side, not ours. I enabled detailed logging to find out what was wrong. Got 12 gigabytes of logs. Not a single error message. Only my debug statements. And after enabling logging, the bug disappeared. Story 4 The morning after release, the server was on its knees. CPU usage — 100%. Turned out I’d written a recursive call that worked fine in tests with 10 records. Production had 50,000. Since then, I flinch every time I see the word foreach. Story 5 Every night, exactly at midnight, the app crashed. Turned out someone used DateTime.Now.DayOfYear as an array index with size 365. 🤦‍♂️🤦‍♂️ No one accounted for leap years.  Story 6 An intern ran: DELETE FROM Users WHERE id <> 1; Only he did it in production. And id = 1 belonged to the sysadmin.  Five minutes later, 300 employees no longer had accounts. Story 7 After a library update, everything worked flawlessly. No crashes, no errors. A week later, we found out the app had stopped saving data to the database. Hidden deep in the code: except   // ignore end; The developer who wrote it left years ago. But his spirit still haunts the codebase. Story 8 I commented out an old piece of code so it wouldn’t interfere. Months later, a colleague “cleaned up the project” and accidentally uncommented it. The code compiled. It worked. Except now, every time we print a report, the CD drive opens. ### CodeRage 2009 - from 8 to 11 September URL: https://www.fast-report.com/news/coderage-2009 Summary: CodeRage 2009 - from 8 to 11 September CodeRage 2009 - from 8 to 11 September Dear friends! We invite you vizit CodeRage 2009 - from 8 to 11 September. http://conferences.embarcadero.com/coderage Fast Reports will take part as a speaker and exhibitor http://conferences.embarcadero.com/coderage/sessions ### CodeRage 7 - Embarcadero online conference 10-12, Dec. URL: https://www.fast-report.com/news/online-conference-coderage-2012 Summary: CodeRage 7 - Embarcadero online conference for C++ developers CodeRage 7 - Embarcadero online conference for C++ developers CodeRage 7 - Embarcadero online conference for C++ developers in connection with 64 bit C++ Builder release.  Join to online conference CodeRage7 from 6am to 5 pm PST December 10-12 Embarcadero and company partners will present the latest developments for C++  All people can see the process of creation an application on life demos. Why you need participate in CodeRage? * In first day December 10. Bjarne Stroustrup (creator and developer C++ programming language) and David Intersimone will discuss about new C++11 standard and popularity C++ language in software market.  * Michael Philippenko CEO of Fast Reports Inc. will tell about reporting in C++ application for Windows and Mac OSX * Vsevolod Leonov will present migration ways from client-server architecture to Multitier architecture. ### CodeRage III Special Product Discount of Fast Reports URL: https://www.fast-report.com/news/discount-coderage-2009 Summary: CodeRage III Special Product Discount of Fast Reports CodeRage III Special Product Discount of Fast Reports As Prize Donor ( https://conferences.codegear.com/coderage08/prizes ) and exhibitor of CodeRage 2008 ( https://conferences.codegear.com/coderage08 ) we are offer Special Discount on Fast Reports products. You can save some coin with 20% off on your choice of Fast Reports products. Offer expires at 11:59pm on Friday, December 5, 2008 Special offer (5 days only!) FastReport.Net Win Forms and FastReport.Net WinForms+WebForm (for Delphi Prism) with 20% discount! ### Combine multiple reports into one URL: https://www.fast-report.com/blogs/combine-multiple-reports Summary: Let's take a closer look at how to combine multiple reports into one works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to combine multiple reports into one works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to combine multiple reports into one works in FastReport .NET. Find more usefull tips and articles in our blog. This article aims to establish a strategy to combine two or more reports into one by using the code of your application. This can be useful when you want to combine similar reports according to their category. To append a report to the previous one use the method Prepare of the Report object. It is necessary to provide value TRUE as a parameter of the method. Let us consider an example. Create an application WindowsForms. Add a reference to FastReport.dll library to the project. Then, add three buttons on the form: Report 1, Report 2, Combined report. Next, double click on the first button. Now we are using the library FastReport: ``` using FastReport; ```  Set the report's path: ``` string report_path = @"K:\MyDocuments\"; ```  Now add the code to the first button: ``` private void button1_Click(object sender, EventArgs e) { Report report1 = new Report(); Report1.Load(report_path + "report1.frx"); Report1.Prepare(); Report1.ShowPrepared(); } ```  Here, we have created a report instance, downloaded the report, prepared it and showed. The report template looks like this: Now double click on the second button: ``` private void button2_Click(object sender, EventArgs e) { Report report2 = new Report(); Report2.Load(report_path+"report2.frx"); Report2.Prepare(); Report2.ShowPrepared(); } ```  The procedure here is the same as with the first button. A report template is also similar: Add the code to the third button:      ``` private void button3_Click(object sender, EventArgs e) { Report report1 = new Report(); report1.Load(report_path + "report1.frx"); report1.Prepare(); report1.Load(report_path + "report2.frx"); report1.Prepare(true); report1.ShowPrepared(); } ``` As you can see, we have created a report object - report1. Then, we loaded the first report and prepared it. After that, we have loaded the second report and prepared it as well. In the last line of the code we have displayed the report object. Bring the line report1.Prepare(true) to notice. As a function parameter we provide the value TRUE. This means that the current report is joined to the previous one. Using this example you can consistently join any number of reports to each other. Let us start our application: If we click the Report 1 button, we get our first report:  Click the second button to see the second report: And finally, click the third button: In this case, we get a report of two pages. The first one displays the first report, the second one shows the second report. As can be seen from the above, the process of combining two reports into a single report does not present any difficulties and troubles. Tags: .NET, FastReport ### Compare licenses URL: https://www.fast-report.com/new-prices Summary: Pricing for the new licensing type Business Pricing for the new licensing type Business FastReport .NET Single Team Business Site Ultimate .NET $1,499 $4,499 $11,499 $22,499 WEB $799 $2,399 $6,299 $11,999 Avalonia $599 $1,799 $4,699 $8,999 WinForms $499 $1,499 $3,899 $7,499 WPF $499 $1,499 $3,899 $7,499 Mono $499 $1,499 $3,899 $7,499 FastReport VCL Single Team Business Site Ultimate VCL $1,299 $3,899 $9,999 $19,499 Optimum VCL $899 $2,699 $6,799 $13,499 Reporting VCL $499 $1,499 $3,799 $7,499 Reporting FMX $499 $1,499 $3,799 $7,499 Reporting Lazarus $499 $1,499 $3,799 $7,499 Analysis VCL $399 $1,199 $2,999 $5,999 Products Single Online Designer $299 FastConverter .FP3 $199 Desktop Standard Professional FastReport Desktop $399 $999 Cloud Monthly Yearly FastReport Cloud Personal $50 $480 FastReport Cloud Team $100 $960 FastReport Cloud Business $300 $2,880 ### Comparison of FastCube 2 VCL vs FMX URL: https://www.fast-report.com/fast-cube-vcl-fmx-compare Features FastCube 2 VCL FastCube FMX Data sources: relational database  (TDataSet) + + saved cube + + user data + + append data to a cube loaded from the data source and / or from a saved cube + + data scheme with multiple database table + + Data processing : type conversion during the load process + + automatic creation of Year, Month, Day of week, etc dimensions for Date and Time fields + + user dimensions + + grouping of dimension members + + simultaneous calculation of multiple measures + + measures built on dimensions + + calculated measures + (*) + (*) sort by measure value + + standard statistical functions for measures and totals + + additional totals + + instant grid transposition + + ranks + + Top N + + Data filtering: simultaneous filtering of several values + + simultaneous filters of sveral fields + + single value filter (radio filter) + + filter with dependency on other active filters + + central filter management for several slices + + Data representation: showing dimensions without active measures + + drill-up / drill-down of dimension members + + drill-though + + unlimited position of "Measures" field in the grid + + showing measure as percent by column / row + + tree like axes representation + + conditional data highlight (color, gradient, icon, bar-chart) + + hide of zero colimns / rows + + user formats for dimensions and measures + + automatic calculation of statistical functions for selected data + + charts + (**) + (**) Data save/export: own compact cube fromat (data + scheme + filters) using XML + + save scheme separately from the data + + export to Excel, HTML, ODT, XML + + export cube to DBF + + copy the selected cells to the clipboard + + generate reports + (***) + (***) Integration FastScript + + TeeChart/TAChart + + FastReport + + IDE support Delphi 7 – XE8, Lazarus 1.0+ Delphi XE4 - XE8 OS support Windows 32/64 + Mac OS X (only Lazarus) Windows 32/64 + Mac OS X * - only FastScript integration ** - only TeeChart / TAChart integration *** - only FastReport integration ### Comparison of FastCube VCL editions URL: https://www.fast-report.com/fast-cube-editions-compare Summary: fast cube editions compare fast cube editions compare Function FastCube VCL Embarcadero Edition FastCube VCL Standard         FastCube VCL Professional Relational database given as data source x x x Saved cube as data source x x x Ability to convert data type in boot process x x x Automatic creation of measurement year, month, day of week etc. based on fields of type Date x x x Simultaneous calculation of several indices x x x Ability to create user-based performance measurement x x x Mapping of measurements without indicators x x x Simultaneous Filtering of multiple values x x x Simultaneous Filtering on multiple fields x x x Detailing / minimizing measurement values x x x Itemized cell to original data - x x Sorting by value fact - x x Construction of calculated parameters - x(with FastScript) x(with FastScript) Aggregate functions x x x Change for field of facts axis location (in row, column) and level of axis x x x Display fact as percentage of column / row x x x Colorize data - x x Hide zero rows / columns - x x Create custom formats for measurements and facts - x x Saving of cube (data x scheme) x x x Saving schemas shown separately from cube x x x Export to Excel, HTML x x x Copy selected cells to clipboard - x x Diagram based on TeeChart x x x Report Printing (with FastReport) x x x Source Code - - x ### Comparison of FastReport .NET editions URL: https://www.fast-report.com/fast-report-net-editions-compare Summary: Comparison of FastReport .NET editions in one table Comparison of FastReport .NET editions in one table On June 1, Fast Reports Inc. switched to a new product generation system.   Standard     Professional    Enterprise   Ultimate  Online designer - - x x Source code - x x x .NET Core .NET Core /.NET 5 - .NET 8 support (Windows, Linux, macOS) x x x x Blazor Server support x x x x Blazor Webassembly support  - - x x ASP.NET components (WebReport) x x x x Save prepared reports to clouds x x x x Run-time report designer x x x x Report script x x x x In-report data sources x x x x In-report dialogue forms x x x x Export the prepared report to other formats x x x x Advanced report objects - Table, Matrix, AdvMatrix, Barcode, Charts, Maps, RichText, Checkbox, Zip code, CellularText x x x x Report objects - Text, Picture, Shape, Line, Subreport x x x x Windows Forms components x x x x Html View Object - - x x FastReport WPF included - - - x FastCube .NET included - - - x FastReport Business Graphics included - - - x FastReport Mono included - - - x ### Comparison of FastReport Cloud editions URL: https://www.fast-report.com/fast-report-cloud-editions Summary: Comparison of FastReport Cloud editions in one table Comparison of FastReport Cloud editions in one table Free Personal Team Business  Access to Online Designer x x x x  Templates Space Limit (Mb) 25 250 1000 3750  Reports Space Limit (Mb) 25 250 1000 3750  Exports Space Limit (Mb) 50 500 2000 7500  File Upload Size Limit (Mb) 10 100 150 200  Data source Limit 1 10 15 30 Groups limit 1 1 2 10 User slots limit 1 1 4 15 Page limit 5 Unlimited Pages - x x x  Tasks for building a report x x x x  Tasks for sending the report - x x x  Task Scheduler - x x x  Subscription period in read-only mode 1 week 1 month 2 months 3 months  Maximum time to build a report 15 minutes 15 minutes 15 minutes 15 minutes  Limit of allocated RAM (Mb) 600 2000 4000 8000  Dedicated report generation queue - x x x ### Comparison of FastReport Designers URL: https://www.fast-report.com/designers-comparison Summary: Comparison of FastReport Designers Comparison of FastReport Designers Feature Desktop .NET Desktop Mono Community Edition Desktop VCL Desktop FMX Desktop Lazarus Online Designer Application type Application in web browser ✓ Standalone application ✓ ✓ Execute from code ✓ ✓ ✓ ✓ ✓ Platform targeting WinForms ✓ ✓ CoreWin ✓ ASP.NET ✓ ASP.NET MVC ✓ ASP.NET MVC Core ✓ ✓ ASP.NET Mono ✓ Blazor Server ✓ VCL ✓ FMX ✓ Lazarus LCL ✓ Operating System Windows ✓ ✓ ✓ ✓ ✓ ✓ Linux ✓ ✓ ✓ macOS ✓ ✓ Web browser (JS/HTML5 xplat webapp) ✓ Report generator targeting FastReport .NET WinForms ✓ FastReport Mono WinForms ✓ FastReport .NET CoreWin ✓ FastReport .NET WebReport ✓ FastReport Mono WebReport ✓ FastReport .NET WebReport Core ✓ FastReport .NET WebReport Blazor ✓ FastReport OpenSource Core ✓ FastReport Open Source WebReport ✓ ✓ FastReport VCL ✓ FastReport FMX ✓ FastReport for Lazarus ✓ Reporting features Plugins ✓ ✓ ✓ Localizations ✓ ✓ ✓ ✓ ✓ ✓ Dialogs ✓ ✓ ✓ ✓ ✓ * Data connectors ✓ ✓ ✓ ✓ ✓ ✓ * Application data ✓ ✓ ✓ ✓ ✓ ✓ Script editor ✓ ✓ ✓ ✓ ✓ ✓ ✓ Charts ✓ ✓ ✓ ✓ ✓ ✓ Maps ✓ ✓ ✓ ✓ ✓ ✓ * limited support, under construction ** not supported, but planned for development ### Comparison of FastReport VCL Editions URL: https://www.fast-report.com/report-for-delphi-fastreport-feature-matrix Summary: FastReport VCL has four editions with differing features and pricing. FastReport VCL has four editions with differing features and pricing. Embarcadero RAD Edition This edition is distributed with Embarcadero RAD Studio. Standard Edition Dialog designer displayed in the process of building the report, built-in script shell that supports 4 languages: PascalScript, C++ Script, BasicScript and Jscript and allows you to control the logic of reports building, the end-user report designer. Professional Edition All the features of our FastReport VCL Standard Edition the Professional Edition and a little bit more. A built-in SQL query builder, which allows you to create complex queries without the need to learn subtleties of SQL language. Full source code for the report generator, which allows you to thoroughly understand the reporting logic and to make any minor adjustments you may require. Enterprise Edition This edition goes beyond the common standards of today’s reporting software. Distance no longer matters! In addition to all the advantages of FastReport VCL Professional Edition, this edition includes web-reporting components. Ultimate Edition  NEW For those who need more. On top of all capabilities of the Enterprise, in Ultimate we added a full set of tools for creating and supporting the reporting system infrastructure. It includes FastReport VCL Enterprise, FastCube VCL Professional, FastReport FMХ, FastCube FMХ. You will complete your project with cross-platform solutions and will be able to create a fullfledged BI platform by combining the power of FastReport and FastCube while saving your resources. Embarcadero Edition Standard Professional Enterprise Ultimate Report Design Features Just-in-time localization x x x x x Object inspector localization x x x x x Multiple Report Pages x x x x x Multiple Bands on Page x x x x x Right to Left Text Support x x x x x UI Localization x x x x x InPlace Editor x x x x x Improved Guide Lines x x x x x Final Report Modification x x x x Event handlers x x x x Run-time end-user Designer x x x x Extended Script Debugger x x x x Visual SQL builder x x x Report Objects Special Bands (Footers, Headers) x x x x x Hyperlink Embedding x x x x x Single Line Texts x x x x x Multi-line Texts x x x x x HTML-formatted Texts (simple HTML tags in text object) x x x x x HTML View x x x x PDF View x x x x RTF-formatted Texts x x x x x BMP Pictures x x x x x Metafile Pictures x x x x x JPEG Pictures x x x x x PNG Pictures x x x x x ICO Pictures x x x x x Charts x x x x x Barcodes x x x x x 2D Barcodes x x x x Gradients x x x x x CheckBoxes x x x x x Arrows x x x x x Simple Geometric Objects x x x x x Maps (SHP, OSM, GPX) x x x x Table x x x x Gauges x x x x Cellular Text x x x x Zipcode x x x x Vertical Bands x x x x Cross-tabs x x x x Dialogue Form Designer x x x x Internal Datasets x x x x Interbase Express (IBX), IBOjects, ActiveX Data Objects (ADO) and dbExpress support x x x x Exports PDF (1.4 - 1.7) x x x x x PDF (EMF vector) x x x x RTF x x x x x HTML x x x x x TXT x x x x x JPEG, BMP, TIFF, GIF, EMF, PNG x x x x x CSV x x x x x HTML5 x x x x SVG x x x x ODS, ODT x x x x Excel Binary x x x x Excel XML / XLIFF x x x x Word XML x x x x PowerPoint XML x x x x PPML x x x x PostScript x x x x Email x x x x DBF x x x x Dot-Matrix / Matrix printer x x x x ASCII Text File Output x x x x ZPL x x x x Report engine Tree shift x x x x x Linear shift x x x x x Object anchors x x x x x Duplicates merging x x x x x Autofilling of empty page space x x x x x Expressions post processing x x x x x Detail reports x x x x x Drill-down reports x x x x x Interactive events x x x x Additional features Editing of prepared report in preview x x x x x Script x x x x Source Code x x x Components for web-applications x x Lazarus support x x x FastReport FMX x FastCube VCL x FastCube FMX x Windows support x x x x x Linux support x x x MacOS support x Convertors from Quick Reports x x x x Rave Reports x x x x Report Builder x x x x Saving / uploading to the cloud storages FTP (Indy) x x x x BoxCom x x x x DropBox x x x x Mail x x x x GoogleDrive x x x x OneDrive x x x x ### Comparison of SSRS and FastReport .NET part 1 URL: https://www.fast-report.com/blogs/comparative-analysis-report-sql-server-1 Summary: Let's compare which report generator has more functionality - SQL Server Reporting Services or FastReport .NET. Let's compare which report generator has more functionality - SQL Server Reporting Services or FastReport .NET. Let's compare which report generator has more functionality - SQL Server Reporting Services or FastReport .NET. Electronic and printed reporting is used in many areas of our life. Can you imagine an accountancy without annual reports? Or a transport company without invoices? One way or another, reports are of a great importance in production and business. That is why the report generator programs are just as important as the DBMS. But, as well as various DBMSs, different report generators have their strengths and weaknesses. Let us consider two bright representatives, that have settled in the software market for a long time ago: The first one is SQL Server Reporting Services (SSRS). It is a product from the world giant Microsoft. It was created specifically as an add-in on SQL Server. This report generator is very popular with TSQL developers primarily because it is included in the MS SQL Server database. The main feature of this report generator is the server service, which allows you to administer and view reports via the web interface. To edit reports, you need a desktop application - a report designer. The second candidate to be examined is FastReport .NET . This is a product with a long history. The FR.Net generator works in conjunction with Microsoft Visual Studio and is based on the .NET framework. When you install the program, its components are added to the VS palette. We use FastReport in your applications by placing components on a form or by connecting libraries in the code. Just like SSRS, it has a separately started report designer, but you can embed the designer in your application with the ReportDesigner component. In opposition to SSRS, I deliberately took a not very well-known FastReport .NET. It is interesting to compare a product from the leader of the software market and from a small company. In this article we will conduct a series of comparisons and tests. Since the volume of the article is not supposed to be small, I propose to divide it into three parts. In the first part of the article you will find out what features are offered in each of the considered report generators. Let us start from the user interface - the report designer. Fairly, the report designer can be considered the most important component of the report generator. Users' attitude to the entire product depends on the convenience of creating a report. Let us take a look at the Reporting Services front-end interface: Everything in the picture looks clear and concise. It is done in the style of MS Office 2007. It must be mentioned, that it is a very good idea with toolbars grouped by purpose on separate tabs. Now this style is adopted by many users. People who work with MS Office will quickly master this interface. On the left there is a report data, in the center - the work area. It is easy to create reports in such a designer. And now look at the FastReport .NET designer: Are there any similarities between the two previous screenshots? In the last one the upper toolbar is used in the MS Office 2007 style. On the left there is a component panel, whilst on the right there is a data tree. In the middle there is a workspace. Everything is easy to be understood and be worked with. However, there is one feature in the report template architecture - bands. These are containers, that delimit the information for the intended purpose. At the beginning of the development of FastReport .NET, this will take time to understand, but the advantages of this approach level out these costs. Both designers are understandable and easy to use. Functionality for creating reports Now let us take a look at the basic capabilities of generators in creating reports. In the table below there is a list of the following functionality: Feature SSRS FastReport .NET Multiple report pages ✓ Dialogue form pages ✓ Built-in report script ✓ ✓ Hyperlink embedding ✓ ✓ Event handlers ✓ Expressions ✓ ✓ Right-to-left text support ✓ ✓ Localization of UI ✓ ✓ Infinite page ✓ Interactive reports ✓ ✓ Final report modification ✓  Let us consider the functions in detail: Multiple report pages. As a rule, we create a report template on a page. Then, when building a report, this template is filled with data. If the data does not fit one page, then a new one is created and so on. ( a multi-page report is a different thing). This refers to several pages with different templates. For example, the first page is the title page, the second one is the table of contents, and the third one is the content. Thus, your report consists of three pages, each of which is filled with its own data. With this capability, you can create complete documents such as a booklet. Dialogue form pages - forms, which are usually displayed before the report is built. Such forms are used to request data from the user. For example, you can filter it by the input value or set the number of output columns. This feature avoids the creation of a special application with a form of presetting the report. Built-in report script . There are always tasks, that can not be done with the standard tools of the report designer. For example, complex calculated fields or a specific logic in the construction of a report, depending on the data. Here comes the help built, into the report script. It allows you to work with report objects in the program code. This feature greatly extends the capabilities of the report generator, making it flexible. Hyperlinks  helps to give the report some interactivity. A user will be able to click on the links to the specified positions in the report or to receive a detailed page for the selected data. Expressions - an ability to create arbitrary expressions on the basis of data or with the help of built-in functions (mathematical, text, etc.). Using expressions, you can, for example, add all the values of the required field to display the total amount, or convert the date to another format. Expressions in reports are very important tool, without them you could only output data from the source in their original form. Supporting text from right to left is relevant for Arabic languages, where text is written from right to left. Such a function should be in every "self-respected" report generator. Localization of the user interface - an ability to select the desired localization language. The more languages supported the more potential users have this report generator. Infinite page - an ability to set the infinite width and height of the report page. Thus, you can print large tables and matrixes without page breaks. This can be convenient in web reports or simply if you do not plan to print a report. Interactive reports - reports that respond to user actions. It can be hyperlinks, bookmarks, drop-down list, pop-up messages. Final report modification - an ability to modify the report without rebuilding. This is implemented using a report script. The table above shows that in some aspects FR.Net moves ahead of SSRS. The product from Microsoft does not allow you to create reports with multiple page templates. Also, a infinite page is not accessible to him. A report is always displayed on pages of a fixed size. Again, you will not be able to modify the constructed report, although this is quite an exotic need. I would like to mention the dialogue form. In SSRS, this form is displayed at the top of the report, and in FR.Net - as a separate form before building a report. And from this form, you can call another one, which allows you to make the report more logical. Based on the results of the comparison of the functionality in creating reports, the advantages of FastReport are clear. Perhaps it is the greatest experience of the company in the development of report generators, because it created its first generator in the early 2000s, while Microsoft did it in 2004. Tags: .NET, FastReport, SSRS, SQL, Converter ### Comparison of SSRS and FastReport .NET part 2 URL: https://www.fast-report.com/blogs/comparative-analysis-report-sql-server-2 Summary: SSRS can offer us to download and run the designer to edit the report. You need a Windows device. SSRS and FastReport .NET SSRS can offer us to download and run the designer to edit the report. You need a Windows device. SSRS and FastReport .NET SSRS can offer us to download and run the designer to edit the report. You need a Windows device. SSRS and FastReport .NET Technologies This article aims to continue examining the capabilities of the report generators in terms of the technologies, that they support. Technology SSRS FR .NET WinForms ✓ ✓ WPF ✓ ✓ ASP.Net ✓ ✓ ASP.Net MVC ✓ ✓ ASP.Net Core ✓ ✓ WCF ✓ ✓ Both report generators are targeted to the .NET platform. Accordingly, in the above table the technologies are based on this framework. • WinForms - until now it has remained the main API for creating a graphical user interface for desktop applications. • WPF - another approach in creating applications with GUI. Now it is very popular and replaces WinForms, due to its greater flexibility. • ASP.Net - client-server technology for creating web applications. • ASP.Net MVC - ASP.Net-based framework for implementing the Model-View-Controller application architecture. Development on this framework is significantly different from usual ASP.Net. • WCF - a framework for creating distributed applications with secure data transmission (mostly web services). Both report generators support almost the entire spectrum of these technologies. However, currently, SQL Server Reporting Services 2016 does not support ASP.Net Core. Perhaps in the next version this feature will be implemented. Meanwhile, FastReport.Net is the leader of this comparison. Report objects The capabilities of the report generator also depend on the nomenclature of the report objects. These objects can output data, be used as controls or simply be design elements. We place them on the report page or in a dialog form. In general, they are the bricks in the wall, called a report. Here you are the descriptions of each object. O bject SSRS FR  . NET Description Text ✓ ✓ This object is the basis of any report generator. Allows you to display any text data, such as data from a database or an expression. Picture ✓ ✓ Allows you to insert an image into the report. Line ✓ ✓ The line is used to delimit space in a report or frame objects. Line with arrow ✓ Line with an arrow. This object is decorative. Can be used as a pointer. Rectangle ✓ ✓ Rectangle. Used to prepare a report, delimitation of space. Rounded Rectangle ✓ Rectangle with rounded corners. Ellipse ✓ Ellipse. Triangle ✓ Triangle. Diamond ✓ Diamond. Polyline ✓ Allows you to build a graph by specifying the key points. Polygon ✓ A polygon constructed using a polyline. You can transform the shape by dragging the key points with the mouse. Sub-report ✓ ✓ Subreported report. In fact, one more report that can be inserted into the right place of another report. Table ✓ ✓ Table. Can be filled manually or by data from the database using a script (dynamic). Matrix ✓ ✓ The matrix is a summary table. Filled with data from the database, respectively, grows in height and width. Chart ✓ ✓ Diagram, graph. Can be built both on the basis of manual data, and data from the database. Sparkline ✓ ✓ Another kind of charts. Data Graphic ✓ This is a representation of the data in the form of widgets (scale, status bar, etc.). Barcode ✓ Barcode Gauge ✓ ✓ Simulates analog instrument scales to display readings. Rich Text ✓ Extended text. Allows you to insert rtf documents. CheckBox ✓ CheckBox. Zip Code ✓ Postal code in standard format. Cellular Text ✓ Text in cells. Each character is displayed in a separate cell. List ✓ List. HTML ✓ Allows you to insert an HTML document that will be interpreted for display. Indicator ✓ The indicator icon, that changes depending on the given condition. You can use flags, bulbs, arrows, etc. Map ✓ ✓ Allows you to insert into the report a vector map that can be scaled. As can be seen from the table above, many of the considered objects are not available in SSRS: • First, there is no vector graphics at all (polygons and other shapes). • Secondly, the absence of a CheckBox. At work, I often have to create reports in SSRS and each time I get annoyed with the absence of a check box when the bit field is displayed. • Thirdly, bar codes are also unavailable. You will have to generate them by third-party tools and insert them into the report as a picture. On the other hand, FastReport also has "gaps". However, they are not crucial: • The "List" object is simply not needed as it is implemented by using the architectural solution of FR-bands. • Missing Indicator. It can be done with the help of "conditional highlighting" and the report script. Not as convenient as SSRS, but also acceptable. In general, we must admit that the assortment of FastReport .NET is richer, and many of the available elements are really necessary. Additional Features Why did I render part of the capabilities of the report generators in a separate section? Because I consider them auxiliary, not mandatory for the report generator. However, the availability of such options will be a pleasant bonus. Many report generators allow you to convert reports from other programs into their own format, facilitating the process of migration. What do our "test objects" offer: Conversion of reports of other formats Report Generator From … to SSRS From … to FR.Net RDL ✓ List&Label ✓ DevExpress ✓ Crystal Reports by  Crystal Migration ✓ As you know, before Reporting Services, the official report generator in Microsoft was Crystal Reports. All the mass of the developed reports had to be translated into new SSRS. Therefore, a migration tool was developed for the new format. Unfortunately, this is the only possible format for converting. Probably, Microsoft does not consider the possibility of switching to SSRS from another report generator. FastReport .NET aims to attract some users of other report generators. It is interesting, that SSRS reports can be converted into FR .NET. Also, you can convert reports from the German report generator List & Label, American DevExpress and frankly outdated Crystal Reports. Now let us consider one more feature. FastReport .NET offers us Online Designer. This is almost a complete copy of the visual report designer, transferred to the web platform. You can include the Online Designer library in your web project and display it to users on the web page. The user can design reports in an Internet browser from any device. This feature can be useful for developers when it is not possible to create reports at their workplace. For example, you are away on business, but you urgently need to make changes in your report, which will be presented to the leadership when you are are absent. A tablet or even a smartphone help due to the online designer. Based on the results of this comparison, I would like to praise the FastReport .NET team. The online report designer is a really handy addition for a report developer. Tags: .NET, FastReport, SSRS, Converter ### Comparison of SSRS and FastReport .NET part 3 URL: https://www.fast-report.com/blogs/comparative-analysis-report-sql-server-3 Summary: Let's take a look at what data sources and data export formats are available in Reporting Services and FastReport .NET. Let's take a look at what data sources and data export formats are available in Reporting Services and FastReport .NET. Let's take a look at what data sources and data export formats are available in Reporting Services and FastReport .NET. Data Sources The basis of any report is data. Let us examine the data sources, available in Reporting Services and FR .NET. First, let us take a look at the built-in data connectors, which are available to you immediately when creating a data source in the report, without additional installations and settings: Built-in data sources SSRS FR .NET SQL Server ✓ ✓ Oracle ✓ extension OLE DB ✓ ✓ ODBC ✓ ✓ MS Access extension ✓ XML database ✓ ✓ CSV file ✓ Azure SQL Database ✓ MS Analytics Platform ✓ MS SQL Server Analysis Servises ✓ SharePoint ✓ extension SAP BW ✓ TERADATA ✓ FastReport .NET is characterized by connectors to Microsoft databases and csv file sources. Reporting Services has more built-in connectors, but mostly to Microsoft databases. Of course, you can use the generic ODBC to connect to a database that is not in the list of available databases. But at the same time the speed of working with data will suffer. Now we will overview the extensions for connecting to other DBMSs. This list is much larger than the previous one. E xtended data sources SSRS FR . NET MS Access odbc ✓ Xml ✓ ✓ CSV odbc ✓ DB2 ✓ ✓ Firebird ✓ GoogleBigQuery ✓ Json third-party ✓ MongoDB third-party ✓ MySQL ODBC ✓ NosDB ✓ Oracle ✓ ✓ OracleODP ✓ Postgres ✓ Postgres.Devart ✓ RavenDB ✓ SharePoint ✓ ✓ SqlAnywhere ✓ SqlCe ✓ SQLite ✓ VistaDB ✓ Business Objects ✓ ✓ Here, "third-party" means that it is implemented with the help of libraries of other manufacturers. ODBC means implemented with this universal connector. As you can see from the table, FastReport.Net extensions allow you to add connectors to almost all popular DBMSs today. An excellent result! Reporting Services confined itself to connectors for DB2 from IBM and Microsoft services. Such a modest result is explained by the orientation of SSRS primarily on Microsoft's own systems. After all, high integration with other products of this company is the main advantage of Reporting Services. FastReport strives to satisfy the entire consumer demands. In the competition with such giants as Microsoft this is the best strategy. I would like to add a couple of words about extensions. In SSRS, additional connectors must be installed. In FR .NET they are implemented with the help of plug-ins for the designer of reports. Exports Another important element of the report generator is the export of the report. After all, it is not enough to display or print a report. It is important to keep it in the right format. For example, the workflow in your enterprise allows only the format of PDF, DOCX and XLSX. If the report generator, that you are using, does not allow you to export reports to these formats, this can pose a big problem. In this case, any additional costs and difficulties are inevitable. A report in the required format is the final result of the generator. According to this results users will evaluate the program. Therefore, it is important for the report generator to not only support the required export format, but also export it correctly, without violating the formatting and quality loss. Let us consider the available export formats for both "objects". But first, there will be shown two pictures. This export menu is in SSRS and FR .NET: It is sometimes interesting to test your intuition. Which report generator corresponds to the first picture? I think you already guessed - it is SQL Server Reporting Services. And now, nevertheless, there will be done a small comparison between the companies. Export Feature SSRS FR .NET PDF ✓ ✓ PDF export options Embedded fonts automatically option  PDF/A-1a third-party ✓  PDF/A-2a ✓  PDF/A-2b ✓  PDF/A-3a ✓  PDF/A-3b ✓  PDF/X-3 ✓  PDF/X-4 ✓ CMYK Color Space ✓ RTF third-party ✓ HTML ✓ MHT ✓ ✓ XML (Excel table) ✓ Excel 2007 ✓ ✓ Excel 97 ✓ Microsoft Word 2007 ✓ ✓ PowerPoint ✓ ✓ OpenOffice Calc ✓ OpenOffice Writer ✓  XPS ✓ CSV ✓ ✓ DBF ✓ Text File/Matrix printer ✓ Image TIFF ✓ XAML ✓ SVG ✓ PPML ✓ PostScript ✓ Json ✓ Reporting Services provides export to Microsoft product formats. This is obvious. It is amazing that only one image format is supported - TIFF. This is surprising as long as the most common formats are JPEG and PNG. Export to PDF has minimum options. However, it might be not very important an average user of reports. And what does FastReport .NET provide? Such an impressive "arsenal" there can be found anywhere else. Our developers really tried to meet any needs of the user. By the way, export to image supports the following formats: BMP, JPG, PNG, GIF, TIFF, Windows metafile. PDF export settings allow you to select the required PDF standard and optimize the size of the final file. Here is the unconditional advantage of FR .NET. In conclusion, let us consider the possibility of saving / sending a report to various services. Namely, sending the report in an e-mail via FTP, or saving to a cloud service. Storage SSRS FR .NET E-mail ✓ ✓ FTP by SSIS ✓ Box ✓ DropBox ✓ FastReport Cloud ✓ Google Drive ✓ OneDrive ✓ XMPP ✓ Summing up, we should conclude that, unfortunately, Reporting Services does not support saving the report to cloud services, and it is not necessary in corporate reporting. However, the idea is interesting and will certainly find its users. Interestingly, that FastReport provides its own cloud service for publishing reports. The only thing we should do is to send a user his link, and he will  be able to look through his report on the web page. In the next part of the article, we are going to examine the performance of report generators. Tags: .NET, FastReport, SSRS ### Comparison of SSRS and FastReport .NET part 4 URL: https://www.fast-report.com/blogs/comparative-analysis-report-sql-server-4 Summary: Comparative analysis of Microsoft SQL Server Reporting Services and FastReport .NET. We measure the performance of report generation. Comparative analysis of Microsoft SQL Server Reporting Services and FastReport .NET. We measure the performance of report generation. Comparative analysis of Microsoft SQL Server Reporting Services and FastReport .NET. We measure the performance of report generation. This is the final part of our comparative study of the two known report generators - Microsoft SQL Server Reporting Services and FastReport .NET. We have already examined functional capabilities, supported technologies, report objects and supported report export formats of them. To complete the study, it is worth introducing performance measurements. For testing, take a simple report with a list of thousands of lines. For the purity of the experiment, we use the same data source in both report generators. The essence of the test is to generate a report and export it to three most popular formats: PDF, XLS, DOCX. Here we measure the export time in milliseconds. Performance test (1000 rows) Try SSRS PDF FR PDF SSRS XLS FR XLS SSRS DOCX FR DOCX 1 2500 1703 234 875 1484 3297 2 1641 1890 328 562 1140 3219 3 2109 2844 235 844 1172 3219 4 1547 2985 250 843 1000 3360 5 1485 2672 265 875 1063 3297  Five measurements are being tested. 1)    Export to PDF. For SSRS, the average time is 1856 milliseconds. For FastReport .NET - 2418 milliseconds. Here SSRS is clearly faster. FastReport has something to work on. 2)    Export to XLS. SSRS showed an average time of 262 milliseconds, while FastReport .NET - 800 milliseconds. There is nothing surprising here. The product from Microsoft must be exported quickly to MS Office formats. 3)    Export to DOCX. SSRS is again faster with 1172 milliseconds against 3513 milliseconds in FastReport .NET. The situation is exactly the same as in the previous export. We can recognize leadership in this discipline for SQL Server Reporting Services. For a greater clarity, the results of the measurements are shown in the following picture. If the situation with PDF export for FastReport is not critical, then in XLSX and DOCX export there is a loss by time of 3 times. Now let us take a look at the size of the final files: Export file size, KB Export SSRS FR PDF 308 204 XLS 111 551 DOCX 50 64  As you can see, the PDF file generated by FastReport .NET takes up one third less space than SQL Server Reporting Services. Due to the large number of PDF export settings in FastReport .NET you can achieve the minimum file size. As for exports to XLS and DOCX, SSRS showed the best results. The size of the XLS file is five times smaller than any of the competitors! For DOCX, the difference is not significant. Well, the results of this test are not straightforward. Conclusions will be made at the end of the article. Let us do one more test - a stress test. We will display a large number of lines in the report - 2458524. It goes without saying, it is unlikely that such reports will exist in reality, but for our test it is necessary. As a DBMS we use MS SQL Server 2016 - a native data source for SSRS. However, SQL Server Reporting Services did not master this task: Truncated RAM. As a consequence, the error is: Exception of type 'System.OutOfMemoryException' was thrown. Yes, other programs also use RAM, but it is possible to use a virtual memory. The screenshot shows that the load on the disk is minimal, so the swap file is not used. Now we will generate the same report in FastReport .NET 2017.2: It took us 40 minutes to wait. But the report has been built. Take a look at the screenshot. Exhausting all RAM, FastReport .NET used a swap file - the load on the disk is 99%. The mission is complete. The measurements were carried out using the following hardware configuration: CPU – Intel Core i5-2450M (2.5GHz), RAM – 8 GB, OS – Windows 10 x64. The last stage of the comparative study is complete. To sum up the tests in all three parts of the article we need to remember what happened in the previous parts of the study: 1)      In the beginning, we looked at the functionality of the programs. In this comparison, FastReport .NET has an advantage over Microsoft SQL Server Reporting Services. Advantages: support for dimensionless report pages, events in the report, dialog forms and the ability to modify an already constructed report. Score: SSRS - 0, FastReport .NET - 1. 2)      Next, we have compared supported technologies. FastReport .NET was one of the leaders thanks to the support of ASP .NET Core. There are no real forecasts for ASP .NET Core support in SSRS yet. There are some "crutches". Score: SSRS – 0, FastReport .NET – 2. 3)      The supported report objects again showed the superiority of FastReport .NET over Microsoft SQL Server Reporting Services. In my opinion, the absence of CheckBox and Barcode objects is unforgivable for SSRS. Score: SSRS – 0, FastReport .NET – 3. 4)      Export the report in different formats. Reporting Services provides a very limited set of supported formats, only the most necessary. FastReport struck me with its impressive array of export formats for any occasion. This comparison consolidated the leadership behind him. Score: SSRS – 0, FastReport .NET – 4. 5)      The performance measurement was evaluated by the time the report was exported in three different formats: PDF, XLS, and DOCX. In this test, an unconditional victory was won by SSRS. Score: SSRS – 1, FastReport .NET – 4. 6)      The test of the size of the export file showed that same three export formats from the previous test. Here FastReport .NET formed a more compacted PDF file, whilst SSRS generated smaller files with the extension .xls and .docx. It it considerate as a draw game. Score: SSRS – 2, FastReport .NET – 5. 7)      Reporting Services failed the stress test to generate a "giant" report with more than 2 million lines. The report is not generated. FastReport managed in 40 minutes. Score: SSRS – 2, FastReport .NET – 6. To draw conclusions, according to out tests and their results FastReport .NET surely outperforms Reporting Services in many respects and could quite replace a competitor. Any task related to the generation of reports is possible for FR. However, I can not say that Reporting Services is a bad report generator. It completes its tasks well . After all, it was created to work with MS SQL Server. This bundle fully justifies its use. Tags: .NET, .NET, FastReport, FastReport, SSRS, SSRS ### Comparison of WinForms and WPF technologies URL: https://www.fast-report.com/blogs/comparison-winforms-wpf Summary: We compare 2 graphics systems used in development.NET applications using FastReport.NET and FastReport WPF products. We compare 2 graphics systems used in development.NET applications using FastReport.NET and FastReport WPF products. We compare 2 graphics systems used in development.NET applications using FastReport.NET and FastReport WPF products. We would like to talk about two graphical systems used in .NET. WinForms and WPF are popular in our time. The question is which technology to use in application development. We will examine each system in detail, discuss the pros and cons, and talk about the peculiarities of using them in FastReport .NET and FastReport WPF products. Let's turn to the comparison. WinForms First, let's talk about the old WinForms system, which is already considered a classic. This Framework 1.0-based system was released back in 2002 and offers a "traditional" way to create desktop applications. We have basic elements like "Button," "Text object," "Text field," etc., which can be customized almost as you like. It is generally quite convenient, but unfortunately, we will not be able to create a modern application design, which may not suit us or our clients. Nowadays, quite a few applications use WinForms, for example, FastReport .NET. But it is worth considering that often such applications were developed and supported for a long time. This is mostly a necessary measure because the application’s appearance plays a really important role.  Pros and Cons: + The technology has been extensively tested and proven, which gives reliability. + There are many ready-made solutions and controls. + Simplicity and intuitive concept when creating an application. - Does not meet modern development standards. - No active support. WPF Everything becomes much more interesting here. WPF technology was also introduced a long time ago, in 2006, based on Framework 3.0. However, it has a fundamental difference in the development process. Now, there are no familiar elements that we can place on a form and customize. We will now have to write code in XAML to add the same button or text object. And indeed, it is much more convenient to simply drag and drop and customize the desired object rather than starting from scratch and configuring everything. In this case, we even gain an advantage. But how? Let's look. Let's take an example of a button with an image and text. WinForms does not offer ready-made solutions. Therefore, you need to create your own images and implement your own buttons that support images or use a ready-made custom solution. A WPF button can have anything inside it since it's just a "frame" with content. For example, pressing or not pressing with a reaction to cursor hovering. This way, we have a maximum flexible configuration, which can confuse the developer. On the other hand, we get from the application what we want. Pros and Cons of this approach: + The graphics system is newer and meets development standards. + Microsoft uses it in many of its applications, such as Visual Studio. + More flexible configuration system. + There are ready-made solutions for any need. + Using XAML, you can separate the work of a designer and a programmer. + For better performance, you can use hardware acceleration. + You can create an interface for both Windows and Web applications. - You need to learn how to work with XAML. WinForms and WPF in FastReport So, we have discussed the two graphical systems and learned about their advantages and disadvantages. Now let's delve into their integration with FastReport .NET. The main differences are in the connection method and visual components. In the case of WinForms, we need to connect FastReport.NET.nupkg or FastReport.dll, write the necessary code, and run the project. Alternatively, we can simply launch FastReport .NET. As a result, we will get the familiar form. In the case of WPF, we need to include the FastReport.WPF package. And also write the necessary code and launch the project. In the case of WPF, we will get a more modern design and a similar interface. It is also worth mentioning that we can utilize Intellisense from Roslyn when using WPF, which helps in code writing. Thus, we have discussed the two graphical systems. The decision of which one to use in application development is up to you. However, we recommend using WPF. Yes, it may be inconvenient and unfamiliar after WinForms, but with WPF, we gain a modern and user-friendly design and long-term support. Tags: .NET, FastReport, WPF, WinForms ### Complex report with Advanced Matrix in FastReport .NET URL: https://www.fast-report.com/blogs/complex-report-advanced-matrix-dotnet Summary: We compare the speed of preparing a complex report with 3 ordinary tables and when using the AdvancedMatrix object. We compare the speed of preparing a complex report with 3 ordinary tables and when using the AdvancedMatrix object. We compare the speed of preparing a complex report with 3 ordinary tables and when using the AdvancedMatrix object. This article continues the previous article , in which we looked at how to create a complex report. The report created in that article has become a source of inspiration for a new object - AdvancedMatrix. The report in the previous article included three sections: 1) yearly statistics; 2) quarterly statistics; 3) monthly statistics. Each of the sections was implemented using a separate matrix, which had to be done due to the limitations of the standard MatrixObject. In the new version of FastReport .NET, we have added an updated version of this object, which is called AdvancedMatrix. It allows you to develop the entire report in one matrix. Let's see how to do it. Add an AdvancedMatrix object to the empty data band: Let's remember what the data we use looks like: For the simplest matrix, we need to drag three fields: country_name, fruit_type and amount. Here's what the matrix looks like now: The new matrix allows you to change the calculations in the cells. In this case, we need the amount, but we can replace it with something from the following list: Let's remake the matrix. We need the fields country_name and fruit_type to be used in grouping — the report should group the list of fruits by country, and there should be a column for each individual year: At this stage, we go beyond the capabilities of a regular MatrixObject. Let's add additional fields year and quarter to the matrix, and also replace empty values with zeros: What we previously had to do with two matrices can now be done with just one. Now we have a breakdown both by years and quarters. Let's go even further. At this stage, we have a matrix with all the necessary data. To increase readability, we can change the display of the matrix and data. First, let's merge the cells with the only text: A new menu for editing titles can help with displaying data: Now the matrix looks like this: Finally, we can compare the report preparation speed when it consists of three regular matrix objects and when it consists of one large matrix. The test was done on a computer with an AMD Ryzen 5 3600 and 16GB of RAM. There are 5000 records displayed in the data table. Attempt 3 matrices of MatrixObject 1 AdvancedMatrix #1 906 ms 656 ms #2 828 ms 625 ms #3 937 ms 640 ms #4 875 ms 641 ms #5 891 ms 672 ms #6 922 ms 656 ms Average: 893.3 ms 648.3 ms As you can see, preparation time drops by ~27% on average, which can save a lot of time on reports with many data. In this article, we showed you how to recreate the report from the previous article. Advanced Matrix allows you to implement several useful features - for example, the TopN filter sort for selecting the 5 records with the highest calculated values. You can learn about all the features of this object  in our documentation . Tags: .NET, FastReport, Matrix ### Complex report with multiple matrices in FastReport.NET URL: https://www.fast-report.com/blogs/complex-report Summary: Looking at complex band-oriented reports created with the help of Matrix object Looking at complex band-oriented reports created with the help of Matrix object Looking at complex band-oriented reports created with the help of Matrix object Today we will look at a complex report with a band-oriented approach, which is usually used in FastReport. For example, a report on sales broken down by years, quarters and months, where you want to display three tables with data, which should be located not from top to bottom but from left to right. Fortunately, we can make this report in FastReport .NET using several Matrix objects. Let's take a look at the data. They are generated randomly following a certain pattern: The database contains data on the import of fruits from different countries, broken down by months. Each record has an “amount” field where the amount of imported fruits is stored. We will use the Matrix object to display the data. Let's go to its settings: The name of the country and the type of fruit will be our strings, the rows will contain a breakdown by year, quarter and month, and the number of fruits will be the cells of the matrix. We have indicated what data will be used in the matrix. Let's apply borders for all cells, and adjust the page settings. We will apply "unlimited height" and "unlimited width" so that our report makes up one sheet. After that, we will prepare the following report: The data will go to the right for 2018 and 2019. First of all, note that totals have been automatically added for all columns. If we do not need them, we can remove them, which we will do. To display zeros instead of empty cells, you need to set the NullValue property of the cell. As a result, 0 should appear in it. In addition, let’s disable autosize for the table and adjust the result: Our task is to make statistics using several matrices: 1) By years; 2) By quarters; 3) By months. Let’s copy the matrix and place its two copies next to the original. Then we apply “extra space in the designer” to insert everything. Note that when you copy a matrix, it is unlinked from the data and you need to select the required data table in the DataSource property. Let's remove unnecessary fields from matrices and move them closer to each other: Let's try to prepare such a report: As you can see, there are several problems in the report: 1) Matrices are displayed differently because headers have different heights; 2) Countries and types of fruits are repeated in the second and third matrices. Let's increase the height of the “Year” row in the first and second matrices. To select a row, you can hover your mouse over the left side of the matrix. When the mouse is over one of the rows, it will turn into a black right arrow. In addition, you can select a row in the report tree: Now all headers are the same height: Matrices in FastReport allow you to “hide” a column or a row by reducing their size to zero. In our case, we need to hide the “country names” with “fruits” in the second and third matrices. Select the column and reduce its Width to zero: After repeating this several times, as well as after moving the matrices together, we get the following pattern: Note that these are three separate matrices, not one. But they work as one complex matrix because they have identical header and cell height, as well as the same dataset. Let's take a look at the report now: This screenshot shows that the names of the countries are no longer displayed, and that there is no conflict between the matrices. Finally, let's pretty up our matrix: For example, in order to add a word to a year number, you need to remember the fields of the matrix contain expressions. If the field contains such text, then an error will occur: ``` Year [fruit_import_database.year] ``` The right way to do it is: ``` "Year " + [fruit_import_database.year] ``` Tags: .NET, .NET, FastReport, FastReport, Matrix, Matrix ### Components of FastCube .NET. Part 2. Chart, DataSource URL: https://www.fast-report.com/blogs/components-fastcude-net Summary: Let's take a closer look at FastCube.NET Components and how to work with them. Part 2. Find more usefull tips and articles in our blog. Let's take a closer look at FastCube.NET Components and how to work with them. Part 2. Find more usefull tips and articles in our blog. Let's take a closer look at FastCube.NET Components and how to work with them. Part 2. Find more usefull tips and articles in our blog. In the first part of the article, we looked at the components for data analysis - a cube and a slice. In the second section, the components from the database or DataTable will be presented, as well as the slice diagram. 1. The Chart component is a graph based on the data from the slice. It is built automatically, just set the property of Slice. Properties: Property Description SeriesType Chart type (columnar, circular, etc.) SkipNullPoints Ignore empty points in the diagram BaseAxisDataType Base axis data type MeasureFieldIndex Field index of the measure SeriesFieldCount Number of fields in a series CategoriesFieldCount Number of category fields SeriesAxis Axis of the series. Contains columns and lines. CategoriesAxis Axis of categories. Contains columns and lines. DataType The way data is presented in the diagram. Slice Link to slice object Legends Legends - names of data series (graphs) ChartAreas Areas of the graph Frozen Freezing allows you to fix the state of the chart, so that subsequent changes in the cut will not be reflected on it Methods: Method Description BeginUpdate() Enable editing mode EndUpdate() End editing Load(XmlItem item) Load chart settings from the cube file Save(XmlItem subItem) Save the graph settings to a cube file Setting the Chart component is to select the available slice in the Slice property. To create and customize the Chart object in the application code, use the following code: ``` Chart chart = new Chart(); chart.Dock = DockStyle.Fill; chart.Parent = tabPage3; chart.Slice = slice1; ```  In this case, we need to create an object, configure its display, bind to the parent object, and specify the slice.  2. The ChartToolbar component contains tools for customizing the chart display. Composition: 1)      Chart style: Bar; Line; Point; Area; Pie; Horiz Bar. 2)      Frozen chart – freeze the current state of the chart; 3)      Chart properties – chart properties in a separate window; 4)      Marks; 5)      Legend; 6)      Copy - copy the diagram as a picture. Properties: Property Description Chart The Chart object for which this toolbar is active When setting up the visual component, you need to set the Chart property, which is the chart to which the toolbar will be attached. Customization from application code:. ``` ChartToolbar chartToolbar = new ChartToolbar(); chartToolbar.Dock = DockStyle.Top; chartToolbar.Parent = tabPage3; chartToolbar.Chart = chart; ```   3. The DataSource component is the data source for the cube. Properties: Property Description DataSet Data Set - DBDataSet or DTDataSet Fields List of data source fields Methods: Method Description AddFields() Load cube fields from the data source Check(StringBuilder msg, bool skipFieldsWithErrors) Check fields for duplication Close() Resets the data source to zero DeleteFields() Clears the list of fields for the cube InitFields(bool loaded = false) Initializing Fields Open() Open Data Source  In the settings of this component, you need to define a data set. This can be a DBDataSet or a DTDataSet. Below, for the listed components, the configuration from the application code of the entire data acquisition chain will be shown. 4. DBDataSet - a data set for the DataSource, obtained from the database. Properties: Property Description DbCommand The command for the database that contains the SQL query Configuring the connection of the cube to the database: 1) Using visual components: To configure a data connection via DBSataSet, you need to generate DBCommand using the oleDBCommand component. In turn, for the oleDBCommand component, you must specify a connection to the database using the oleDBConnection component. To configure the connection to the database, the following components are required: Setting up oleDbConnection: Create a new connection: Setting up oleDBCommand: You should specify the command - sql query. And also, you need to select a data connection. • Setting up the cube: 2)      From the application code: ``` OleDbCommand command = new OleDbCommand(); command.CommandText = "Select * from Sales"; dbDataSet1.DbCommand = command; dataSource1.DataSet = dbDataSet1; cube1.DataSource = dataSource1; cube1.Open(); ``` 5. DTDataSet is the data set for the DataSource that is received from the DataTable. In turn, DataTable can be filled with data from the database, text file, application code. Properties: Property Description DataTable Reference to the table The procedure for setting up a connection to the DataTable using visual components is very simple. Configuring a Cube to a DataTable: 1) Setting up visual components is similar to setting up a database connection, the only difference is that in the DataSet configuration for the DataSource component, you need to select dtDataSet1. Accordingly, oleDBConnection and oleDBCommand are not required. 2) From the application code: ``` DataTable dataTable = new DataTable(); // Create a table and fill it with data … cube1.Close(); // Close the cube to unload the data from it (if previously loaded) dtDataSet1.DataTable = dataTable; // For the data set, we assign the created table to the DataTable property dataSource1.DeleteFields(); // Clear the fields in the data source (if previously loaded) dataSource1.DataSet = dtDataSet1; cube1.Open(); // Open the cube to load the data into it ``` Tags: .NET, FastCube ### Conditional data highlighting in FastCube .NET URL: https://www.fast-report.com/blogs/conditional-data-highlighting-cube-net Summary: Get useful tips on how conditional data highlighting works in FastCube .NET. Find more usefull tips and articles in our blog. Get useful tips on how conditional data highlighting works in FastCube .NET. Find more usefull tips and articles in our blog. Get useful tips on how conditional data highlighting works in FastCube .NET. Find more usefull tips and articles in our blog. One of the main tools for data analysis in OLAP programs is "Data Highlighting". This very tool allows you to quickly estimate the "situation", identify trends in deterioration or improvement. In FastCube .NET, the data highlighting is represented in two types: Highlight all cells dependent on value. You can highlight all cells in a column or a row by using a rule that separates a set of values into ranges. Each range is highlighted with a separate color or icon. This type of selection helps to quickly evaluate the data by color, without going into figures. For example, you set three ranges of values: less than 33, from 33 to 66, more than 66. All values that fall in the first range will be highlighted in red, in the second range - yellow, and in the third - in green. By focusing on the color, you can instantly estimate in what range values are located. Highlight cells matched condition. This type of highlighting allows you to highlight cells in a row or a column that fall under a specified condition. The difference from the previous type is that values that do not match the condition are not affected. For example, you want to evaluate who from the managers in your company exceeded the plan of 30 sales per month. You just set the Value> 30 condition and select the highlight color. The first type of selection of cells in color has 4 types: 1)      Two color scale; 2)      Three color scale; 3)      Bars; 4)      Icon set. The easiest way to explain how this works is by example. As I wrote above, the rules apply to rows or columns. Therefore, if you plan to create a highlight rule for a parameter, so you should first select it. Two color scale From the name of this type it is clear that only two basic colors are used to highlight the data. Let's look at the slice of the cube on sales by managers: Here you can see two basic colors - red and green. The green color highlights the maximum value and close to it, and red - the minimum and close to it. The mean values have a different shade, depending on which extremum it is closer to. So, how to set this rule? Click on the icon  to call the data selection rules manager. Remember that you must first select a parameter. The rule manager looks like this: As you can see, this is the Data marker tab in the measure editor. Here we can add rules using the plus icon, edit using the pencil icon and delete using the minus icon. The arrows control the way the rules are applied. We add a new rule: We select the first type of rule - highlight all cells dependent on value. By default, the two-color (two color scale) highlight type is selected. Below you can set the type of the value for the minimum and maximum values in the data set. This can be a number, percentage or percentile. Percentile - the percentage of the set of values, which is divided into 100 equal parts. The percentile n is the value below which n percent of the data set is located. Since we want to highlight the data in the column, we select the value of minimum value by col and maximal value by col for the second field. For the Value parameter, you do not need to set the values in our case. The last parameter is Color. Here you can set the color for the minimum and maximum values. Leave them by default red and green. Pay attention to the panel on the right. Now the Cells checkbox is marked there. This means that the rule will only apply to the values in the data set. You can also apply the rule to Totals and Grand Total. This makes the creation of the rule complete. Three color scale Let's look at the slice of the dynamics of population growth in countries (Dynamics of the Year). As you can see, the minimum values here are highlighted in red, and the maximum values are highlighted in green. The average value is yellow. In this example, all cells are selected with color, that is, the first type. In the example shown, a tri-color scheme is used. But what if we have more than 3 columns? Let's open the filter for the YEAR measure and add a few more values: As a result, we get such a colorful summary table: The values located between the minimum, average and maximum are colored in semitone by the gradient principle. So you can still focus on the color and its hues for evaluating the data. To create a three-color data highlighting rule, open the rule manager using the button . Add a new rule: We select the first type of rule - Highlight all cells dependent on value. Highlight type - Three color scale. The value type, as in the previous example with a two-color scheme, can be represented by a numeric value, percent, or percentile. In the tricolor scheme, an intermediate field was added - Average value. Let's choose for it the type Percentile by row and set the value to 50. This means that data will be selected from the middle of the set. Standard color settings: red for the lower limit, yellow for the average values and green for the upper limit. Leave the default settings. Bar Along with the color selection of cells in the data set, bars are often used. The bars clearly demonstrate the value, the larger the value - the wider the bar. This type of highlighting, we will look at the example of the section Population in countries. The first measure People contains the count of people in countries. We add for this measure a rule with a highlight of the type Bar: Now, without getting into the concrete values of the cells, we see that China is the most populous country on our list, and Bolivia has the lowest rate. This greatly simplifies the work of the analyst, when analyzing large amounts of data. To create this rule, select the first column (People measure) and call the Data marker. Create a new rule: Rule type - Highlight all cells dependent on value. Highlight type - Bar. There is the "Show cell value" check box to the right of the highlight type, which enables or disables the display of a numerical value in cells. Next, we need to specify values for two types of strips - short and long. The possible values for them are all the same as for the two-color highlight: Color settings allow you to set the color of the strip and the border. There is the “Draw gradient” checkbox on the right, which creates a gradient of color from selected to white. If you disable it, the strip is filled in solid. Icon set Another type of highlight - icons. Instead of filling with a color or a strip, we'll see an icon - an arrow, a circle, a cross, or some other. The set of icons is big enough. Icon sets are a symbiosis of the previous three types. There are colored arrows and circles, which are similar to highlighting data using color. Other icons are similar to stripes. They show a quantitative measure with the help of graphics. Let’s consider this type of data highlighting using the example of a slice “Sales by month”. The selected set of icons allows you to show the count using four vertical sticks. The first association when you see these icons is the level of the cellular signal. Therefore, they look familiar and informative. To create this rule, open the Data marker (rules manager) and add a new rule. Rule type - Highlight all cells dependent on value. Highlight type - Icon set. Then, we select a set of icons. As you can see, the sets contain different number of icons: 3, 4, 5. This means that the data set will be divided into the same number of ranges. The Reverse order button is located to the right of the icon set, which allows you to arrange the icons in reverse order. Below, we need to specify the type and value for each range. This can be a number, percentage or percentile. Since, we create a rule for the column, then we select the type Percent by col, instead of the Percent by row, by default. Values are already filled with approximately equal shares. Let's leave them alone. Highlighting of cells corresponding to condition The second type of data selection rules provides for highlighting only those cells that correspond to the specified condition. Consider the example of a Simple Cube slice. We have highlighted the price of yellow with a value of more than 1000. To add this rule, select the first column (measure Price) and open the data selection rules manager (Data marker). Create a new rule: The rule type is Highlight cells matched condition. In the first field, select the type of the value to be compared. It can be: Value; Text; Date; Empty; Not Empty. Depending on the selected type, the set of conditions in the second field is changed. For Value: greater; between; equal; not equal; less; greater or equal; less or equal. For Text: contains; not contains; starts with; ends with. For Date: greater; between; equal; not equal; less; greater or equal; less or equal. For Empty and Not Empty conditions are absent. The third field is for the reference expression, that is, with what we compare. Below we set the style of the selected cell: By default, the Solid color style is selected with a simple background fill in one color. But the set of styles cannot be called "poor": Selecting a gradient, you need to specify two colors. Also, here you can change the font and its color. Conclusion In conclusion, I want to draw your attention to the fact that you can add as many rules as you like to highlight the color, and some of them will overlap. To set the priority, you need to move the rules in the rule manager using the arrow icons. The higher the priority, the higher the rule in the list should be. Tags: .NET, FastCube ### Configuring the API for building FastReport Online Designer URL: https://www.fast-report.com/blogs/api-builder-online-designer Summary: We talk about automating the build process of FastReport Online Designer Builder via the API when changing the product version. We talk about automating the build process of FastReport Online Designer Builder via the API when changing the product version. We talk about automating the build process of FastReport Online Designer Builder via the API when changing the product version. FastReport Online Designer Builder now can build the designer using the API. Previously, users had to manually build in FastReport Online Designer Builder. You could download the result or receive it by mail. Now you can automate this process to update FastReport Online Designer if the product version changes. To do this, you need to create features that work with the API and deploy the designer build on your servers. As an example of using the API, you can request a product version once a day, and if it has changed, automatically request a build. And after that, host the updated designer. API Key A user is authenticated using an API key, which you can create in FastReport Online Designer Builder. To create a key, you need to: 1) Log in to the build service under your account. 2) Go to the "API Keys" section (located when clicking on three dots). 3) Click the ”+ Create" button After that, you will have a new API key generated. You can click on the key to copy it and use it for authentication in API. Build request To request a build, make a POST request at: ``` https://dsg2014.fast-report.com:3000/builderAPI/build ``` The request body must contain at least your API key. If you don’t specify the parameter, its default Value will be used! Minimum request example: ``` { "APIkey": "Your API key" } ``` The parameters that the API accepts for build are described below. Parameters Parameter Description  themes  The build theme.  Data type: string  See the values in the themes table.  components  Components to be included in the build.  Data type: array  See the values in the components table.  bands  Bands to be included in the build.  Data type: array  See the values in the bands table.  controls  The dialog box controls to be included in the build.  Data type: array  See the values in the controls table.  plugins  Plugins to be included in the build.  Data type: array  See the values in the plugins table.  customization  The control panels to be included in the build.  Data type: array  See the values in the panels table.  config  Build configuration.  Data type: object  See the object structure in the settings table. Themes  Value  Description  none  No theme  classic  Use classic theme  mini  Use minimal theme Components  Value  Description  TextObject  Text Component  PictureObject  Picture Component  ShapeObject  Shape Component  PolygonObject  Polygon Component  PolyLineObject  Polyline Component  LineObject  Line Component  SubreportObject  Subreport Component  TableObject  Table Component  MatrixObject  Matrix Component  AdvMatrixObject  Advanced Matrix Component  BarcodeObject  Barcode Component  RichObject  Rich Text Component  CheckBoxObject  Checkbox Component  CellularTextObject  Cellular Text Component  LinearGauge  Linear Gauge Component  SimpleGauge  Simple Gauge Component  RadialGauge  Radial Gauge Component  SimpleProgressGauge  Simple Progress Gauge Component  HtmlObject  HTML Component  SVGObject  SVG Component  ContainerObject  Container Component  DigitalSignatureObject  Digital Signature Component  MapObject  Map Component Bands  Value  Description  ReportTitleBand  Report Title  ReportSummaryBand  Report Summary  PageHeaderBand  Page Header  PageFooterBand  Page Footer  ColumnHeaderBand  Column Header  ColumnFooterBand  Column Footer  DataHeaderBand  Data Header  DataBand  Data  DataFooterBand  Data Footer  GroupHeaderBand  Group Header  GroupFooterBand  Group Footer  ChildBand  Child Band  OverlayBand  Overlay Band Controls  Value  Description  ButtonControl  Button  CheckBoxControl  Checkbox  CheckedListBoxControl  Checked List  ComboBoxControl  Text with Combobox  DateTimePickerControl  Date Time Picker  LabelControl  Label  ListBoxControl  List  MonthCalendarControl  Calendar  RadioButtonControl  Radio Button  TextBoxControl  Text Box Plugins  Value  Description  CODE  Page with Code  GUIDES  Guidance Lines  POSITION_BLOCK  Position of the component when moving  RULER  Ruler  BAND_HORZ_RESIZER  Band Horizontal Resizing  HOTKEY  Hot Keys  CONTEXT_MENU  Context Menu  DBLCLICK  Double Click Panels  Value  Description  Properties  Properties Panel  Events  Events Panel  ReportTree  Repot Tree Panel  Data  Data Panel  Preview  Page Preview Panel Settings  Value  Description  features  Data type: array  See the list of values in the features table.  entryName  Data type: object {     "name": "index",     "ext": "html" }  publicPath  Data type: string.  Public path to the application on the server.  saveSuccessRedirect  Data type: object. {       "url": null ,       "blank": false ,       "useParent": false ,       "removeConfirmation": true }        customFonts  Link to fonts  API  Data type: array  See the list of values in the API table. Features {     "name": "SHOW_BAND_TITLE",     "enabled": true } Object contains feature key and checkbox  Value  Description  SHOW_BAND_TITLE  Band Title  ADD_BANDS  Adding bands  SORT_BANDS  Sorting bands  RESIZE_BANDS  Resizing bands  CONFIRM_BEFORE_EXIT  Confirm Before Exit  MOVABLE_POPUPS  Movable Popups  REVISION_FILES  Hash In File Names  MINIFY  Code Minification  ENABLE_PREVIEW_BUTTON  Preview Button  READONLY_MODE  Disable Editing  AUTOSAVE  Autosave API {     "name": "API_SAVE_REPORT",     "value": "../FastReport.Export.axd?putReport=#{id}" } The object contains an API key and a link  Value  Description  API_SAVE_REPORT  Report saving  API_MAKE_PREVIEW  Report Preview  API_GET_REPORT  Getting report  API_GET_FUNCTIONS  Getting functions  API_GET_CUSTOM_CONFIG  Application Config  API_GET_CONNECTION_TYPES  Connection Types  API_GET_CONNECTION_TABLES  Connection Tables  API_GET_CONNECTION_STRING_PROPERTIES  Connection String Properties  API_MAKE_CONNECTION_STRING  Creating the Connection String  API_GET_MSCHART_TEMPLATE  MSChart Template After requesting a build, you will get a UUID to check its status. Example of the response: ``` { "message": "Successfully queued", "code": 0, "payload": { "UUID": "25d36576-c5e2-49f4-8ab0-73838c457336" } } ``` Checking the build status To check the build status, make a GET request to: ``` https://dsg2014.fast-report.com:3000/builderAPI/checkBuild/{apiKey}/{buildUUID} ``` The link should contain your API key used for the build and the UUID you got when you requested it. You can see several statuses in the response depending on the build stage. 1 (QUEUED) –The build is scheduled and is now queued. 2 (PROCESSING) –Build started but still processing. 3 (BUILT) – The completed, you can download it. Example of the response: ``` { "code": 0, "payload": { "statusCode": 2, "statusText": "PROCESSING" } } ``` If the build is completed, you will receive a download link in the response. Downloading the latest build To download the built application, make a GET request to: ``` https://dsg2014.fast-report.com:3000/builderAPI/download/{apiKey}  ``` Specify your API key in the link. In response to the request, you will receive an archive file with the built application. Getting the current version of FastReport Online Designer Make a GET request to get the current version of the application: ``` https://dsg2014.fast-report.com:3000/builderAPI/designer-version/{apiKey} ``` Specify your API key in the link. In response, you will receive the current version of FastReport Online Designer. Example of the response: ``` { "payload": { "version": "2023.1.3" }, "code": 0 } ``` Our team will continue to improve the client experience when working with FastReport products. For any questions, contatc our support at  support@fast-report.com . Tags: FastReport, Online Designer ### Connect datasource to OLAP pivot cube (FastCube .NET) URL: https://www.fast-report.com/blogs/connect-datasource-olap-pivot-cube-dotnet Summary: FastCube .NET is powerful OLAP Engine which adds Business Intelligence to your application. Let's look how to bind data to its pivot table! FastCube .NET is powerful OLAP Engine which adds Business Intelligence to your application. Let's look how to bind data to its pivot table! FastCube .NET is powerful OLAP Engine which adds Business Intelligence to your application. Let's look how to bind data to its pivot table! FastCube .NET is powerful OLAP Engine which adds Business Intelligence to your application. Let's look how to bind data to its pivot table! Typically, the data in the OLAP cubes are loaded from the database. To fill a cube with data, you need to create a data source. And here I would like to say a few words about these sources. A cube can receive data from: • Database (Data source) - creates a connection to the database; • Stream - a cube can be received over the network as a stream, opened from a file, or downloaded from a database; • Application code (Manual) - filling the cube with data directly from the application code; • Cube file (File) - the data is already contained in the cube file along with the data scheme. For a cube filled manually or from a database, we also need to create or load its representation. For example, you can load a ready-made representation from the mds file. In this article, we'll look at the way of connecting a cube to a database. But first, let's look at the file with the data scheme. ``` ```  As you can see, this is a simple XML file. Therefore, there will be no difficulties in understanding it. The fields that we will get from the database are declared in the section. The section contains fields that will be displayed on the X axis. Similarly, the section, only for the Y axis, is the same. Both the X axis and the Y axis contain measurement fields, depending on the orientation of the cube. The section contains fields-measures. This is all we need to know at the initial level. Our task is to load this scheme into a cube and fill it with data from the database. The easiest way to explain how this can be done is by the example. Therefore, let's create a WindowsForms application. Add libraries in the project references: FastReport.Olap, FastReport.Bars. They can be found in the folder with FastCube.Net installed: "C: \ Program Files (x86) \ FastReports \ FastCube.Net Professional". "Drag" the following components to the form from the toolbox: cube, dataSource, dbDataSet, slice, sliceGrid, oleDbConnection, oleDbCommand. Now you need to configure all these components. Let's start by connecting to the database. In the oleDbConnection1 properties, set the ConnectionString value to "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" C: \ Program Files (x86) \ FastReports \ FastCube.Net Professional \ demo.mdb " This is a demo database from FastCube.Net. Proceed to the component oleDbCommand1. In its CommandText property, we write the following SQL query: ``` SELECT items.OrderNo, items.PartNo, items.Qty, orders.CustNo, orders.EmpNo, orders.SaleDate FROM (items LEFT OUTER JOIN orders ON items.OrderNo = orders.OrderNo) WHERE (items.OrderNo < 1100) ```  For the dbDataSet1 component, you need to set the DbCommand property - oleDBCommand1. And for DataSource1, select DataSet - dbDataSet1. Now configure cube1. Choose DataSource - DataSource1. And SourceType is a DataSource. For the slice1 component, we need to set only one property -  the cube. The sliceGrid1 component is the only visual component that we have added: In its properties we set slice-slice1. Unfortunately, we can not do without code. So let's create an OnLoad event handler for the form: And add the following code: ``` private void Form1_Load(object sender, EventArgs e) { string filePath = "J:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/dataset_en1.mds"; cube1.Active = true; slice1.Load(filePath); } ```  Here, we load a cube and a slice. You must activate the cube so that it loads data from the database. And now launch the application: Thus, connecting a cube to a database is not difficult. The mds file with the scheme can be obtained by creating a cross-table view with your manually (by dragging the fields and making additional settings with the mouse), and then saving it with the slice.Save () method or clicking the "Save" button on the cross-tab toolbar.scheme Tags: .NET, .NET, FastCube, FastCube, Data Source, Data Source ### Connecting a report to data from FastReport in Lazarus URL: https://www.fast-report.com/blogs/connecting-data-in-Lazarus Summary: 2 ways to set acces to the database from Lazarus reports 2 ways to set acces to the database from Lazarus reports 2 ways to set acces to the database from Lazarus reports In the previous article about  working with charts and graphs , we were already familiar with business graphics and barcodes. Now it is time to complicate the task and work with different data sources. Most reports are typically based on data from databases. To access this data Lazarus provides powerful mechanisms which are used by FastReport.  Data access components This refers to the components in the DataAccess tab, which can act as data sources for the report. Any TDataSet successor component can be used for this purpose. In addition to accessing data defined in the project, FastReport allows you to create new components in run-time. Our company's principles for creating data access components are very similar to those used in the Lazarus environment - we impose a component on the form and configure its properties in the object inspector. Functionality of run-time connections is a little more limited in the choice of database formats, so at the time of writing this article, only DBF and SqLite3 can be created in run-time. This refers to the components in the DataAccess tab that use the TfrxDBDataSet connector component from the FastReportn tab to connect a table or other data source to the band. This component acts as an intermediary between the data source and the FastReport core. The component is responsible for navigating through records and accessing fields. This allows you to avoid tying the FastReport core to any data access library. FastReport can work simultaneously with BDE and any other library, or retrieve data at all from a source not associated with the database, such as an array or file. The TfrxDataSet component is designed to work with data sources, and its versatility should be noted. It can use all connections inherited from TDataSet. And this is BDE, CVS and the vast majority of other libraries! To work with other data sources (array, file, etc.) the TfrxUserDataSet component is used. To link a TfrxDBDataSet component to a data source, one of the options must be configured: The DataSet property, which links directly to a table or query. The DataSource property, which connects to the TDataSource component. Both methods of connection are equivalent, just the first does without the TDataSource component. In order to make the component and its associated data available in the report, you need to explicitly specify which data sources are used in the report. In the FastReport designer, select the menu item "Report/Data..." and in the window that appears, check the boxes next to the required sources. Description of components in the FastReport designer The TfrxDBFTable component is designed to organize access to a .dbf database table and has the following properties: FilePath specifies the path to the database folder. TableName assigns the name of the database. By selecting a database, you will also change the path. FieldAliases allows you to specify custom field names. Filter contains an expression to filter the records. Filtered determines whether to apply a filter. IndexFieldNames stores the names of the fields which form the index. IndexName defines the name of the secondary index. MasterFields includes the fields associated with the master dataset. Master is the same as the master dataset. UserName sets the Alias (user name) of the dataset. The component's property assignments are the same as the TDbf properties in Lazarus. To connect the component to the database table, just fill in the TableName property. Open the table by setting Active := True. FieldAliases property editor allows you to select the fields which will be available when accessing the table, and set custom name for each field and for the whole table. The MasterFields property editor is used to create master-detail relationships between two tables. To link two tables with a master-detail relationship in a slave table, specify the master table in the Master property and invoke the MasterFields property editor. If the table has secondary indexes to be used, first configure the IndexName property. This editor allows you to visually link the master and detail fields of datasets. When sets are linked by a master-detail relationship, the contents of the detail set are filtered as you navigate through the master set, so that it contains only records that are relevant to the current master set record. To link set fields, select the field from the list on the left (detail set), then the field from the list on the right (master set), and click "Add" button. This will move the field mapping to the lower list. To clear the bottom list, use the "Clear" button. It is important to note that the fields to be linked must be of the same type and be key. But in Lazarus itself these properties do not work with selections (Master-Detail sorting and filtering) for TDbf components, and since we use this component, it doesn't work for us either. The TfrxLazSqliteQuery component is designed to make SQL queries to the database using SqLite3 and has the following properties: Database specifies the database connection name (default is always "sqlLite"). FieldAliases allows you to specify custom field names. Filter stores an expression to filter the records. Filtered determines whether to apply a filter. Master is the same as Master dataset. Params displays a list of query parameters. SQL includes the query text. UserName sets the alias (user name) of the dataset. IgnoreDupParams - if true then names of query parameters will not be duplicated in the parameter editor. The SQL property has its own editor for filling the SQL query:  The Params property also has its own editor. It is available if the query text contains parameters. A parameter can be of two types: the one assigned from the master data set and the other one with a specific value, where the value can be a constant, a reference to a variable or an object property.  In case the parameter is taken from the master dataset, TfrxLazSqliteQuery.Master property must be configured. The dataset must contain a field with the same name as the parameter. It is not necessary to specify parameter type and value. TfrxLazSqliteDataBase component is used to connect to SqLite3 database. Its purpose is similar to the TSQLite3Connection and TSqlTransaction components, and it has the following properties: Connected - when True is active, the connection is activated. DatabaseName allows you to select a name for the database. LoginPrompt defines whether the user must be asked for a password when connecting to the database. If LoginPrompt = False, then user name and password must be specified in the connection string. Building reports with database access Consider building a simple report that contains data access components, where we will use the LDemo demonstration database as an example. To begin, let's create a project, with which we will conduct our experiments. Make a new project in Lazarus and place on the form components TfrxReport, TfrxDesigner, TfrxDialogControls, TfrxDBDataset, TDbf. Configure the connection to the database. To do that, find the TableName property of Dbf1 and in the dialog box, choose the database file - anything with a .dbf extension will work. Then set frxDBDataset1 property DataSet to "Dbf1". Then add the button to the form and enter the following code in OnClick: ``` procedure TForm1.Button1Click(Sender: TObject); begin frxReport1.DesignReport; end; ``` Remember to allow threads for the Linux project. This was described  in the installation article . After that, compile and run the project. Nothing else is required to create the end-user report designer. When you click on Design, the designer opens with an empty report. Consider building simple reports in this environment. By the way, at this point you already know how to connect databases to FR from Lazarus. A simple "List" type report We will now output data from one database table already using FR at runtime. Do the following steps to build the report: Click the "New Report" button on the Designer toolbar. FastReport will create an empty report containing pages "Code", "Data", "Page1". Switch to the "Data" page and put the "DBF Table" component on the page: Select the database to be connected. To do this, set the TableName property in the Object Inspector by selecting the customer.dbf file from the demo project. To connect the Level 1 Data bank to the table, double-click on it and select our table in the window that will open. Then drag and drop the desired fields from the Data Tree window onto the report sheet. Our report will then look something like this: To view the resulting report, click on the "Preview" button on the toolbar.  Useful data handling options The Data tab isn't just for data access components. Using the Text and Drawing objects, you can place explanatory labels and draw simple diagrams, as shown in the figure below: Tags: VCL, Lazarus, FastReport, Delphi, Academic ### Connecting to a PostgreSQL database in .NET application URL: https://www.fast-report.com/blogs/connect-PostgreSQL-database Summary: Find out how through the library Npsql.dll in the plugin, connect PostgreSQL for your project in FastReport.NET without popular errors Find out how through the library Npsql.dll in the plugin, connect PostgreSQL for your project in FastReport.NET without popular errors Find out how through the library Npsql.dll in the plugin, connect PostgreSQL for your project in FastReport.NET without popular errors Our FastReport .NET offers rich features and wide functionality. Today we will look at how to connect to a database through the FastReport plugin for the report designer. This plugin is based on the Npsql.dll library. First, let's figure out how to build the right plugin for FastReport .NET. After that, we will create a connection between our database and the report. First, we should build a plugin to connect to PostgreSQL. For this, go to the directory where your FastReport .NET is installed and follow this path: Extras\Core\FastReport.Data\FastReport.Data.Postgres . Next, open the project FastReport.Data.Postgres.сsproj . Often you will see these errors when you open it for the first time: Don't worry. To deal with it, just remove the FastReport project from dependencies. Instead, add a reference to FastReport.dll, which is located in the folder with the installed FastReport .NET. Step 1. Remove the project dependency. Step 2. Go to the tab for adding references Step 3. Click “Browse…” and go to the directory with the already installed FastReport.NET. Step 4. Select FastReport.dll from the list of files. Step 5. Build the project and you will see that there are no errors. We have successfully built the PostgreSQL connector, now let's add it to the report designer. It will be easy. Open the report designer directly, go to its settings and connect the dll file to make our connector work properly. Then we go via the following path: Extras\Core\FastReport.Data\FastReport.Data.Postgres\bin\Debug\net452 and select the FastReport.Data.Postgres.dll file, which we will add to the project. Next, restart the report designer and select “Add Data Source” in the “Data” tab. Now click on “Add Connection” and select the PostgreSQL connection. Enter data and watch whether it is being connected properly. In this article, we have learned how to connect the PostgreSQL database to the report designer. As you can see, FastReport .NET allows to easily build and add various connectors to various databases. Tags: .NET, FastReport, Data Source, Plugin ### Connecting to cloud storage in FastReport VCL URL: https://www.fast-report.com/blogs/authorize-vcl-cloud-storages Summary: We are dealing with special components "Transports" for connecting to Dropbox, Google Drive, Box, OneDrive. We are dealing with special components "Transports" for connecting to Dropbox, Google Drive, Box, OneDrive. We are dealing with special components "Transports" for connecting to Dropbox, Google Drive, Box, OneDrive. Beginning from the first release of FastReport VCL 6 there is an ability to set connections for Dropbox, Google Drive, Box, OneDrive through special components – “Transports”. To improve the experience of internet transports using starts from FastReport VCL 2021.3 we have reworked authorization to OAuth2.0 by using the default browser in the operating system and extend the connection dialog. Important! For the HTTPS protocol to function properly, the following OpenSSL libraries are required: libssl-3.dll and libcrypto-3.dll. These libraries can be found in the directory with the main demo application. They need to be copied to the application's folder or the system directory. Content: Connection to Dropbox Connection to Google Drive Connection to Box Connection to OneDrive What are the benefits of such an approach? The customer uses a familiar and trustworthy browser. Which’s increases security. The application does not require embedding of browser components which decreases application size. Fast connection for customers who are already authorized in a default browser. Does not require another authorization. The connection process to cloud storage from FastReport VCL 2021.3 is similar and only has differences in setting-up on the cloud storage side. That’s why we start with the base functionality of the connection dialog. The fields “Client ID” and “Client Secret” are using for authorization data from cloud storage and generate in the control panel of cloud storage. The buttons on the right from authorization fields are using to hide or show information inside these fields. For fast access to a control panel of cloud storage use a button with a question sign-on authorization dialog (Open configuration page). To save the received authorization token just set the “Save authorization token” checkbox. The authorization token is stored in the system registry or configuration file as encrypted data. The EncryptionKey property is responsible for the encryption key for selected transport components. This property is only available from the program code. The developer can change the encryption to save authorization data based on a security policy used in the company. Adding of the transport to the application Open Embarcadero Rad Studio components palate and expand “FastReport VCL Internet transports”. Select a component you want to use and place it on an application form. It’s possible to use the context menu right on the transport component. That should show a connection dialog to set a connection from IDE. Press the “Edit connection” submenu item. By default, transports are using 9898 ports for authorization answers from the default browser. In case when this port is already in use or you’re planning to use this port in the future, FastReport VCL allows you to change the default port through the ListenerPort property. Further, we will assume using of 9898 port by default. Now let’s look at the connection stages of these transports: Dropbox. Google Drive. Box. OneDrive. Important! The user does not need to follow all of the following steps each time for authorization. This setup should be made once by the cloud storage administrator. After all authorization steps are complete those data can be used for other users as well. Connection to Dropbox When the user wants to open or save to a file using transport the authorization dialog should appear (in case the user is not already authorized before). To open the control panel page of cloud storage press on the button with the question sign on the top right of the authorization window. After Dropbox control panel should appear in a default browser. If the user is not authorized in Dropbox then an authorization page will be displayed which can be used to login into Dropbox. On this page, you need to select API, access level, and set application name. Next press the “Create app” button. The application is created. It should automatically redirect to the application options page. We need to scroll down the page and find the “App key” and “App secret” fields. Just copy the “App key” and “App secret” fields to the FastReport VCL authorization dialog. Return to a default browser with the setup page and set “Redirect URIs” filed to “http://localhost:9898” and press the “Add” button. Pay attention, the port in the hyperlink should be the same value as the ListenerPort property of the transport component. In addition, you can set other settings like the lifetime of authorization token. Now we need to set access rights for the application. Go to the “Permissions” tab and set checkboxes in front of access rights (read and write, reading of file list and etc.).  After all the checkboxes are set, press “Submit”. Now we can return to FastReport VCL and put “Save authorization token” and “Remember properties” checkboxes if we need to save authorization data. Press “Ok”. The default browser should appear. A user has to log in. When authorization is done connection warning will be shown. Press “Continue” and the next dialog should appear. Press the “Allow” button. You will see a message with a suggestion to close the window. Our application is set and ready to use. At this stage, we can send files to cloud storage. Connection to Google Drive The standard authorization dialog is the same for all transport filters and you can use descriptions from the above. Let’s move to the setup properties of Google Drive. You can call it by using the button with a question sign. If this account doesn’t have any projects created to work with Google API, we need to create one as a first step. Push the “Create project” button. Enter the name of the project and push “Create”. Use the “Select project” button to choose an active project. Select the project created before and push “Open”. Switch to the “OAuth consent screen” category. We need to select a user’s type who are going to use this cloud storage: internal use with access only for organization users or for all Google accounts. After that hit the “Create” button. Next enter the name of the application and contact e e-mail. Hit  “Save and continue”. In this step, we can set up scopes and we can skip it for Google Drive. Push the “Save and continue” button. The next step allows set up access to the application for user groups. If you would like to publish access to the application – skip this step. Hit “Save and continue”. The application created moves to the “Back to dashboard” tab. Switch to the “OAuth consent screen” tab and push the “PUBLISH APP” button. This will create access to the application. Open this link and turn on Google Drive API, for an active project hit the “Enable” button. Now we need to create authorization keys. Switch to the “Credentials” tab. Hit on the “Create Credentials” and select “OAuth client ID”. The next step is to select an application type ( Desktop App in our case). Enter any name of the application and hit the “Create” button. The client for authorization is created. Just copy values of the “Client ID” and “Client Secret” fiends in the same fields on the FastReport VCL authorization dialog. Push the “Ok” button. Now we will see a new tab in the default web browser. Select an account for authorization. Next warning about the unsafe application may appear. Hit the “Advanced” and  Go to Name of Application (unsafe). Another access dialog will be shown. Select access rights and push the “Continue” button. Now you can close the web browser window. When the connection was successful FastReport VCL default file explorer will appear. Connection to Box The standard authorization dialog is the same for all transport filters and you can use descriptions from the above. Let’s move to the setup properties of Box. You can call it by using the button with a question sign. Hit the “Create New App” button. Then select an application type. We are using “Custom App”. Next set an authorization method and name of the application. Select “OAuth 2.0” and enter the application name. Push the “Create App”. Then Scroll down next page with configuration settings to the “Client ID” field. Copy values of “Client ID” and “Client Secret” fields to the same fields on the FastReport VCL authorization dialog. Go back to the web browser with the settings page. Fill the “OAuth 2.0 Redirect URI” field with this link  http://localhost:9898 . Pay attention, the port in the hyperlink should be the same value as the ListenerPort property of the transport component. Set “Write all files and folders stored in Box” checkbox if you need write access rights. Push the “Save Changes” button. Go back to the FastReport VCL dialog and hit “Ok”. A new window will be shown with suggestions to login. After authorization hit “Grant access to Box”. When the connection was successful FastReport VCL default file explorer will appear. Connection to OneDrive The first step is the same. You can check it in the Connection to Dropbox part above. Let’s open Microsoft Azure settings. First of all, we need a new application. Push the “Register an application” button. On the next step enter the application name and Redirect URI (bottom of the page). Push the “Register” button. It will create the application. Now copy “Client ID” into the FastReport VCL authorization dialog. Open the “Certificates & secrets” category. Hit “New client secret”. Enter a description and expiration time. Hit “Add”. Now copy secret from the “Value” field into the FastReport VCL authorization dialog. Push the “Ok” button. New window with default web browser will be shown with suggestions to log on. After authorization hit click “Yes”. We have finished the connection setup. Now we know how to connect to each of could storages supported by FastReport VCL. Tags: VCL, Lazarus, FastReport, Delphi, Web Storage ### Connecting to Elasticsearch URL: https://www.fast-report.com/blogs/connecting-elasticsearch-json-net Summary: We are talking about a new feature in FastReport .NET, Core, Mono, Open Source in the form of an Elasticsearch connection as a data source. We are talking about a new feature in FastReport .NET, Core, Mono, Open Source in the form of an Elasticsearch connection as a data source. We are talking about a new feature in FastReport .NET, Core, Mono, Open Source in the form of an Elasticsearch connection as a data source. Now FastReport .NET, Core, Mono, and OpenSource products allow connecting to Elasticsearch. Elasticsearch is a scalable utility program for full-text search and analytics, which allows storing, searching, and analyzing large volumes of data quickly and in real-time mode. You may obtain data in JSON format from Elasticsearch. FastReport .NET has a connection to JSON and it is rather convenient to use data in this format. That is why this format will be used as a middleware between FastReport .NET and Elasticsearch. Important notice! FastReport implements only connecting to Elasticsearch as a source of data, without the opportunity to search in the data stored in it. To create a connection to Elasticsearch, click the Data tab in the Designer and select Add data source. In the window that appears click New connection. To connect, you will need endpoint Elasticsearch and indication of the titles for data access, for example, authorization data (there is a grid for that below). If the data access is granted, a list of tables will appear after clicking the Next button. For successful connection, put a tick on the left of the table title. Then the connection setting will be complete. After connecting the data source, you have to connect a band to it. As a result, the report will use data from the created connection to Elasticsearch. If you need to select data for connection, you may make a GET enquiry and use it as a JSON connection string. In the example below you may see a search for records containing the word Bruno in the name field and are located in the demo index (these are the names of the table in Elasticsearch). Also, if there are over 10 records, you will have to add the size parameter and indicate the necessary number of records in it. In the report you will also have to indicate the name of the data source in the DataSource band property; then the data will be extracted from the source to the report. An example of connecting to Elasticsearch from the code: ``` // create ESDataSourceConnectionStringBuilder instance ESDataSourceConnectionStringBuilder builder = new ESDataSourceConnectionStringBuilder(); // set Elasticsearh end point builder.EndPoint = "http://192.168.1.194:9200/"; // create ESDataSourceConnection instance var connection = new ESDataSourceConnection(); //set connection string connection.ConnectionString = builder.ConnectionString; // init all table connection.CreateAllTables(); // set name connection connection.Name = "NewConnection"; // create Report instance var report = new Report(); // add connection to report report.Dictionary.Connections.Add(connection); // set connection show connection.Enabled = true; // choose table with name "demo" and connect it to the report foreach(TableDataSource table in connection.Tables) { if (table.Name == "demo") table.Enabled = true; } ``` As a result of executing this code, we will be able to see a new “demo” table in the Designer in the list of available connections. Now you know more about the opportunities for creating a connection to the Elasticsearch database. If you need to select data, you may use the connection to JSON. Tags: .NET, .NET, Mono, Mono, FastReport, FastReport, Core, Core, JSON, JSON ### Connecting to MsSQL Stored Procedures using code URL: https://www.fast-report.com/blogs/connect-mssql-dotnet Summary: In FastReport .NET it has become easier to use prepared scripts for fetching data from the database in reports using procedures. In FastReport .NET it has become easier to use prepared scripts for fetching data from the database in reports using procedures. In FastReport .NET it has become easier to use prepared scripts for fetching data from the database in reports using procedures. We continue to develop new FastReport .NET functions. Our team is increasingly expanding the features of our library for generating reports. With a recent update, we have added the function of connecting to MsSQL stored procedures. These stored procedures are a set of instructions that are executed simultaneously. Thus, the stored procedures allow you to streamline complex operations and bring them into a single object. Previously, you could only connect to them via a database query. Now it is enough to use the standard scheme for connecting to database tables. Procedure icons will be different. Also, if the procedure has input parameters, a window with its parameters will appear when it is selected. In this window, you need to set parameter values if necessary. If you use the default values, then leave the Expression and Value fields empty. If the procedure returns output parameters, then they will appear in the “Report Parameters” after creating the connection. Such parameters will be updated only when the information is uploaded into the data source. Calling the procedure from code: ``` // Create the MsSqlDataConnection object var connection = new MsSqlDataConnection(); // Set the connection string connection.ConnectionString = @"Data Source=DESKTOP-43LGTAI;AttachDbFilename=; Initial Catalog=EmployeeCaseStudy;Integrated Security=True;Persist Security Info=False;User ID=;Password="; // Initialize all tables connection.CreateAllTables(); // Set the connection name connection.Name = "NewConnection"; // Create a Report Object var report = new Report(); // Add the connection to a report report.Dictionary.Connections.Add(connection); // Enable connection display connection.Enabled = true; // Select a table and connect it to the report foreach (TableDataSource table in connection.Tables) { if (table.Name == "sp_GetUser") { foreach (CommandParameter parameter in table.Parameters) if (parameter.Name == "@id") parameter.Value = 1; table.Enabled = true; } } ``` You can find procedures in the list of tables by comparing them with ProcedureDataSource. Now it will be faster and easier for FastReport .NET users to use pre-prepared data select scripts in several reports. Tags: .NET, FastReport, Data Source, Stored procedures ### Connecting to MySQL DB from the report URL: https://www.fast-report.com/blogs/connecting-report-to-mysql Summary: Let's take a closer look at how to connect to a MySQL DB from a FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to connect to a MySQL DB from a FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to connect to a MySQL DB from a FastReport .NET report. Find more usefull tips and articles in our blog. It is known that FastReport .NET can work with almost any database. And quite often the users the question arises, how to connect MySQL database to your report. In this article we will look at the process inside and out, and in two versions:  1. In the first method, you can use special plugin to connect to the MySQL database. This plug-in is a dll library. To obtain this library, you need to build the project from FastReport .NET delivery. It is located in the folder: FastReport.Net\Extras\Connections\FastReport.MySQL. After assembly in the bin folder you will find FastReport.MySQL.dll library. Open the report designer. Open the File-> Options menu: On the Plugins tab add our library by using the Add button. Now restart the designer. Add a new data source in the report. In the Data Wizard create a new connection: In the list of connection types there is a new one - MySQL connection. Choose it: Fill the fields and click Ok. In the Data Wizard, select the table from the database “world”. For example, city: Click Finish to complete the wizard. That's all. The obtained data can be used in the report.  2. Consider the second method - use the native connector ODBC Driver for MySQL. You can download it from the developer - http://dev.mysql.com/downloads/connector/odbc/. The installation does not cause problems - everything is simple and clear. Next, run the report designer and create a new report. On the Report tab, add a new data source using the icon . In the Data Wizard, create a new connection (New connection ...): In the connection editor, select the type of connection - ODBC connection: Switch the radio button to "Use connection string:". And press the button  to create a connection string. In this case you will be prompted to select a data source: Click the button "New ...". The wizard of creation data source will be launched: Choose one of the two available: MySQL ODBC. Ansi or Unicode encodings depends on your database. Click "Next." And set the connection options: After closing this window, select the created connection in the "Select Data Source" box. Once again we see the connection settings. Enter your password and click Ok. Thus we get the customized connection in our Data Wizard: Click OK. In the wizard, click Next and proceed to the tables selection: We have considered two ways to create a connection to the database MySQL. The first method is a little more complicated in the beginning, when you want to build a library, but more convenient for subsequent reuse plugin. The second method seemed to me less convenient for subsequent use. Tags: .NET, FastReport, Data Source ### Connecting to PostgreSQL DB from the report URL: https://www.fast-report.com/blogs/connecting-postgre-sql-db Summary: Let's take a closer look at how to connect to a PostgreSQL DB from a FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to connect to a PostgreSQL DB from a FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to connect to a PostgreSQL DB from a FastReport .NET report. Find more usefull tips and articles in our blog. In this article we will look at ways to connect to a PostgreSQL database from FastReport .NET report. FastReport provides a plug-in report designer that allows you to connect to Postgres. At the core of this plugin is Npsql.dll library. But first things first. First, we consider the connection to the database by FastReport plugin. And then, with the usual ODBC connector. The first method Open the solution Program Files (x86) \ FastReports \ FastReport.Net \ Extras \ Connections \ FastReport.Postgres \ FastReport.Postgres.sln. From it we will build FastReport.Postgres.dll library that will be used as a plug-in report designer. To build the project is required npgsql.dll library. Npgsql installer can be downloaded from here: https://github.com/npgsql/npgsql/releases. After installation of the connector, the library can be found in the GAC. build the solution FastReport.Postgres and obtain the required library. Open the report designer. In the menu File open the Options. Add the library built earlier in the Plugins tab: Restart the report designer. Now you can create a report. Add a new data source. In the wizard, the data source, select New Connection ... In connection settings, select the type of connection: Postgres connection. And define the settings of connecting to the database. Click OK. In the Data Wizard click Next. And select the desired table: Now consider the second method. For it we need the ODBC connector, which can be downloaded here: https://odbc.postgresql.org/. Install the ODBC driver and go to the creation of the report. In the Report Designer add a new data source. In the Data Wizard select New connection .... In the settings of the connection string, select the type of connection: ODBC connection. In the section Data source, select “use connection string”. And open the connection string builder with the button .  In the window that appears, we click the button “New ...”: Choose PostgreSQL ODBC Driver: Click Next. Define the name of the connection: Click Next. And move on to the connection settings: Click OK. Then OK again. And back in the Data Wizard. Click the Next button and proceed to the selection tables: That's all. We have reviewed with you two methods of connecting to the data within the report. Note that the first method is more convenient in the subsequent use of the PostgreSQL database in your reports. Also, it works faster than the connection via ODBC connector. Tags: .NET, FastReport, Data Source, PostgreSQL ### Connection plugin for Cassandra from FastReport .NET URL: https://www.fast-report.com/blogs/connect-plugin-cassandra-net Summary: A new plugin for connecting to Cassandra for FastReport.NET will help you connect huge amounts of data to your projects. A new plugin for connecting to Cassandra for FastReport.NET will help you connect huge amounts of data to your projects. A new plugin for connecting to Cassandra for FastReport.NET will help you connect huge amounts of data to your projects. We are pleased to present you a new plug-in for configuring а connection to Cassandra, which is available for FastReport .NET, FastReport Core, FastReport CoreWin, FastReport OpenSource. Let’s note an important detail that the order of the records will be overset because of the CassandraCsDriver library used by this connection. Cassandra — is а NoSQL distributed database system, which аllows to create highly scalable and reliable storages of huge data arrays in the form of a hash. To use it, you must first build the project: С:\Program Files (x86)\FastReports\FastReport.Net\Extras\Core\FastReport.Data\FastReport.Data.Cassandra After building the project, you will need to add the plugin to the application in one of two ways: 1. Add plugin via designer: 2. Add the plugin as a dependency when starting the project and register it in the code with the following command: FastReport.Utils.RegisteredObjects.AddConnection(typeof(CassandraDataConnection)); To create a connection to Cassandra, you need to click on the "Data" tab in the designer, and select the "Add Data Source" item. Click on the "New Connection" in the resulting window. Specify the database address(es), key space, port, username, and password. If there are no problems with access to the database, then a list of tables will appear after clicking the "Next" button. When connecting a table, you must check the box to the left of the table name. It will be possible to complete the connection only after that. Upon connecting the data source, you need to bind a band to it. The final report will use data from the created connection to Cassandra. An example of connecting to Cassandra from code: ``` // Create an object CassandraDataConnection var connection = new CassandraDataConnection(); // Create an object CassandraConnectionStringBuilder CassandraConnectionStringBuilder stringBuilder = new CassandraConnectionStringBuilder(); // Configure аn object CassandraConnectionStringBuilder stringBuilder.ContactPoints = new string[] { "localhost" }; stringBuilder.DefaultKeyspace = "uprofile1"; // Set the connection string connection.ConnectionString = stringBuilder.ToString(); // Initialize all tables connection.CreateAllTables(); // Set the connection name connection.Name = "NewConnection"; //Creаte аn object Report var report = new Report(); // Add a connection to the report report.Dictionary.Connections.Add(connection); // Enаble connection display connection.Enabled = true; // Select a table and connect it to the report foreach (TableDataSource table in connection.Tables) { table.Enabled = true; } ``` After executing this code, we can see in the designer a new connection with the "user1" table in the list of available connections. As you can see, it is now possible to create a connection to Cassandra and use the data stored there. Tags: .NET, FastReport, Connection, Core, Data Source, Designer, Open Source, Plugin ### Connection to a huge database CSV URL: https://www.fast-report.com/blogs/connection-database-csv Summary: Let's take a closer look at how to connect to a Huge CSV Database from a FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to connect to a Huge CSV Database from a FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to connect to a Huge CSV Database from a FastReport .NET report. Find more usefull tips and articles in our blog. Not so long ago in FastReport .NET was added the ability to load data from a csv file. In other words, a CSV file can now be used as a data source. This was done after some time from one of the users entered an interesting query to a support. He claimed that he has a CSV file that does not open, instead, an error message appears. The user kindly provided this file for testing. At first glance, it was thought that the file too is big, that is the reason why it can not be opened. But upon further examination it was revealed that the problem is not in the size of the file. As it turned out, the file does not entirely correspond to the CSV specification. In the file rows were found that did not contain separators. Apparently, they are used as comments, with any data yourself. It was decided to ignore such lines when data is loaded. As a result file has become loaded without any problems. It would seem that the problem is solved and we can settle down, but the idea of a large csv file did not give a rest. After some searching there was found a really huge file. This file size was 441 MB, seemingly not very awesome, but, nevertheless, it consisted of 31 columns and 2 458 525 lines. Testing this download brought dual results. On the one hand, the file opens that undoubtedly pleased. But it was a very sad fact that the file download took nearly half an hour. It is known two solutions to this problem. However, buying a new computer is not a good idea. Therefore, I had to spend some time to optimize the code. As a result, the file download has been achieved within two minutes Tags: .NET, FastReport, CSV ### Connection to NosDB (NoSQL) URL: https://www.fast-report.com/blogs/connecting-to-NosDB Summary: In this article, we'll look at the way to connect to the NosDb database inside the report with a plug-in for the designer. In this article, we'll look at the way to connect to the NosDb database inside the report with a plug-in for the designer. NosDB is a prominent representative of the NoSQL databases. It is designed for use on the .Net platform and has open source. NosDb, like many other non-relational databases, has a high speed and good linear scalability. In this article, we'll look at the way to connect to the NosDb database inside the report with a plug-in for the designer. NosDB is a prominent representative of the NoSQL databases. It is designed for use on the .Net platform and has open source. NosDb, like many other non-relational databases, has a high speed and good linear scalability. In this article, we'll look at the way to connect to the NosDb database inside the report with a plug-in for the designer. As you know, you can connect plug-ins to a report designer that expands the functionality of the program. One of the areas of expansion of functionality is connectors to different databases. Indeed, it takes a lot of time to find, install and set connectors for different databases. FastReport allows you to create plugins that make the process of connecting to data as much easier as possible. However, you need to pre-assemble a plug-in library from the project, which is included in the supply package of FastReport.Net and is located in a folder: C:\Program Files (x86)\FastReports\FastReport.Net\Extras\Connections\FastReport.NosDB Once you assemble the project – you will get FastReport.NosDB.dll library. The link to the library you need to add to the report designer settings on the Plugins tab:  After restarting the designer, you can create a data source of the report. In connection settings select NosDb connection: Here you need to enter the server address, user login and password (if configured), database name and collection. Collections are analogues of tables. You can specify one or more collections through a comma. At this point, you've only got to select the collections you need in the report in the next step:             Unfortunately, with NoSQL database we cannot use a SQL query to filter data at the stage of their preparation. So just look at the result: Tags: .NET, FastReport, Connection, Data Source ### Connection to SQLite DB from a report URL: https://www.fast-report.com/blogs/connection-sqlite-db Summary: Let's take a closer look at how to connect to a SQLite DB from a FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to connect to a SQLite DB from a FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to connect to a SQLite DB from a FastReport .NET report. Find more usefull tips and articles in our blog. In this article I would like to see a connection to a SQLite database from a report. We will look at this in two examples. The first - with the help of plug-in for Report Designer, the second - with the help of ODBC SQLite driver. So, to use a plugin from FastReports, you must first make it. To do this, open solution FastReport.Net\Extras\Connections\FastReport.SQLite. The references need to fix two links - at the library FastReport.dll and System.Data.SQLite.dll. The last one will have to download from the Internet. Build the solution. We get FastReport.SQLite.dll library in the bin \ Debug folder. Now open the report designer. On the File menu, select Options. Open the Plugins tab in the form that appears. Use the Add button to add libraries created above. Restart the report designer. On the toolbar, select the Report tab and add a new data source using the icon  . In the appeared Data Wizard, click the button “New connection...”.  Select the type of connection - SQLite connection. Below, we specify the path to the database. By default, the filter is set to extension "* .db3" in the window opening. My database has an extension of db, so that changes to ".". As a result, to connect the database only need to select a database file. Click OK. In the Data Wizard click Next and proceed to the selection of tables: That's all. 2. Now look at the second method - using SQLite ODBC Driver. First you need to download and install this driver. Open the report designer. Create a new data source, as above, by means of icon . Next, in the Data Wizard click the button “New connection ...”. Select the ODBC connection. In the data source switch to the “Use connection string”. And sets the connection string using the icon . In the window of selection data source, you need to create new data source. Select the SQLite3 ODBC Driver. Click Next.  We set database connection. Here we only need to select the database file using the Browse ... button. Click OK. Here is the configured connection: Click OK and return to the Data Wizard. Click the Next button. And proceed to the choice of tables. Thus, we have considered two ways to connect to the database SQLite. If you will often use this connection, I advise you to use the plug-FastReport.SQLite.dll - faster and more enjoyable to use. If you do not want to bother with the assembly  - use ODBC. But the second option will run a bit slower due to the extra layer. Tags: .NET, FastReport, Data Source ### Console utility FRConverter 1.0 (QuickReport 6, ReportBuilder 19 , Rave Reports to FastReport VCL 6) URL: https://www.fast-report.com/blogs/frconverter-console-utility Summary: Mass conversion of templates in one console utility FRConverter 1.0 instead of 3 convectors. Mass conversion of templates in one console utility FRConverter 1.0 instead of 3 convectors. Mass conversion of templates in one console utility FRConverter 1.0 instead of 3 convectors. Previously, there were several articles about converting QuickReport 6 and ReportBuilder 19 templates to *.fr3 format. But this is all inconvenient and requires additional effort to create a project and connect additional modules and creates difficulties when converting templates in bulk. We decided to create a console utility that would combine the three converters QuickReport 6, ReportBuilder 19, Rave Reports in FastReport VCL  and allow bulk conversion of templates using the command line. Let's look at how to use the console converter. Important!!! Make sure your report dfm files are all in text form. Right-click the form and make sure "Text dfm" is checked. Change the first line so that the name of the form is something like "NameofForm : TForm" rather than  "NameofForm : TNameofFOrm". Save thedfm files to another folder BEFORE you do this as doing so will breakyour project. To convert a single file, use the command line to move to the folder where the file is located and use the following commands: ``` FRConverter.exe -f:QR MyReport.dfm MyReport.fr3 FRConverter.exe -f:RB TT.rtm TT.fr3 ``` Where are parameters: ``` -f:< type_Converter > - select type Converter   < type_Converter >: QR- QuickReport (*.dfm and *.qr2) RB- ReportBuilder (*.rtm) RR- Rave Reports (*.rav)   MyReport.dfm – the file name in the current folder MyReport.fr3 – the name of the converted template that will be saved ``` The "-split " option is also available    -split - split pages (only QuickReport), if you have multiple TQuickRep objects the FRConverter will splitted dfm into several templates and save them with the names of these objects to the current directory and will also save the template containing these pages. Example of use: ``` FRConverter.exe -f:QR -split MyReport.dfm MyReport.fr3 Result 3 or more files: MyReport.fr3, .fr3, .fr3 and etc. ``` To see which files of the desired format are in the current folder, you can use the following parameter: ``` -show < format_file > - displays all in the current directory   < format_file > : *.dfm, *.qr2,*.rtm, *.rav and etc. ``` Example of use: ``` FRConverter.exe -show *.dfm ``` Use the -h parameter to call Help. ``` FRConverter.exe -h ``` To convert a bulk conversion, use the command line to move to the folder where the templates are located and use these commands:   ``` FRConverter.exe -f:QR *.dfm *.fr3 ``` Download link : FRConverter.zip Tags: VCL, VCL, FastReport, FastReport, Converter, Converter, QuickReport, QuickReport, ReportBuilder, ReportBuilder, Rave Reports, Rave Reports, Delphi, Delphi ### Contact URL: https://www.fast-report.com/contact Summary: Our support team is always ready to help you. Fill out the contact form or use the Q&A section. Support team If you have any questions or issues, please contact our support team through the data collection form below. We are always ready to assist you. Popular questions We have compiled the most frequently asked questions about licensing, technical support policies, and software product purchases. Go to questions info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Contest from Fast Reports URL: https://www.fast-report.com/news/fastreport-vcl-contest Summary: We are announcing contest for the best demo of FastReport VCL 6. To participate you can use either commercial or a trial version of the report generator for Delphi. We are announcing contest for the best demo of FastReport VCL 6. To participate you can use either commercial or a trial version of the report generator for Delphi. We are announcing contest for the best demo of FastReport VCL 6. To participate you can use either commercial or a trial version of the report generator for Delphi Create an app, add-on or a report which would be the best to demonstrate all the features of our report generator Apply on the contest page until August, 15. The winner will be chosed by popular vote and will receive a 10.1 inch tablet on Windows 10.  ### Conversion to .fr3 from QuickReport and ReportBuilder URL: https://www.fast-report.com/blogs/conversion-from-quickreport-reportbuilder Summary: Batch conversion to FastReport VCL (from QuickReport or ReportBuilder) Batch conversion to FastReport VCL (from QuickReport or ReportBuilder) Batch conversion to FastReport VCL (from QuickReport or ReportBuilder) Perform the following list of actions:    1. Create a new application (File -> New -> VCL Forms Application).    2. Enter in the Uses clause module ConverterQR2FR (for convert QuickReport) or ConverterRB2FR (for convert ReportBuilder) .    3. Depending on the installed components, you may need to remove the following blocks from the Uses clause in ConverterQR2FR.pas or ConverterRB2FR.pas :    VCLTee.TeeProcs, VCLTee.TeEngine, VCLTee.Chart, VCLTee.Series, VCLTee.TeCanvas    frxChart, frxBDEComponents, frxIBXComponents    4. Add the following components to the form: frxReport OpenDialog Button1 , Button 2, Button 3 ListBox1, ListBox2 Label1, Label2 Enter this code to the Button1Click() event of the “ Select File ” button . Code Button1Click : ``` procedure TForm1.Button1Click(Sender: TObject); var i: integer; FirstLine: string; begin OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist]; OpenDialog1.Filter := 'Delphi Form (*.dfm)|*.dfm|' + 'QuickReport (*.qr2)|*.qr2|'+ 'ReportBuilder (*.rtm)|*.rtm' + '|All files (*.*)|*.*'; OpenDialog1.FilterIndex := 1; if OpenDialog1.Execute then with OpenDialog1.Files do for i := 0 to Count - 1 do ListBox1.Items.Add(Strings[I]); end; ``` Enter this code to the Button2Click() event of the “ Convert ” button . Code Button2Click : ``` procedure TForm1.Button2Click(Sender: TObject); var i: integer; s : string; begin ListBox2.Clear(); with ListBox1.Items do for i := 0 to Count - 1 do if frxReport1.LoadFromFile(ListBox1.Items[i]) then begin s := ListBox1.Items[i].Substring(0,ListBox1.Items[i].Length-4)+'.fr3'; frxReport1.SaveToFile(s); ListBox2.Items.Add(s); end; end; ``` Enter this code to the Button3Click() event of the “ Clear list of files ” button . Code Button3Click : ``` procedure TForm1.Button3Click(Sender: TObject); begin ListBox1.Clear(); end; ``` Enter this code to the ListBox2Click() event that performs when you click the ListBox2 element to open the selected template in the designer. Code ListBox2Click : ``` procedure TForm1.ListBox2Click(Sender: TObject); begin frxReport1.LoadFromFile(ListBox2.Items[ListBox2.ItemIndex]); frxReport1.DesignReport(); end ``` Run the application Select files to convert The selected files appear in the “Selected file” list Click the Convert button, the files from the “Selected file” list will be converted, and the address of the saved templates will be displayed in the format *.fr3 Click on any template address in the “Saved templates in FR” list and it will be opened in the FR designer, check if the conversion is correct. Tags: VCL, VCL, FastReport, FastReport, Converter, Converter, QuickReport, QuickReport, ReportBuilder, ReportBuilder, Delphi, Delphi ### Convert RichObject to text when exporting URL: https://www.fast-report.com/blogs/convert-rich-object-text-exporting Summary: Let's take a closer look at how to convert RichObject to Text works when exporting FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to convert RichObject to Text works when exporting FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to convert RichObject to Text works when exporting FastReport .NET report. Find more usefull tips and articles in our blog. Until recently, the export of the RichObject was done as an image. Of course, many people did not like it. In FastReport .NET version 2018.2.3 a new property of the RichObject - ConvertRichText object appeared. This property allows you to enable the export mode of the object in text form, instead of the image. That is, by including this option, we will get the text in any export format, except, of course, exporting to the image. By tradition, I propose to get acquainted with the new property by example. We add RichObject to the report page. And load into it the rtf document in the editor: Now run the report in preview mode and export to PDF. And we see the picture in the document. Let's return to the report template. Select the RichObject object and set its ConvertRichText property to true. Repeat the export of the report to PDF: This time, we got a text available for selection. And the text is displayed completely, unlike the example with the image, where the text scope is limited by the size of the RichObject object. Still there is a minus - the original formatting of the text and the font can be lost, if those are not supported in FastReport .NET. Tags: .NET, Export, FastReport, RTF ### Converter from Microsoft Word (.docx) format to FastReport .NET (.frx) file URL: https://www.fast-report.com/blogs/converter-word-docx-net Summary: A converter from Microsoft Word (.docx) format to a file FastReport .NET (.frx): description and instructions for using the tool. A converter from Microsoft Word (.docx) format to a file FastReport .NET (.frx): description and instructions for using the tool. Modern data processing and workflow automation technologies require the integration of various file formats that ensure the interaction of software products. Thanks to its wide range of features, the Microsoft Word text editor has become one of the most popular editors of varying complexity.  Consider converting Microsoft Word files to FastReport format.NET, used to create report templates. Modern data processing technologies and document workflow automation require the integration of various file formats to ensure seamless interaction between software products. With its extensive capabilities, Microsoft Word has become one of the most popular text editors, suitable for a wide range of tasks. At times, you may need to convert these documents into formats specific to other applications. For instance, there are situations where you need to convert Microsoft Word files into the FastReport .NET format, which is used for creating report templates when working with FastReport. How to Compile the Project First, open the .sln file named FastReport.OOXMLImportPlugin.sln. Note that there are two such files for Visual Studio 2017 and above. Then, remove the references to the FastReport and FastReport.Bars projects as shown in the screenshot below. After that, you need to add a reference to FastReport.dll. This DLL is located in the same folder as the Designer. Right-click in the workspace and click "Build." After that, navigate to the path FastReport.OOXMLImportPlugin\bin\Debug\net472 and you will find the compiled file “OOXMLImportPlugin.dll” in that folder. How to Register the DLL in FastReport You can do this in several ways. Method 1: Register using the FastReport Development Environment Open the report designer, then go to the "File|Settings..." menu in the Ribbon interface (or "View|Settings..." in the standard interface). Next, in the "Plugins" tab, add FastReport.OOXMLImportPlugin.dll. After that, restart the FastReport .NET designer. If you are working in the Visual Studio IDE, be sure to restart it as well. Once the designer is launched again, click "File|Open" and select "Microsoft Word Document (*.docx)" from the list of available files, as shown in the screenshot below. Select the desired *.docx file to import into FastReport .NET. As a result, you will see the imported file in the designer. Method 2: Manually Edit the FastReport.config File By default, this file is located in the folder C:\DocumentsandSettings\user_name\Local Settings\Application Data\FastReport . Make sure to close all running instances of FastReport .NET. Only after that, open the configuration file in any text editor and change it as follows: ``` ...  } GetFile - name of controller handler, Home - name of controller (HomeController.cs for example) Add name space in controller: using FastReport.Export.Pdf; Add method GetFile in controller:         public FileResult GetFile()         {             WebReport webReport = new WebReport();             // bind data             System.Data.DataSet dataSet = new System.Data.DataSet();             dataSet.ReadXml(report_path + "nwind.xml");             webReport.Report.RegisterData(dataSet, "NorthWind");             // load report             webReport.ReportFile = this.Server.MapPath("~/App_Data/report.frx");             // prepare report             webReport.Report.Prepare();             // save file in stream             Stream stream = new MemoryStream();             webReport.Report.Export(new PDFExport(), stream);             stream.Position = 0;             // return stream in browser             return File(stream, "application/zip", "report.pdf");         } Example for Excel 2007: using FastReport.Export. OoXML ; ... webReport.Report.Export(new Excel2007Export(), stream); ... return File(stream, "application/xlsx", "report.xlsx"); Tags: .NET, Export, FastReport, ASP.NET, MVC ### Creating a PDF report in JetBrains Rider (C#) in Windows 11 URL: https://www.fast-report.com/blogs/report-jetbrains-rider-windows11 Summary: In this article we will take a look at .NET in Windows 11 without using Microsoft Visual Studio, and export the report to PDF format. In this article we will take a look at .NET in Windows 11 without using Microsoft Visual Studio, and export the report to PDF format. In this article we will take a look at .NET in Windows 11 without using Microsoft Visual Studio, and export the report to PDF format. In this article, we'll take a look at the world of the .NET platform in Windows 11 without using Microsoft Visual Studio and create a report that can be exported to PDF. The analog of Visual Studio is, of course, JetBrains Rider. It is a cross-platform .NET IDE developed by JetBrains. It supports C#, VB.NET, and F# languages. We are not going to discuss here which IDE is better or worse. So, let's just create, build, and export a PDF report/document from JetBrains Rider using FastReport .NET. What do you need to get started? At least, you need to have the JetBrains Rider IDE installed on your PC. Next, create a new solution by selecting "New Solution ". The next step is to set up the project. Select the Desktop Application project type in the .NET/ .NET Core section. Then we give a name to the project, we will use "ReportPDF_Core_WinFormsApp" as an example. After we click on the Windows Forms App type, C# language, NET 7.0 framework. Let's start by adding a simple sample dataset for our report in our application code. To do this, add in Form1.cs: ``` using System.Data; ``` Next, add a private field of the Form1 class: ``` private DataSet _fDataSet = new DataSet(); ``` Let's add a private CreateDataSet method, where we will create and fill in a data set: ``` private void CreateDataSet() { // create simple dataset with one table // create simple dataset _fDataSet = new DataSet(); // create a table DataTable table = new DataTable(); table.TableName = "Employees"; // adding a table to the dataset _fDataSet.Tables.Add(table); // adding data to a table table.Columns.Add("ID", typeof(int)); table.Columns.Add("Name", typeof(string));   table.Rows.Add(1, "Andrew Fuller"); table.Rows.Add(2, "Nancy Davolio"); table.Rows.Add(3, "Margaret Peacock"); } ``` Add a call to the CreateDataSet method: ``` public Form1() { InitializeComponent(); CreateDataSet(); } ``` What is the fastest way to make FastReport .NET work in JetBrains Rider? To use our Fast Reports Private NuGet-server . This article describes how to add NuGet packages after purchasing FastReport .NET. Here is a brief instruction so you don’t need to search for another article. Click on the NuGet tab at the bottom of the IDE, and click on the Sources tab. Now we add a new repository by clicking on the "+" and entering the necessary data: - Name — source name without spaces (for example FR-Nuget); - URL — https://nuget.fast-report.com/api/v3/index.json; - User — email from Fast Reports account; - Password — password from Fast Reports account. You will see the corresponding repository: Now we will install the FastReport.Pro package. To do this, go to the Packages tab and filter the packages by the FR-Nuget repository. Of course, install the found package. If it was successful, you will see a notification. Next add to Form1.cs: ``` using FastReport; using FastReport.Export.Pdf; ``` Next, we will insert 3 new buttons into the application: "Report design", "Export to PDF with dialog", "Silent export". To do this, make the appropriate changes to Form1.Designer.cs: ``` // // Required method for Designer support - do not modify // the contents of this method with the code editor. // private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(800, 450); this.Text = "Form1"; this.btnExportWithDialog = new System.Windows.Forms.Button(); this.btnSilentExport = new System.Windows.Forms.Button(); this.btnShowDesigner = new System.Windows.Forms.Button(); this.SuspendLayout(); // // btnExportWithDialog // this.btnExportWithDialog.Location = new System.Drawing.Point(44, 148); this.btnExportWithDialog.Name = "btnExportWithDialog"; this.btnExportWithDialog.Size = new System.Drawing.Size(208, 23); this.btnExportWithDialog.TabIndex = 0; this.btnExportWithDialog.Text = "Export to PDF with dialog"; this.btnExportWithDialog.UseVisualStyleBackColor = true; this.btnExportWithDialog.Click += new System.EventHandler(this.btnExportWithDialog_Click); // // btnSilentExport // this.btnSilentExport.Location = new System.Drawing.Point(44, 180); this.btnSilentExport.Name = "btnSilentExport"; this.btnSilentExport.Size = new System.Drawing.Size(208, 23); this.btnSilentExport.TabIndex = 0; this.btnSilentExport.Text = "Silent export"; this.btnSilentExport.UseVisualStyleBackColor = true; this.btnSilentExport.Click += new System.EventHandler(this.btnSilentExport_Click); // // btnShowDesigner // this.btnShowDesigner.Location = new System.Drawing.Point(44, 87); this.btnShowDesigner.Name = "btnShowDesigner"; this.btnShowDesigner.Size = new System.Drawing.Size(208, 23); this.btnShowDesigner.TabIndex = 1; this.btnShowDesigner.Text = "Report design"; this.btnShowDesigner.UseVisualStyleBackColor = true; this.btnShowDesigner.Click += new System.EventHandler(this.btnShowDesigner_Click); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.btnShowDesigner); this.Controls.Add(this.btnSilentExport); this.Controls.Add(this.btnExportWithDialog); this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.Name = "Form1"; this.Text = "ExportToPDF"; this.ResumeLayout(false); } #endregion private System.Windows.Forms.Button btnExportWithDialog; private System.Windows.Forms.Button btnSilentExport; private System.Windows.Forms.Button btnShowDesigner; ``` Let's write a click handler for the "Report design" button using this code. ``` private void btnShowDesigner_Click(object sender, EventArgs e) { // create report instance Report report = new Report(); // load the existing report //report.Load(@"..\..\..\Report.frx"); // register the dataset report.RegisterData(_fDataSet); report.GetDataSource("Employees").Enabled = true; // run the designer report.Design(); // free resources used by report report.Dispose(); } ``` Run the application and look at our form with 3 buttons. Click on the "Report design" button and go to the FastReport .NET designer. Let's add fields from the dataset to the report template using drag and drop, and then add the "Employees" heading to the report. After that, set AutoWidth = true property for the text objects. Let's save our report template with the "Report" name in the folder with the ReportPDF_Core_WinFormsApp project. After saving, close the designer and application. Let's uncomment the line in the btnExportWithDialog_Click method to make our saved report load when the designer is opened: ``` report.Load(@"..\..\..\Report.frx"); ``` Add a click handler for the "Export to PDF" button with a dialog box: ``` private void btnExportWithDialog_Click(object sender, EventArgs e) { // create report instance Report report = new Report(); // load the existing report report.Load(@"..\..\..\Report.frx"); // register the dataset report.RegisterData(_fDataSet); // run the report report.Prepare(); // create export instance PDFExport export = new PDFExport(); export.Export(report); // free resources used by report report.Dispose(); } ``` Run the project and click on the "Export to PDF with dialog box" button: A dialog box with PDF export settings will open. Select "Open after export" and click on "OK". Save to a PDF project folder called "Report". After the export is completed, the PDF file will open automatically: Thus, we got a simple report/PDF document built from a dataset. Let’s also check the option of the so-called “silent” PDF export without dialog boxes. Add a click handler for the "Silent export" button: ``` private void btnSilentExport_Click(object sender, EventArgs e) { // create report instance Report report = new Report(); // load the existing report report.Load(@"..\..\..\Report.frx"); // register the dataset report.RegisterData(_fDataSet); // run the report report.Prepare(); // run the report PDFExport export = new PDFExport(); // opening after export export.OpenAfterExport = true; // export the report report.Export(export, "Result.pdf"); // free resources used by report report.Dispose(); } ``` Run the project and click on the "Silent export" button. It will export instantly and a PDF file called "Result" will open, which is next to the exe of the running project: In this article, we have reviewed the pull of JetBrains Rider (C#) + .NET Core + WinForms + FastReport .NET + Windows 11 and received a PDF report built from a dataset. And of course, we made sure that it is easy to use the .NET platform without Microsoft Visual Studio. Tags: .NET, PDF, C#, Report, Windows, JetBrains Rider ### Creating an Open Document Text (ODT) file from Delphi URL: https://www.fast-report.com/blogs/creating-odt-delphi Summary: Features and scope of Open Document Text (ODT) in various editors, saving in ODT from Delphi code and detailed comparison with Microsoft Word 2007 XML Features and scope of Open Document Text (ODT) in various editors, saving in ODT from Delphi code and detailed comparison with Microsoft Word 2007 XML Features and scope of Open Document Text (ODT) in various editors, saving in ODT from Delphi code and detailed comparison with Microsoft Word 2007 XML The ODT file extension is used for Open Document text files, which are usually created using the OpenOffice or LibreOffice word processor apps. This document format is based on the XML markup language and therefore easy to convert. To understand what kind of format it is, it’s enough to see the open standard OpenDocument Format (created by the OASIS community), directly associated with ODT. Since ODF can store and exchange office documents, it also includes the Open Document Text file extension, which contains various reports, notes, books and so on. We talked more about the ODF format in this article. The ODT files became especially popular not long ago, in 2014, when the Google Docs web applications, along with Sheet and Slides, started supporting the ODF standard, so users had the opportunity to save text documents in the .odt format and this file extension started becoming more and more popular. These files are easy to open and thanks to the XML markup language you can easily convert them to other formats using the appropriate utilities. To correctly open a file with the ODT extension, you need to use the office suites such as LibreOffice, StarOffice, OpenOffice – they allow you to freely convert and edit files of this format. If the user tries to open an ODT file using the Microsoft Office application, he will need to install the ODF Sun Plugin for MS Office. Many PC owners open ODT files using Corel WordPerfect Office, there are also NeoOffice and Lotus Symphony. In my opinion, the choice is wide! Saving in ODT format from Delphi using FastReport Why FastReport? Because it is designed for generating documents! First of all, we should already have a compiled project with FastReport implemented with the Export to Open Documents Text component, as well as the generated report (there is a separate article on creating reports). Run the application and call export from the preview window (at the end of this article there is a way how to save the .ODT file directly from the code), a settings window will appear: FastReport tools allow you to choose which pages of our document to export, certain pages or a range. Export settings – whether to set a better visual correspondence with the original version (WYSIWYG), use page breaks, export as a continuous document that skips headers and footers, or export a background – graphic objects, that are used as a background of the report page. As usual, you can specify where to save your file (in the local storage, send as E-mail, upload to FTP or cloud storage). Open after export - the resulting file will be opened immediately after export by any software associated with ODT files. Code for saving in Open Document Text format directly from Delphi / Lazarus Saving in ODT ``` procedure TForm1.Button2Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported} frxODTExport1.PageNumbers := '2-3'; {Set whether to generate a continuous document} frxODTExport1.SingleSheet := False; {Set whether to export the page breaks so that when printing the pages correspond to the pages of the generated report} frxODTExport1.ExportPageBreaks := True; {Set WYSIWYG} frxODTExport1.Wysiwyg := True; {Set whether to export the background} frxODTExport1.Background := True; {Set whether to open the resulting file after export} frxODTExport1.OpenAfterExport := False; {Set whether to display export progress (show which page is currently being exported)} frxODTExport1.ShowProgress := False; {Set whether to display the export filter dialog box} frxODTExport1.ShowDialog := False; {Set the name of the resulting file.} {Please note that if you do not set the file name and disable the export filter dialog box,} {the file name selection dialog will still be displayed} frxODTExport1.FileName := 'C:\Output\test.odt'; {Export the report} frxReport1.Export(frxODTExport1); end; ``` Comparison of Microsoft Word 2007 XML and Open Document Text So what is better to use? Let’s learn about their base. Both of them are based on the XML markup language. XML is a technology designed to manage structured data and display that data as a human-readable text file. XML conforms to industry standards and can be processed by many databases and applications. Using XML, many developers can create their own customized tags, data structures, and schemas. In general, XML greatly facilitates the definition, transfer, validation, and interpretation of data in various databases, applications, and organizations. This means that both files are zip archives renamed as .docs / .odt. Let’s talk about the features and functionality. Attaching your comments to specific parts of a document makes your feedback more clear; there is a “Notes” function for this. When you save the document in .odt format and open it again in Word 2007, comments about a group of words becomes a single point. The single point is usually indicated at the end of the group of words. Tables are not supported in comments. The contents of the table are maintained in the comment but the structure is lost. Speaking about the documents and data protection, we should remember about the “Document Protection” and “Information rights management (IRM)” functions. When you save a Word 2007 document in ODT format, this function is deleted; you cannot open such files. Though everyone’s favorite correction function, which saved many of us, will not work in ODT or rather all changes are accepted and your information may suffer. References and headers are converted to plain text, and footnotes simply disappear. Frames are partially supported. When saving a Word 2007 document in ODT format frames are converted to text fields; bindings to some field areas are not supported. If unsupported content is present, the frame is deleted, but not the content itself. This includes tables, auto shapes, text fields, frames, and SmartArt graphics. When you save the Word 2007 document in .odt format, continuous section breaks might lose some properties, such as top/bottom margins, headers/footers, borders, and line numbering. Tables are partially Supported. ODT format doesn’t support tables with more than 64 columns and theme formatting is converted to cell level formatting. Text boxes cannot be nested and text orientation in a table cell is not supported. Speaking about graphic elements, something works in any format but something is not supported at all. Word does not support groups of objects so when you open an OpenDocument file, the objects are ungrouped. This applies to all objects grouped with a diagram, as well as to drawings grouped with a figure, caption or OLE object. The visibility of objects may change. Invisible objects become visible after saving the file in .odt and opening again in Word. I can go on and on, but just highlighted the most interesting functions. You can find a detailed comparison table here. There is not much difference in file size. A Word document is a bit bigger because of encryption support; and ODT file doesn’t support it. We used these fish as an example; this document has a lot of text, tabular data and 30 photographs. See screenshots for clarity: Let’s sum things up. Both formats are modern, open (which is important), supported by many text editors. The advantage of ODT is open source and OASIS community support, while DOCX is supported by Microsoft only which has now turned to Open Source initiatives. The choice is up to you and your customer – anyways, you can count on the creation of high-quality documents that support FastReport standards.  Tags: VCL, Export, Lazarus, FastReport, Delphi ### Creating an Open Documents Spreadsheet from Delphi / C++Builder / Lazarus URL: https://www.fast-report.com/blogs/open-documents-spreadsheets-delphi Summary: We tell you about the Open Documents Spreadsheet format and save it in ODS from the code We tell you about the Open Documents Spreadsheet format and save it in ODS from the code We tell you about the Open Documents Spreadsheet format and save it in ODS from the code Summary of ODS and ODF ODS is an open format for spreadsheets made in accordance with the OpenDocument Format (ODF) standard. This format is distributed free of charge and uses the standards of the International Organization for Standardization. The standard was developed by OASIS technical committee and was based on the XML format; it was approved for release as an ISO and IEC International Standard under the name ISO/IEC 26300 on May 1, 2006. NATO made the Open Document Format (ODF) standard mandatory to support interoperability among the various national governments. Many countries have adopted ODF as a state standard. ODF spreadsheets (one of the varieties of ODS) are simple, interactive files objects used to analyze, organize, and store all kinds of spreadsheet-based data. ODS resources can be opened with any modern office suite, OpenOffice, LibreOffice Suite and MS Office (since 2007). Since 2014, the ODF standard has been added to the Google Docs, Sheets, and Slides web applications. Now you can open, edit and save files with the .odt (text documents), .ods (spreadsheets) and .odp (presentations) extensions. On Android phones and tablets, the most comprehensive support of ods files is implemented in the AndrOpen Office application. Each ODF document is stored in a zip archive, therefore, to open this document, it is enough to rename its extension to .zip and open it with any zip archiver. After that we will see at least five .xml files and several directories. There is so-called metadata in these xml files, in addition to the actual content of the document. It is the additional data that allows you to set specific parameters for the text. For example, font type and size, text position on the page, print or display options. The XML metadata description standard (eXtend Markup Language) is gaining the most popularity nowadays. The main requirement of this standard is being user-friendly: xml documents should be easily readable using the simplest word processors and xml-markup should be simple to understand by a person. ODF is one of numerous implementations of the XML standard. Therefore, after opening the ODF document as a ZIP archive, it won’t be a big deal to understand the structure of files and folders by their names. Especially for those who at least once in their life created html pages, at least at the same level of “Hello, World!” stuff. Content.xml is the main content file and style.xml contains the style information. Folders can contain multimedia files: pictures, audio and video. In general, the ODF document is something like a web site from the times of static html pages. Now we learned about the format itself, but how do we save a report with the .ods extension? In fact, it’s extremely easy. We can create the simplest document and unzip it, as mentioned above. Let me remind you that the standard is open. Or… we can do it our favorite way! Saving in .ODS format from Delphi using FastReport Before saving an .ods file, you should already have a compiled project with FastReport implemented with the Export to Open Documents Spreadsheet component, as well as the generated report (there is a separate article on creating repots). Let me remind you again – yes, you can use internal sources of the application and databases as a data source for your report. Run the application and call export from the preview window (at the end of this article there is a way how to save the .ODS file directly from the code), a settings window will appear: FastReport tools allow you to choose which pages of our document to export, certain pages or a range. Export settings – whether to set a better visual correspondence with the original version (WYSIWYG), use page breaks , export as a continuous document that skips headers and footers, or export a background – graphic objects, that are used as a background of the report page. As usual, you can specify where to save your file (in the local storage, send as E-mail, upload to FTP or cloud storage). Open after export - the resulting file will be opened immediately after export by any software associated with ODS files. Full code for saving in Open Document Spreadsheet format directly from Delphi / Lazarus Saving to ODS ``` procedure TForm1.Button1Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported} frxODSExport1.PageNumbers := '2-3'; {Set whether to generate a continuous document} frxODSExport1.SingleSheet := False; {Set whether to export the page breaks so that when printing the pages correspond to the pages of the generated report} frxODSExport1.ExportPageBreaks := True; {Set WYSIWYG} frxODSExport1.Wysiwyg := True; {Set whether to export the background} frxODSExport1.Background := True; {Set whether to open the resulting file after export} frxODSExport1.OpenAfterExport := False; {Set whether to display export progress (show which page is currently being exported)} frxODSExport1.ShowProgress := False; {Set whether to display the export filter dialog box} frxODSExport1.ShowDialog := False; {Set the name of the resulting file.} {Please note that if you do not set the file name and disable the export filter dialog box,} {the file name selection dialog will still be displayed} frxODSExport1.FileName := 'C:\Output\test.ods'; {Export the report} frxReport1.Export(frxODSExport1); end; ``` So, quickly and easily we can make our application to generate modern global format files.  Tags: VCL, Export, Lazarus, FastReport, Delphi ### Creating custom line styles in FastReport .NET URL: https://www.fast-report.com/blogs/custom-line-dotnet Summary: With DashPattern, you can set a custom pattern to create a unique style of lines of PolyLine, Polygon, LineObject, and ShapeObject With DashPattern, you can set a custom pattern to create a unique style of lines of PolyLine, Polygon, LineObject, and ShapeObject With DashPattern, you can set a custom pattern to create a unique style of lines of PolyLine, Polygon, LineObject, and ShapeObject In the latest update of FastReport .NET 2024.1, a new property called " DashPattern " has been added for PolyLineObject, PolygonObject, LineObject, and ShapeObject. This property allows users to define a custom pattern to create a unique line style in cases where the desired pattern is not available in the default set. The custom pattern is represented by an array of values, which can be set through the collection editor or manually. The elements in the array represent the length of each dash and the gap in the pattern. The first element sets the length of the dash, the second element sets the length of the gap, the third element sets the length of the dash, and so on. In the example provided above: 5 represents the length of the dash, 3 represents the length of the gap, 2 represents the length of the dash, and 1 represents the length of the gap. Each element should be a non-zero positive number; otherwise, its value is replaced with 1. For the proper display of the custom pattern, the pattern array should have an even number of elements—2, 4, and so on. If the array has an odd number of elements, the pattern behaves as follows (using the example array 5, 3, 2): a dash of length 5 is drawn, followed by a gap of length 3, another dash of length 2, a gap of length 0, then a dash of length 5, and so on. If there is one value in the pattern array, then a solid line is drawn (using the same principle). The length of each dash and gap in the custom pattern is the product of the array element value and the line thickness. It means that as the line thickness increases, the length of the dash and gap will also increase. This mechanic can be visually observed in the example below. The same custom pattern, with different line thicknesses, creates completely different line styles. PDF export is supported for objects that use the DashPattern property. It enhances the ability to customize line and outline styles when saving a report in PDF format. Tags: .NET, FastReport, Designer, Customization ### Creating ITF-14 barcodes in .NET applications URL: https://www.fast-report.com/blogs/creating-ITF-14-in-net-reports Summary: ITF-14 is a two-band numeric code, otherwise known as a high-density code, which can only encode numbers in an even number ITF-14 is a two-band numeric code, otherwise known as a high-density code, which can only encode numbers in an even number ITF-14 is a two-band numeric code, otherwise known as a high-density code, which can only encode numbers in an even number ITF-14 (Interleaved Two of Five) is a two-band numeric code, otherwise known as a high-density code, which can only encode numbers in an even number. Each barcode encodes an odd number with a dark line and an even number with a space in between. To encode an odd number of digits, you must suffix the left-most (highest) digit with a zero. The specifics of coding will be explained later. The implementation of barcode ITF-14 or interleaved 2 of 5 is used to encode the Global Trade Item Number. The Global Trade Item Number (GTIN) is a trade item identifier developed  by GS1 . It is an international organization dedicated to the standardization of record-keeping and bar-coding of logistical units. GS1 identifiers are used to search for product information in a database either manually or by entering the number through a barcode scanner pointed at the barcode. Let's take a brief look at barcode standards. Two main barcode standards have been established: EAN/UCC-13 for single item. European Article Number, EAN (European Article Number), afterwards also known as International Article Number, the European barcode standard designed to encode product and manufacturer identification. ISO/IEC 15420:2009 Information technology — Automatic identification and data capture techniques — EAN/UPC bar code symbology specification . Product number EAN/UCC-13 has the following structure: — first 2-3 numbers — country code of registration for EAN Russia 460-469; 400-440 Germany; 590 Poland; 84 Spain; 00-09 USA and Canada; 560 Portugal; 840-849 Spain; 789-790-Brazil. — next 4-5 numbers – is the business registration number within the national organisation; — the next group of numbers refers to the sequential number of the product within the company; — the last 13th digit is the checksum or check digit. It is calculated from the previous twelve. It is important to remember that the EAN barcode is used to uniquely identify products. The ITF-14 barcode is used to automate the inventory of goods placed in individual or group transport packaging. The computer accounting system determines not only the type of goods in the package, but also their quantity. In simple terms, the ITF-14 code group is a subset of the EAN-13 code and differs from it by an additional first digit. ITF-14 are commonly used for printing on corrugated cardboard, for labelling cardboard boxes, crates or pallets. They are widely used by retailers, manufacturers and distributors for precise logistics and stock handling. They can also be found in luggage identification at airports, airline ticket numbering, postal item identification. Here is one example of an ITF-14 box-based application from MilkyWay. The ITF barcode can be printed not only on labels, but also directly on the walls of cartons, corrugated boxes or any other surface of rough texture. Even then it will be successfully read by scanners. Here is another example from life based on the XEROX 008R13041 staple cartridge. Because the ITF-14 barcode is designed to identify goods in shipping containers - it does not provide for processing at POS terminals. Coding features The ITF-14 always encodes 14 digits, but we only enter 13 digits. Why? I'll give you an example of the scheme: The indicator is an indication of the packaging level for a particular carton. This unambiguous prefix can range from 0 to 8. (e.g. 1 for box, 2 for crate, etc.). The GS1 company prefix can be 7 to 10 digits long and is assigned to uniquely identify the owner of a particular brand. Suppliers must obtain this prefix directly from GS1 to uniquely identify their company. Item reference - refers to the same product number used for the GTIN item level when the carton consists of the same item. Cartons with a product range are assigned a new product number. The check digit is the last digit of a given barcode, which is the calculated check sum, but it is not determined by all previous digits, but only by the 12 following the first digit. Using the MOD10 algorithm, the calculated checksum prevents substitution errors. The thick black border around the barcode is called the Bearer Bar . This bar balances the pressure created by the print plate across the bar code surface and improves readability by reducing the likelihood of an incomplete character being scanned. ITF-14 is available with visible or concealed vertical support bars. Size - The two components that define the width of an ITF-14 barcode symbol are the ratio of the width to the narrow part. This ratio remains constant and should always be between 2.25:1 and 3:1. Let's move on to practice - how to do-quick ITF-14 in your .NET project in MS Visual Studio? FastReport .NET to the rescue! There is such an object among barcodes! Setting up the ITF-14 in the designer  Add to the Barcode sheet and select exactly ITF-14. Barcodes 2/5 Interleaved, 2/5 Industrial, 2/5 Matrix are also Interleaved Two of Five , but these are completely different objects.  You can read more about them here. I'll show you the ITF-14 and the 2/5 Interleaved as an example. As you can see, the difference is obvious. Next we see a large number of properties for more fine-tuning, but let's focus on some specific ones: "Angle" - This property allows you to set the rotation of the object to one of the fixed angles - 0, 90, 180, 270 degrees. "Zoom" - Defines the scale of the barcode. This property is used only together with "Auto Zoom" property. “AutoSize” – If this property is enabled, the object will be stretched to show the whole barcode. If disabled, the barcode will be stretched to the size of the object. "ShowText" – Defines whether the text at the bottom of the barcode should be shown. "DataColumn" – Data field from which to load object text. "Expression"– An expression that returns the text of the object. "Text" – text ogject. "Padding" – Allows you to set the indentation from the edges of the object, in pixels. "WideBarRatio" – All linear barcodes have this property. It defines the relative size of the wide bars of a barcode. "CalcCheckSum" – Many linear barcodes have this feature. It determines whether the checksum should be read automatically. If disabled, the checksum must be present in the text of the object. "DrawVerticalBearerBars" – If this property is enabled, the object will have side lines displayed. If disabled, the barcode will have the following appearance: Comparison of ITF-14 & interleaved 2 of 5 Speaking of these two barcodes, interleaved 2 of 5 is a dimensionless version of ITF-14, because ITF-14 has a strict number of characters, namely 13 + 1 checksum. Interleaved 2 of 5 can also contain those 13 characters. Let me show you an example: The first is ITF-14 and underneath is Interleaved 2 of 5. The values are coded the same and the bars look the same. The widths are different because of the different standards. It follows that if the same 13 characters are encoded in the interleaved 2 of 5, we get ITF-14, but without any special design for this standard - only the same values. Creating ITF-14 with code You can add a barcode object either in the user application code when you create a report from the code. Let's look at an example of creating a report in code, and adding an ITF-14 barcode object to it: Creating and outputting ITF-14 barcodes in.NET applications ``` //Create report object Report report = new Report(); //Ceate report page ReportPage page = new ReportPage(); //Create unique name page.CreateUniqueName(); //Add the page to report collection report.Pages.Add(page); //create data band DataBand dataBand = new DataBand(); //Create band with unique name dataBand.CreateUniqueName(); //Add it to band collection page.Bands.Add(dataBand);   //Create barcode object FastReport.Barcode.BarcodeObject barcode = new FastReport.Barcode.BarcodeObject(); //Set the barcode type barcode.Barcode = new FastReport.Barcode.BarcodeITF14(); //Set the code number barcode.Text = "597861558"; //Put the barcode on the page barcode.Parent = dataBand; //Set the object dimensions barcode.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 3); //Show report report.Show(); ``` So, ITF-14 encodes only numbers and is only used on boxes with EAN/UCC-13 barcode item inside. So, with support for ITF-14 and other barcodes, FastReport.NET allows you to create complete reports and labels for trade, logistics and inventory management. Tags: .NET, FastReport, Barcode ### Creating Master-Detail report from unrelated tables URL: https://www.fast-report.com/blogs/create-master-detail-report Summary: To create a report of the “Master – Detail” type, you will need to create a relationship between tables by key. See how to do it. To create a report of the “Master – Detail” type, you will need to create a relationship between tables by key. See how to do it. To create a report of the “Master – Detail” type, you will need to create a relationship between tables by key. See how to do it. It is often needed to create a Master-Detail report type, when the main table acts as a grouping one. One record in the main table corresponds to the number of records from the detail table. To create this report, we need to create a relationship between the tables by a key. Let us exam the procedure of creating such a report. Create a blank report. Add a data source, where there will be two tables. Detailed table must have n external key that will be correlated with the primary key of the Master table.                                  The primary key of the table “Categories” is “CategoryID”. “Detailed Products” table has the same name field. Usually the external key is also called as a primary key of the main table, but this is not required. For example, in this table, this field could be called “CatID” or “Category”. To create a relationship between tables, open the “Actions” menu in the "Data" window choose the “New Relation” option. In relation editor, select the “parent” and “child” tables: Choose the fields for relation below. For the Master table it is “CategoryID”. In the Detail table the key field also called “CategoryID”. It must be mentioned, that after adding the fields, one more string was added to add relations in other fields. It is needed if the relation between the tables is performed by several fields. In our case this is not necessary. Close the window by clicking “OK”. In the “Products” table there was a relationship “Categories_Products”. If you expand it, you will see the fields from the table “Categories”. Now let us make a report template. A typical report has only one Data band. But we need one more special subordinate Data band. To add it right-click on the data band. Select the menu item “Add Detail Data Band”. Add the Header band for the Detail data band. From the Reports menu select Configure bands. Select Detail data band and press the button “Add”. From the drop - down list select the Header. Now, place the fields from the “Categories” table on the Master data band and the “Products” table fields on the Detail data band. The result is the following template: Now run the report: In this work a creation of a Master-Detail report type has been examined. Such a report requires creating a relation between the needed tables. Moreover, the level of nesting of the bands is not limited. It means that the detail band "data" may also have a detail band. Tags: .NET, .NET, FastReport, FastReport, Data Source, Data Source ### Creating PDF report in JetBrains Rider (C#) on Ubuntu 22.04.1 LTS URL: https://www.fast-report.com/blogs/jetbrains-rider-ubuntu Summary: In this article, we'll take a look at the world of the .NET platform on Ubuntu 22.04.1 LTS and create a PDF exportable report. In this article, we'll take a look at the world of the .NET platform on Ubuntu 22.04.1 LTS and create a PDF exportable report. In this article, we'll take a look at the world of the .NET platform on Ubuntu 22.04.1 LTS and create a PDF exportable report. In this article, we'll take a look at the world of the .NET platform on Ubuntu 22.04.1 LTS without using Microsoft Visual Studio, as it can't be installed on Linux, and create a PDF exportable report. The current analog of Visual Studio is, of course, JetBrains Rider. It is a cross-platform .NET IDE developed by JetBrains. It supports C#, VB.NET, and F# programming languages. We will not discuss which IDE is better or worse. Let's just create, build, and export a PDF report/document from JetBrains Rider using FastReport .NET. What do you need to get started? At least, you need to have the JetBrains Rider IDE installed on your PC. And also take into account the Linux features and make additional settings. First of all, for Linux, we need additional libraries that may not be installed by default: libgdiplus; libx11-dev. Linux setup with the example of Ubuntu 22.04.1 LTS: 1. Open console; 2. Update apt-get and install packages: sudo apt-get update; sudo apt-get install libgdiplus; Next, create a new solution by selecting “New Solution”. The next step is to set up the project. Select the Console Application project type in the .NET/.NET Core section. Then we give a name to the project, as an example, we use "ReportPDF_Core_ConsoleApp." After we click on the Console Application type, C# language, NET 6.0 framework. Let's start by adding a simple sample dataset for our report in our application code. To do this, add to Program.cs: ``` using System.Data; ``` Let's add a variable next: ``` // creating a dataset set DataSet dataSet = new DataSet(); ``` Let's add the CreateDataSet function, in which we will create and fill in the data set: ``` void CreateDataSet() { // create a simple dataset with one table // create a simple dataset dataSet = new DataSet();   // create a table DataTable table = new DataTable(); table.TableName = "Employees"; // adding a table to the dataset dataSet.Tables.Add(table);   // adding data to a table table.Columns.Add("ID", typeof(int)); table.Columns.Add("Name", typeof(string)); table.Rows.Add(1, "Andrew Fuller"); table.Rows.Add(2, "Nancy Davolio"); table.Rows.Add(3, "Margaret Peacock"); } ``` And add a call to the CreateDataSet function: ``` //creating a dataset object DataSet dataSet = new DataSet(); CreateDataSet(); ``` What is the easiest way to get FastReport .NET working in JetBrains Rider? To use our  Private NuGet-server from Fast Reports . This article describes how to add NuGet packages after purchasing FastReport .NET. Here is a brief instruction so as not to search for another article. Click on the NuGet tab at the bottom of the IDE, and click on the Sources tab. Now we add a new repository by clicking on the "+" and enter the necessary data: - Name—source name without spaces (for example FastReport); - URL—https://nuget.fast-report.com/api/v3/index.json; - User—email from Fast Reports account; - Password—password from Fast Reports account. You will see the repository: We will now install the FastReport Core package. To do this, go to the Packages tab and filter the packages by the FastReport repository. And of course, install the found package. If it was successful, you will receive a notification. Next, let’s create a template from the code, for this we will do the following. Add to Program.cs: ``` using System.Drawing; using FastReport; using FastReport.Export.Pdf; using FastReport.Utils; ``` Next, add CreateDataSet to Program.cs below: ``` Report report = new Report(); CreateReportTemplate(); ExportToPDF(); ``` Then add the function for creating a report template CreateReportTemplate: ``` void CreateReportTemplate() { // adding a report page ReportPage page = new ReportPage();   // creating a date band DataBand data = new DataBand(); PageHeaderBand dataText = new PageHeaderBand();   //creating a header ReportTitleBand titleBand = new ReportTitleBand(); TextObject employeeIdText = new TextObject(); TextObject employeeNameText = new TextObject(); TextObject idText = new TextObject(); TextObject nameText = new TextObject(); TextObject titleText = new TextObject(); //registering the data source report.RegisterData(dataSet); //enabling on the data table report.GetDataSource("Employees").Enabled = true; //adding a page to the template report.Pages.Add(page); // add to the page: data,data Text, titleBand // and set the unique name of the page page.AddChild(data); page.AddChild(dataText); page.AddChild(titleBand); page.CreateUniqueName(); // set the unique name titleBand // and set the band settings titleBand.CreateUniqueName(); titleBand.Height = Units.Centimeters * 1.5f; titleText.Bounds = new RectangleF(300, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); titleText.Text = "Employees"; titleText.Font = new Font("Arial", 14, FontStyle.Bold); titleText.VertAlign = VertAlign.Center;   // set the unique name data // and set the data settings data.CreateUniqueName(); data.DataSource = report.GetDataSource("Employees"); data.Height = Units.Centimeters * 0.5f;   // set a unique dataText name // and set the dataText settings dataText.CreateUniqueName(); dataText.Height = Units.Centimeters * 0.8f;   // setting the unique name employeeIdText // and set the employeeIdText, idText settings employeeIdText.Parent = data; employeeIdText.CreateUniqueName(); employeeIdText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); idText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); idText.Text = "ID"; employeeIdText.Text = "[Employees.ID]";   // set the unique name employeeNameText // and set the employeeNameText, nameText settings employeeNameText.Parent = data; employeeNameText.CreateUniqueName(); employeeNameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); nameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); nameText.Text = "Name"; employeeNameText.Text = "[Employees.Name]";   // add on data band: employeeIdText, employeeNameText data.AddChild(employeeIdText); data.AddChild(employeeNameText);   // add on dataText band: idText, nameText dataText.AddChild(idText); dataText.AddChild(nameText);   // add on titleBand band: itleText titleBand.AddChild(titleText); } ``` Next, add the function to create an ExportToPDF report template and name the report export "Report.pdf": ``` void ExportToPDF() { // running the report report.Prepare(); // creating an export instance PDFExport export = new PDFExport(); report.Export(export, "test.pdf"); // disposing the resources used by the report report.Dispose(); } ``` Let's start the console application. If you received the response Process finished with exit code 0, then you did everything right, open the report, in our case, it is the path /home/alex/RiderProjects/ReportPDF_Core_ConsoleApp/ReportPDF_Core_ConsoleApp/bin/Debug/net6.0/test.pdf: Thus, we got a simple report/PDF document built from a dataset. In this article, we have discussed the binding JetBrains Rider (C#) + .NET Core + Console Application + FastReport .NET Core + Linux (Ubuntu 22.04.1 LTS) and got a report built from a PDF dataset. And of course, we made sure that the .NET platform can be easily used without Microsoft Visual Studio since Linux simply does not have it. Of course, we have not told you about creating a GUI application on Linux, which can, for example, be done using the Mono framework, but you can find articles on how to do this on our site. Full program listing ``` using System.Data; using System.Drawing; using FastReport; using FastReport.Export.Pdf; using FastReport.Utils;   //creating a data set DataSet dataSet = new DataSet(); CreateDataSet(); //creating a report Report report = new Report();   CreateReportTemplate(); ExportToPDF();   void CreateReportTemplate() { // add a report page ReportPage page = new ReportPage();   // create a data band DataBand data = new DataBand(); PageHeaderBand dataText = new PageHeaderBand();   //create a title ReportTitleBand titleBand = new ReportTitleBand(); TextObject employeeIdText = new TextObject(); TextObject employeeNameText = new TextObject(); TextObject idText = new TextObject(); TextObject nameText = new TextObject(); TextObject titleText = new TextObject(); //register a data source report.RegisterData(dataSet); //enable a data table report.GetDataSource("Employees").Enabled = true; //add a page to the template report.Pages.Add(page); //add on a page: data,dataText, titleBand // and set the unique page name page.AddChild(data); page.AddChild(dataText); page.AddChild(titleBand); page.CreateUniqueName(); // set the unique name titleBand // and set the band settings titleBand.CreateUniqueName(); titleBand.Height = Units.Centimeters * 1.5f; titleText.Bounds = new RectangleF(300, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); titleText.Text = "Employees"; titleText.Font = new Font("Arial", 14, FontStyle.Bold); titleText.VertAlign = VertAlign.Center;   // create the unique data name // and set the data settings data.CreateUniqueName(); data.DataSource = report.GetDataSource("Employees"); data.Height = Units.Centimeters * 0.5f;   // create a unique dataText name // and set dataText settings dataText.CreateUniqueName(); dataText.Height = Units.Centimeters * 0.8f;   // create the unique employeeIdText name // and set the employeeIdText, idText settings employeeIdText.Parent = data; employeeIdText.CreateUniqueName(); employeeIdText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); idText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); idText.Text = "ID"; employeeIdText.Text = "[Employees.ID]";   // create the unique name employeeNameText // and set the employeeNameText, nameText settings employeeNameText.Parent = data; employeeNameText.CreateUniqueName(); employeeNameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); nameText.Bounds = new RectangleF(50, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); nameText.Text = "Name"; employeeNameText.Text = "[Employees.Name]";   // and add on data band: employeeIdText, employeeNameText data.AddChild(employeeIdText); data.AddChild(employeeNameText);   // add on dataText band: idText, nameText dataText.AddChild(idText); dataText.AddChild(nameText);   // add on titleBand band: itleText titleBand.AddChild(titleText); }   void ExportToPDF() { report.Prepare(); PDFExport export = new PDFExport(); report.Export(export, "test.pdf"); report.Dispose(); }   void CreateDataSet() { // create a simple dataset with a single table   // create a simple dataset dataSet = new DataSet();   // create a table DataTable table = new DataTable(); table.TableName = "Employees"; // add the table to dataset dataSet.Tables.Add(table);   // add data to the table table.Columns.Add("ID", typeof(int)); table.Columns.Add("Name", typeof(string)); table.Rows.Add(1, "Andrew Fuller"); table.Rows.Add(2, "Nancy Davolio"); table.Rows.Add(3, "Margaret Peacock"); } ``` Tags: .NET, FastReport, Core, PDF, C#, Report, Visual Basic, Libgdiplus, AltLinux, JetBrains Rider ### Creating report from user application in FastReport.NET URL: https://www.fast-report.com/blogs/create-report-user-application-net Summary: FastReport .NET pleased with an interesting feature - creating a report from code instead of separate files with report templates FastReport .NET pleased with an interesting feature - creating a report from code instead of separate files with report templates FastReport .NET pleased with an interesting feature - creating a report from code instead of separate files with report templates At the new work place I got to deal with the report generator FastReport .NET. Previously, I had to deal with other reporting systems, for example, Crystal Reports and Microsoft Reporting Services. However, FastReport pleasantly surprised me. It's a really powerful tool with broad functionality. One of my favorite features of FastReport .Net is the ability to create reports directly from the user application code. In this article I want to look at the example of this feature. It comes in handy when you do not need a bunch of files that come with the exe-file. In addition, you can fully control the creation of self-report, changing the appearance of the object of the report, depending on the application logic. First of all, I will show the difference between building a report from the code of the user application from the classic development of a report template in a special designer. Usually, the report generator provides a special designer to design a report template. This may be the component IDE, or just external program. Developer places components on the page of the report and specifies their properties. This is similar to designing a form in application Windows Forms application. In addition to such classic ways to create a report template, FastReport allows you to create a template using the same components but with the help of code in the application. You can also create a report object, add components to it, and configure the data source. With some practice, the creation of a report from the code takes a little longer than in the visual editor. Interestingly, with the result that such a report template can be viewed in the same visual editor (the designer) and save to file. Let's have a look at the example. Create a Windows Forms application in the language C # (of course FastReport .NET should be installed at this point). Place a button on the form, which will launch our report. Looking ahead, I will say that we will not only show the report in preview mode, but also make its exports to PDF. Therefore add CheckBox: Create a button click event handler. Here is the entire code of the application. First of all, add a reference to the FastReport.dll (which is in the pack FastReport .Net). Also, add the library FastReport, FastReport.Utils and FastReport.Data in using. Create an instance of Report: ``` private void RunBtn_Click(object sender, EventArgs e) { //Create instance of class Report Report report = new Report(); } ```  Our report will display data from the database, so you need to create a data source: ``` //load data DataSet ds = new DataSet(); ds.ReadXml(AppFolder + "\\nwind.xml"); ``` I took the database from the delivery of FastReport .Net from the folder Reports. Now you need to register the data source in the report: ``` //Register data source report.RegisterData(ds); ```  To use the table of the registered data source, you need to enable it: ``` //Enable data table report.GetDataSource("Products").Enabled = true; ```  The preparatory work can be considered done. Moving on to creation of the report template. Create the report page: ``` //Add report page ReportPage page = new ReportPage(); ```  And add it to the report: ``` report.Pages.Add(page); ```  All objects of the report need to be given unique names. You can come up with their own, and assign the property Name, or you can use a function that generates a unique name: ``` page.CreateUniqueName(); ``` So, the report page is ready for filling. Create a band "Group Header": ``` //Create GroupHeader band GroupHeaderBand group = new GroupHeaderBand(); ```  Add the created band to the page: ``` page.Bands.Add(group); group.CreateUniqueName(); ```  Set the band height: ``` group.Height = Units.Centimeters * 1; ```  Grouping condition and sort order: ``` group.Condition = "[Products.ProductName].Substring(0,1)"; group.SortOrder = FastReport.SortOrder.Ascending; ``` Now we need to fill the created band with the data. To do this, create a text object with reference to the field from the data source: ``` // create group text TextObject groupTxt = new TextObject(); ``` Important Parent parameter indicates the band, where will be placed text object: ``` groupTxt.Parent = group; groupTxt.CreateUniqueName(); ``` Set the size and the bounds of the text objects: ``` groupTxt.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1); ``` And the text: ``` groupTxt.Font = new Font("Arial", 14, FontStyle.Bold); ``` The other settings relate to the appearance of the text:   ``` groupTxt.Text = "[[Products.ProductName].Substring(0,1)]"; groupTxt.VertAlign = VertAlign.Center; groupTxt.Fill = new LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5f, 1); ``` Now the most interesting part is the creation of the band "data": ``` // create data band DataBand data = new DataBand(); ``` Assign the data band for the group: ``` group.Data = data; data.CreateUniqueName(); ``` Assign the data source for the band "data": data.DataSource = report.GetDataSource("Products"); data.Height = Units.Centimeters * 0.5f; ``` group.Data = data; data.CreateUniqueName(); ``` Here you can set the filter band with the property Filter. Now fill the band with the text object: ``` // create product name text TextObject productText = new TextObject(); productText.Parent = data; productText.CreateUniqueName(); productText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); productText.Text = "[Products.ProductName]"; ``` The group footer is made for a specific group instance. It's very convenient because it will not allow to get confused if there are multiple group headers. So, let's create the group footer: ``` // create group footer group.GroupFooter = new GroupFooterBand(); group.GroupFooter.CreateUniqueName(); group.GroupFooter.Height = Units.Centimeters * 1; ``` Add a total to the group footer. It will display the count of products in the group: ``` // create total Total groupTotal = new Total(); groupTotal.Name = "TotalRows"; ``` Set the type calculation, the band for which the calculations are performed, and the band, which will display the results. Since we define the count of items we do not need to specify a particular field for calculations (done using groupTotal.Expression). ``` groupTotal.TotalType = TotalType.Count; groupTotal.Evaluator = data; groupTotal.PrintOn = group.GroupFooter; ``` We need to add the created total to the totals dictionary of the report. To register it: ``` report.Dictionary.Totals.Add(groupTotal); ``` Like any expression to be displayed, the result is displayed through the text object:    ``` // show total in the group footer TextObject totalText = new TextObject(); totalText.Parent = group.GroupFooter; totalText.CreateUniqueName(); totalText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); totalText.Text = "Rows: [TotalRows]"; totalText.HorzAlign = HorzAlign.Right; totalText.Border.Lines = BorderLines.Top; ``` That's all. The report is ready. Now we can display it, or run in the designer. And you can immediately export it in the desired data format. Let's use a CheckBox, which we added to the form: ``` if (PDFCheckBox.Checked) { report.Prepare(); FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport(); export.Export(report); } else report.Show(); ``` If the CheckBox is checked, you will get the dialog box to save the pdf file. Otherwise, the report will be launched in preview mode. Here it should be noted that it is possible to make export even without displaying the dialog box. Like some sort of “quiet mode”. Then export will look like this: ``` export.Export(report, @"C:\Temp\ReportFromCode.pdf"); ``` where the first option - instance of the report and the second - the resulting file. What we've got the result: ``` //Create instance of class Report Report report = new Report();   //load data DataSet ds = new DataSet(); ds.ReadXml(AppFolder + "\\nwind.xml");   //Register data source report.RegisterData(ds);   //Enable data table report.GetDataSource("Products").Enabled = true;   //Add report page ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName();   //Create GroupHeader band GroupHeaderBand group = new GroupHeaderBand(); page.Bands.Add(group); group.CreateUniqueName(); group.Height = Units.Centimeters * 1; group.Condition = "[Products.ProductName].Substring(0,1)"; group.SortOrder = FastReport.SortOrder.Ascending;   // create group text TextObject groupTxt = new TextObject(); groupTxt.Parent = group; groupTxt.CreateUniqueName(); groupTxt.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1);   groupTxt.Text = "[[Products.ProductName].Substring(0,1)]"; groupTxt.Font = new Font("Arial", 14, FontStyle.Bold); groupTxt.VertAlign = VertAlign.Center; groupTxt.Fill = new LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5f, 1);   // create data band DataBand data = new DataBand(); group.Data = data; data.CreateUniqueName(); data.DataSource = report.GetDataSource("Products"); data.Height = Units.Centimeters * 0.5f;   // create product name text TextObject productText = new TextObject(); productText.Parent = data; productText.CreateUniqueName(); productText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); productText.Text = "[Products.ProductName]";   // create group footer group.GroupFooter = new GroupFooterBand(); group.GroupFooter.CreateUniqueName(); group.GroupFooter.Height = Units.Centimeters * 1;   // create total Total groupTotal = new Total(); groupTotal.Name = "TotalRows"; groupTotal.TotalType = TotalType.Count; groupTotal.Evaluator = data; groupTotal.PrintOn = group.GroupFooter; report.Dictionary.Totals.Add(groupTotal);   // show total in the group footer TextObject totalText = new TextObject(); totalText.Parent = group.GroupFooter; totalText.CreateUniqueName(); totalText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); totalText.Text = "Rows: [TotalRows]"; totalText.HorzAlign = HorzAlign.Right; totalText.Border.Lines = BorderLines.Top;   if (PDFCheckBox.Checked) { report.Prepare(); FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport(); export.Export(report); //export.Export(report, @"C:\Temp\ReportFromCode.pdf"); } else report.Show(); ``` And the report itself: Let's sum up. FastReport .Net surprised is with another interesting feature – creating a report from code. When might this be useful? If you do not want to produce a bunch of individual files with the report templates or want to hide a report template within the program in order to avoid damage or modify the template. It is also convenient to change the report template during the execution of your application. This gives great flexibility to the reports and the ability to use a single template, modifying it depending on the program logic. I'm personally familiar and comfortable with using objects in the program code. Since the creation of the report is practically no different from writing basic code of application . Tags: .NET, .NET, FastReport, FastReport ### Creating the WCF service hosted in windows service URL: https://www.fast-report.com/blogs/creating-wcf-service-windows Summary: Let's take a closer look at how to create a WCF service hosted in a Windows service from FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to create a WCF service hosted in a Windows service from FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to create a WCF service hosted in a Windows service from FastReport .NET. Find more usefull tips and articles in our blog. Today we will create a Windows service, which will serve as the WCF service. An example will be based on the use of the library FastReport.Service.dll (WCF Service Library), which can be found in the package of FastReport .NET. Open Visual Studio and create a project WindowsService. Open the designer of Service1.cs Change the name of the service on your own. Click by right mouse button on window and select “Add Installer”. Edit the properties of the component serviceInstaller1 - set up a DisplayName. In the component properties serviceProcessInstaller1 set up the type of account for the service LocalSystem. Add references in project on System.ServiceModel and FastReport.Service.dll Create application configuration file. Copy the following text into the new app.config ```   ``` Go to the editor of Service1.cs and add the line: ``` using System.ServiceModel; ``` Then you need to modify the class of service, so that it looks like : ``` public partial class ReportService : ServiceBase { ServiceHost reportHost;   public ReportService() { InitializeComponent(); }   protected override void OnStart(string[] args) { if (reportHost != null) reportHost.Close(); reportHost = new ServiceHost(typeof(FastReport.Service.ReportService)); reportHost.Open(); }   protected override void OnStop() { reportHost.Close(); reportHost = null; } }   ``` Compile the project and make sure that there are no errors. You can install the service using the command line utility InstallUtil.exe, which comes with .NET Framework, such as : ``` C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\MyProjects\WcfService1\WindowsService1\bin\Debug\WindowsService1.exe" ``` And you can start service by command: ``` net start ReportService ``` Open web browser and check an address http://localhost:8732/FastReportService/ , which set in app.config in baseAddress. You can change folder and port on your own. Commands for stop and uninstall of the service: ``` net stop ReportService   C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u "C:\MyProjects\WcfService1\WindowsService1\bin\Debug\WindowsService1.exe" ```  You can see this example in latest builds of FastReport .NET in folder "\Demos\C#\WCFWindowsService". Thank you for attention! Tags: .NET, WCF, FastReport, Windows ### Creating Web Service using FastReport.Service.dll URL: https://www.fast-report.com/blogs/creating-web-service-net Summary: Let's take a closer look at how to create a web service using FastReport.Service.dll works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to create a web service using FastReport.Service.dll works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to create a web service using FastReport.Service.dll works in FastReport .NET. Find more usefull tips and articles in our blog. We have an easy way to implement a web service using the library FastReport.Service.dll (WCF Service Library), which is supplied with FastReport .Net. Our example is based on creating a simple web application with a web service functions, but you can modify your existing project based on .NET Framework 4.0 or newer. Run Visual Studio and create a new ASP.NET Web Application project under .NET Framework 4.0. Add references on libraries FastReport.dll, FastReport.Bars.dll, FastReport.Service.dll Create a new text file with name ReportService.svc in site root. Add next lines in file: ``` <%@ ServiceHost Service="FastReport.Service.ReportService" %>   <%@ Assembly Name="FastReport.Service" %>   ``` Open web.config and add next sections in : ```   ``` The key "FastReport.ReportsPath" should contain a path to folder with reports. You can set demo folder «\FastReport.Net\Demos\WCF» for example.  The key "FastReport.ConnectionStringName" should contain connection string name. This line should be registered in section . Let's run our site and check the availability of a Web service by access to a file ReportService.svc. When you deploy the project on the server, be sure to check for files FastReport.dll, FastReport.Bars.dll, FastReport.Service.dll in the folder /bin. Examples of client programs can be found in the folder \FastReport.Net\Demos\C#\WCFClient and \FastReport.Net\Demos\C#\WCFWebClient. Open each project in Visual Studio and right click on ReportService and select Configure Service Reference. Specify the address of an existing web service in configuration window. To be continued . Tags: .NET, WCF, FastReport ### Crystal Reports import in FastReport .NET URL: https://www.fast-report.com/blogs/crystal-reports-import-net Summary: Let's take a closer look at how to import Crystal Reports into FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to import Crystal Reports into FastReport .NET report. Find more usefull tips and articles in our blog. Let's take a closer look at how to import Crystal Reports into FastReport .NET report. Find more usefull tips and articles in our blog. Import Crystal Reports template Crystal Reports template it's a report created by Crystal Reports designer. These reports are stored in files with rpt extension. Importing a report template Converter is implemented as a plug-in. You can download it here, in Extras. The plugin should be compiled in Visual Studio and added in the FastReport. NET designer. To do this, go to the View menu, click Options... and add a plug-in in tab Plugins. After restarting the designer in Open File window will be filter Crystal Reports file (*. rpt). About how to build and connect the plug-in you can learn in the readme.txt.  The next pictures shows the Crystal Reports template (left) and the same report imported in FastReport. NET (right).  Tags: .NET, FastReport, Converter ### Customizing the ready report Viewer in FastReport .NET URL: https://www.fast-report.com/blogs/disable-printing Summary: The article tells about the possibility to hide unnecessary items Report Preview menu control of FastReport .NET. The article tells about the possibility to hide unnecessary items Report Preview menu control of FastReport .NET. The article tells about the possibility to hide unnecessary items Report Preview menu control of FastReport .NET. The main report viewing tool FastReport.Net is Viewer. This viewer has a rich toolkit for storing, exporting, printing, and other manipulations with a report. All this variety is very useful but not always necessary. For example, for users who only view and print reports export emailing is absolutely useless. Also, many people do not need a big list of available export reports. You just confused and lose time to find the right one. In such cases, we would like to leave only the necessary functionality for these users. And it can be done quite simply. This question also arose for the user of the Combit List & Label report generator. The report designer of FastReport .NET, as you know, also allows you to view the reports. To do this, he uses the same Viewer. And you can customize the list of available exports in the designer's settings. File-'Options-User Interface menu: Exports Menu button opens the settings window for export display: You can customize the display of both individual exports and the whole group. There's a Default Menu button to quickly restore your original settings. For example, we removed exports from the display to the PDF, Office, and XML format. And indeed, when we view the report, we will see that they are no longer on the list of exports: But from the report designer we can only set up a list of exports. What about other controls? To do this, you'll have to use programming skills. When creating an app that will run reports, we can set the reviewer's menu settings. For example, this code: ``` Report report = new Report(); report.Load("App_Data/Master-Detail.frx"); report.Prepare(); FastReport.Utils.Config.PreviewSettings.Buttons = PreviewButtons.Print | PreviewButtons.Design; report.ShowPrepared(); ```  Here we set the button display. To be precise  - we just name all the buttons to be displayed: Print and Design. As a result we get: Great result - nothing more. Besides the buttons also displays the page number in the input field. It cannot be removed, otherwise you won't be able to go to other pages without page navigation buttons. Now you can experiment a bit. If your application includes any logic for hiding / showing the controls in the preview, it will certainly be a useful opportunity to return everything to the initial form: Config.PreviewSettings.Buttons = PreviewButtons.All; You can go the other way and not list the buttons that should be displayed, but rather to list those that you want to exclude: Config.PreviewSettings.Buttons ^ = PreviewButtons.Email; At the same time, send e-mail button will disappear and the rest will be available. Of course, you can edit the list of available exports, by analogy with the above example. Also you can edit the export list through:  Config.PreviewSettings.Exports And you can edit the exports to the clouds: Config.PreviewSettings.Clouds Tags: .NET, FastReport, Viewer, Preview, Printing ### Customizing the report designer URL: https://www.fast-report.com/blogs/custom-report-designer Summary: The article describes how to create custom report designer for FastReport.NET report generator The article describes how to create custom report designer for FastReport.NET report generator The article describes how to create custom report designer for FastReport.NET report generator Report designer is replete with lots of features that many users do not use. Sometimes the variety of icons and menus only distracts. Therefore, many users would like to have a simplified version of the report designer with only the functions they need. This, the report designer can be customized to provide end users by embedding it in your application. In this article we will look at the way to create a custom designer items management responses, that is a custom toolbar with the desired function buttons. It is quite easy to make. The fact that the report designer component provides us with a kind of the API, to call some of its functions, such as creating, downloading and saving a report, print, report viewing, and many others. Therefore, all we need - to add a component of the report designer and create your own toolbar. Add in the form ToolStrip component. And create a panel 7 buttons: • the New - create a new report; Open - open an existing report template for editing; Save - save the report template; Preview - Preview the report; Undo - undo the last edit; Redo - redo your editing; Close - close the program. Connect fastReport.dll to the project. And for the form, we create a Load event handler: ``` public DesignerControl designer; //Set the variable for the report designer component private void Form1_Load(object sender, EventArgs e) { designer = new DesignerControl(); //Crete a copy of rport designer this.Controls.Add(designer); //Add component to the form   Report report = new Report(); //Create a report object designer.Report = report; //Pass the created empty report to the designer designer.RefreshLayout(); //Update the designer designer.Dock = DockStyle.Fill; //Set th location of the dsigner component designer.ShowMainMenu = false; //Turn off menu in the designer }   // Create a new report private void ToolStripButton1_Click(object sender, EventArgs e) { designer.cmdNew.Invoke(); } //Open a rport private void OpenBtn_Click(object sender, EventArgs e) { designer.cmdOpen.Invoke(); } //Save report private void SaveBtn_Click(object sender, EventArgs e) { designer.cmdSave.Invoke(); } //View report private void PreviewBtn_Click(object sender, EventArgs e) { designer.cmdPreview.Invoke(); } //Close program private void CloseBtn_Click(object sender, EventArgs e) { this.Dispose(); } //Undo the last action private void UndoBtn_Click(object sender, EventArgs e) { designer.cmdUndo.Invoke(); } //Redo the last action private void RedoBtn_Click(object sender, EventArgs e) { designer.cmdRedo.Invoke(); } ``` As you can see, for each button from the toolbar created, we have created a click event. In accordance with the functions of the buttons, we call the right design team. List of available commands: cmdnew – create a new report; cmdnewpage - create a new report page cmdnewdialog - create a dialog report form; cmdopen - open the existing report template for editing; cmdsave - save report template cmdsaveas - save the report template, indicating the path; cmdsaveall - save all changes; cmdclose - close the report in the designer; cmdcloseall – close all the reports in the designer; cmdpreview – view reports; cmdprintersetup - print installation cmdpagesetup - report page setup) direction, size, etc;; cmdaddata - add a data source to the report; cmdsortdatasources - sort data sources cmdchoosedata select data source; cmdundo - cancel the latest report editing; cmdredo - returns the latest editing report; cmdcut - cut to clipboard; cmdcopy - copy to clipboard; cmdpaste - paste from clipboard; • cmdformatpainer - specify picture format cmddelete - delete the report object; cmdcopypage - copy report page cmddeletepage - delete report page; cmdselectall - select pages for all objects cmdgroup - group objects cmdungroup split report objects cmdedit - edit report page settings; cmdfind - display search window; cmdreplace - display the replacement window; cmdbringtofofront - Designer's object; cmdsendtoback - the background of the design object cmdinsert - check whether the insert option is enabled; cmdinsertband - insert band; cmdrecentfiles - add a file to the list of recent files; cmdselect language - select the local design of a language; cmdviewstartpage - the designer who makes the web page start; cmdreportsettings - set report settings; cmdoptions - set designer settings; cmdreportstyles - set report styles cmdhelpcontents - display help page cmdabout - display page about; cmdwelcome - show welcome page cmdpolyselectmove, cmdpolyselectpoint, cmdpolyselectaddpoint, cmdpolyselectbezier, cmdpolyselectremovpoint - polygon settings And now let’s run our application: Looks like an ordinary report designer. But notice the upper toolbar - it's not standard. We only have the functions we need. Tags: .NET, .NET, FastReport, FastReport, Designer, Designer, Report, Report, Customization, Customization ### Data can be very scary.. URL: https://www.fast-report.com/news/Halloween-FastReport-BusinessGraphics Summary: New demo version of FastReport Business Graphics in the theme of Halloween. New demo version of FastReport Business Graphics in the theme of Halloween. Your data is extensive or collecting the dust in the dark corners of the BD? It's unreadable, which means it's uninformative. Spooky! Fear no more! We've come to the rescue with a tool of Data visualization and dressed it up in Halloween colors.  Hurry up to try our Halloween version!  Take a look at the example of Halloween data with Halloween theming: ### DataRage 2 Special Product Discount of Fast Reports URL: https://www.fast-report.com/news/datarage-discount Summary: DataRage 2 Special Product Discount of Fast Reports DataRage 2 Special Product Discount of Fast Reports As old time partner of Embarcedero and exhibitor of DataRage 2 we are offer Special Discount on Fast Reports products. You can save some coin with 20% off on your choice of Fast Reports products. Offer expires at 11:59pm on May 27, 2010 Register now visit our virtual hall and receive 20% discount for lead reporting tools for working with databases! ### Delphi Developer Days 2012 URL: https://www.fast-report.com/news/delphi-developer-days-2012 Summary: Delphi Developer Days 2012 Delphi Developer Days 2012 Fast Reports , as a gold-sponsor , is pleased to invite you to Delphi Developer Days . Delphi experts Marco Cantù and Cary Jensen are joining up again for the 2012 Delphi Developer Days tour. Delphi Developer Days 2012 visits four European / UK cities and two US cities.  March 26-27, 2012:  London, United Kingdom March 29-30, 2012:  Amsterdam, The Netherlands April 16-17, 2012:  Washington DC/Baltimore, USA April 19-20, 2012:  Chicago, USA May 14-15, 2012:  Frankfurt, Germany May 17-18, 2012:  Rome, Italy Space is limited to the first 35 people in each city. All sessions are presented in  English .  Full information you can found on  this page. ### Delphi Developer Days 2014 URL: https://www.fast-report.com/news/delphi-developer-days-2014 Summary: Delphi Developer Days 2014 Delphi Developer Days 2014 Fast Reports is proud to be a Gold Sponsor of Delphi Developer Days 2014! Delphi experts Bob Swart and Cary Jensen present the 2014 Delphi Developer Days tour. Dates and locations are: - May 5-6, 2014: Washington DC/Baltimore, USA - May 8-9, 2014: Chicago, USA - May 26-27, 2014: Frankfurt, Germany - June 12-13, 2014: Amsterdam, The Netherlands - June 18-19, 2014: London, United Kingdom Delphi Developer Days are two-day live Delphi events that provide you with the latest information on Delphi as well as practical techniques to help you improve your Delphi development skills. An agenda can be found at: http://www.DelphiDeveloperDays.com/descriptions.html Fast Reports CEO Michael Phillipenko and Lead Developer Denis Zubov will be the featured guest speakers at the Delphi Developer Days 2014 event in Amsterdam on 12 June. Their presentation is titled "Creating Reports for VCL and FireMonkey Using FastReport". ### Delphi Open Doors 2015 Event URL: https://www.fast-report.com/news/event-delphi-2015 Summary: Delphi Open Doors 2015 Event Delphi Open Doors 2015 Event Our Italian partner -int Tech - Italy-organizes Delphi Porte Aperte, a free half-day event to give participants an insight into the state of the art of Delphi (and RAD Studio) and delve into the most interesting features of the latest versions of Embarcadero development environments. More information- here ### Delphi turns thirty! URL: https://www.fast-report.com/news/sale-30-delphi Summary: We celebrate the thirtieth anniversary of Delphi and give you the opportunity to purchase FastReport VCL edition Ultimate with a significant discount of 30% We celebrate the thirtieth anniversary of Delphi and give you the opportunity to purchase FastReport VCL edition Ultimate with a significant discount of 30% To celebrate the occasion, we invite you to get the FastReport VCL Ultimate edition with a notable discount of 30%. It's a great opportunity to get a great deal on the most extensive type of reporting tool with a source code, cross-platform tools, and OLAP features! Don't miss your chance on February 13 and 14 to save from $390 and provide your application with: Source code Report designer with dialog forms Client-server components for VCL and Lazarus Report creation for VCL, FMX and Lazarus Converters from Quick Report, Report Builder, Rave Reports Support for exporting templates to other data formats Multidimensional analysis system FastCube for VCL, Lazarus and FMX Flexible and open architecture with support for custom report objects Storing finished documents in cloud storage Google Drive, Next Cloud, OneDrive, Amazon S3, Outlook, Gmail FastScript and FastQueryBuilder included Freeze your discount and pay later! The offer is valid till 11.59 pm of February 14. If for some reason you can't make payment until this time,  contact us and freeze your discount for 6 days to pay later! ### Demo versions request URL: https://www.fast-report.com/request-successful Summary: Thank you for request, a download link will be sent to your email. Thank you for request, a download link will be sent to your email. Thank you for request, a download link will be sent to your email. Thank you for request, a download link will be sent to your email. Thank you for request, a download link will be sent to your email. ### DevProConnections Community Choice Awards - Bronze URL: https://www.fast-report.com/news/awards-bronze-2011 Summary: DevProConnections Community Choice Awards - Best Vendor Support DevProConnections Community Choice Awards - Best Vendor Support Fast Reports has won the following award in the DevProConnections Community Choice Awards: Best Vendor Support: Bronze ### Digital signature in the new FastReport VCL 2023.1 URL: https://www.fast-report.com/news/fastreport-vcl-2023.1 Summary: Let's take a closer look at how the Digital Signature works in the new FastReport VCL 2023.1 in FastReport. Let's take a closer look at how the Digital Signature works in the new FastReport VCL 2023.1 in FastReport. We have added the option of an attached and detached digital signature of arbitrary files. They will be used with the help of crypto providers installed in the system. You can see an example of a report with a digital signature at the Demos\FileSignature path. You will find the instructions at this link . We had added the ability to set arbitrary sheet names in the following exports: frxBIFFExport, frxXMLExport, frxXLSXExport via the OnGenerateSheetName event. The SVG image engine now supports "pattern" for object fills. Added AutoSize mode for TfrxOLEView object. Improved compatibility with the latest Lazarus version and added the TfrxDateEditControl object. Support for Delphi 7 has also been discontinued with this version. We have also optimized the work of the existing functionality and fixed some bugs. Full list of changes in version 2023.1 --------------- [Designer] - Fixed dataset filtering [Engine] + Added a new class for signing an arbitrary file with an attached or detached signature. - Fixed supreport X position when keep mechanism uses inside it [Exports] + Added ability to customize sheet names in excel exports (frxBIFFExport, frxXMLExport, frxXLSXExport) - Fixed bug when PDFView draws dash line with wrong scale on metafile in PDF export vector output - Fixed pdf export errors - Fixed issue when pictures may disappear during PDF export in multi-thread GUI application - Fixed font size in HTMLTags in XLSX export - Fixed bug in xls(biff8) export under x64 platform - Fixed Cc and Bcc fileds in the SMTP mail sender [Lazarus] + Added implementation of TfrxDateEditControl - Fixed Lazarus compilation - Disable AutoSize for descriptions functions in functions-tree due to Lazarus internal bug [Preview] - Fixed Search form width [Report object] + Added support for the dominant-baseline attribute and the pattern element + Added Autosize for TfrxOLEView - Fixed overflow error when test size of types in HTMLView stream - Fixed issue when TfrxRichView.RichEdit.Lines.LoadFromFile does not load file correctly under Rad Studio 11.2 - Fixed bug with Datamatrix barcade with ACSII codepage - Fixed barcodes RTTI - Fixed PDFView memory leaks - Fixed TfrxPDFObject for 64bit in the IDE [Resources] * Updated Swiss resources * Update German Resources * Updated Farsi resources ### Digital Signature to PDF Export URL: https://www.fast-report.com/blogs/pdf-digital-signature Summary: Electronic document management has become an integral part of our lives already long time ago. Everyone appreciated the convenience of such documents - they do not deteriorate over time, they are more difficult to lose, easy to store and quickly transfer to any distance. Electronic document management has become an integral part of our lives already long time ago. Everyone appreciated the convenience of such documents - they do not deteriorate over time, they are more difficult to lose, easy to store and quickly transfer to any distance. Electronic document management has become an integral part of our lives already long time ago. Everyone appreciated the convenience of such documents - they do not deteriorate over time, they are more difficult to lose, easy to store and quickly transfer to any distance. Electronic document management has become an integral part of our lives already long time ago. Everyone appreciated the convenience of such documents - they do not deteriorate over time, they are more difficult to lose, easy to store and quickly transfer to any distance. And although, the times of registered letters and parcels have not yet passed, the need for them will completely disappear very soon. The bureaucratic system recognizes only signed documents and that was a major obstacle to the development of electronic document management. After all, what's the use of the document transfer speed, if its signed version is necessary, so to say “original”. Therefore, electronic signatures have been developed - ciphers that guarantee uniqueness and originality, allowing to unequivocally establish authorship and protect against document changes. Thanks to reliable encryption algorithms, such signatures are no worse than handwritten, and even better, more reliable. PDF documents, perhaps, can be called an electronic document management standard. In many ways, its popularity is due precisely to good document protection, including a digital signature. The FastReport .NET team is constantly improving exports to PDF, and now, finally, an electronic signature appeared in version 2019.3.2. In the current version two types of signatures are available: 1) Signing field (signature field) - implies the presence of a special field in the document, by clicking on which, the user will be able to attach his certificate; 2) Invisible signature - it is a signature certificate. Visually, it is not visible, but in the document properties you can get information about the signer, the authenticity of the signature, the version of the document at the time of signing, and other information. Let's have a look on both options in more details. 1)      Signature field . To realize this possibility in PDF export, the developers of FastReport have added a new control to the report designer. You can see it at the very bottom of the sidebar: It is called Digital Signature. When placing this control on the report page, it looks like this: In the report view it is invisible. Its functionality is limited solely to PDF export. That is, you will see this field when viewing a PDF file in Acrobat Reader. When exporting to PDF, enable the signing option: After export, the field will look like this: Click on the signature field and see the window for choosing a certificate to sign the document: Choose a certificate and click "Continue." Next, we need to enter the password for signing (if the certificate is not imported into Windows digital Id), we can set the style and enable the document blocking option after signing. After signing, the document must be saved. Here's what the caption will look like in the end:  2)      Invisible signature . For invisible export PDF signature, you do not need to add a Digital Signature control to the report page. You need to enable the signing option in the export settings: Also, you can fill in the information fields of Location, Reason and Contact Info. Next you need to select the signature certificate file in the pfx format to set the password for the certificate. You can choose a certificate file at this stage. Then, after exporting the report, you will see a hidden signature in the PDF document, but it will not be filled in. You can add a certificate to the signature. This is similar to the first signature option we considered, the only difference is that it is not directly visible in the document. Here is what an invisible signature without a certificate looks like in Acrobat Reader: And here is the invisible signature with the certificate: In order for the certificate to be authenticated by the person who receives the document you created, he must import your certificate to his local computer. Then he will be able to verify the signature in the PDF document using the “Certificates” tool (by clicking on the “Validate All Signatures” button): Thus, FastReport .NET can now create full-fledged electronic documents protected by electronic signature. Tags: .NET, Export, FastReport, PDF ### Digital signing of files with FastReport VCL URL: https://www.fast-report.com/blogs/digital-signature-vcl Summary: We tell you how to generate a PDF file using FastReport VCL, which will contain a digital signature. We tell you how to generate a PDF file using FastReport VCL, which will contain a digital signature. We tell you how to generate a PDF file using FastReport VCL, which will contain a digital signature. It is hard to imagine our life without electronic document management. Such documents are convenient because they do not deteriorate over time, they are more difficult to lose, easy to store, and quickly transfer to any distance. But as it is known, only signed document comes into force. Electronic signatures are ciphers that guarantee uniqueness and originality, allowing to establish a definitive authorship and protect the document from changes. However, signing every generated PDF file can be time-consuming. What if you have a thousand or more generated files — should you sign them manually? Of course not. FastReport VCL can sign the generated files with your signature. Next, we will look into an example of digital signing. For clarity, we will use a small application that exports files to PDF and signs them. ``` procedure TForm1.Button1Click(Sender: TObject); const FR3FileName = 'Signatures.fr3'; var PDFExport: TfrxPDFExport; Report: TfrxReport; begin Report := TfrxReport.Create(nil); try Report.LoadFromFile(FR3FileName); Report.PrepareReport; // upload and prepare a report   PDFExport := TfrxPDFExport.Create(nil); try PDFExport.Report := Report; PDFExport.ShowDialog := False;     PDFExport.FileName := ExtractFileName(FR3FileName) + '.pdf'; Report.Export(PDFExport); // export the report SignExport(PDFExport); // sign the file finally PDFExport.Free; end; finally Report.Free; end; end;   procedure SignExport(PDFExport: TfrxPDFExport); const CertificatePath = 'JaneDoe.pfx'; // The name of our certificate PasCert = '123'; // certificate password var Lookup: TCertificateStoreLookup; FS: TfrxFileSignature; FSO: Integer; begin Lookup := TCertificateStoreLookup.Create; Lookup.IgnoreCase := true; Lookup.CertificatePath := CertificatePath;   FSO := FileSignatureOptions( true, // Detached = true Signature in a detached file false, // Chain = false Certificate chain false, // OnlyGOST= true GOST certificate true, // DebugLog = true Debugging Information true); // PFX = false (true) indicates that the certificate should be searched in the pfx/p12 file. At the same time, the file name and, possibly, the password must be specified.   FS := TfrxFileSignature.Create( Lookup, PDFExport.FileName, // PDF file name PDFExport.FileName + '.sig', // Name of the generated signature AnsiString(PasCert), FSO);   FS.Sign; FS.Free; Lookup.Free; end; ``` After writing the program, let's move on to running it. After starting, click on the "Export" button. Then we get a signed PDF file with a signature file: We should check whether the PDF file was signed correctly. For this, open the console and enter the following commands: ``` openssl pkcs12 -in JohnDoe.pfx -out JohnDoe.pem ``` After we enter the password and check with the following command: ``` openssl smime -verify -binary -inform DER -in Signatures.fr3.pdf.sig -content Signatures.fr3.pdf -certfile JohnDoe.pem -nointern -noverify 1> /dev/null ``` This screenshot shows that the PDF file has passed the signature check, so we did it. Thus, we got a properly exported PDF file signed using FastReport VCL in a fast and easy way. Tags: VCL, Lazarus, FastReport, PDF, Delphi ### Displaying a prepared report on the Web URL: https://www.fast-report.com/blogs/displaying-prepared-report-web Summary: Get useful tips on how to display a prepared report on the Internet in FastReport .NET report. Find more usefull tips and articles in our blog. Get useful tips on how to display a prepared report on the Internet in FastReport .NET report. Find more usefull tips and articles in our blog. Get useful tips on how to display a prepared report on the Internet in FastReport .NET report. Find more usefull tips and articles in our blog. Innovations in FastReport .NET 2018.4 touched the web reports as well. Now you can display reports in fpx format, i.e. pre-prepared reports. The fpx format is very convenient for exchanging reports, because it contains data in addition to the template. Therefore, to display a report in fpx format, you do not need to connect to the data source at all, and this removes the “headache” in the case when your database is located on a remote server. There will not be any delays in the construction of the report associated with the recieving of data. Having a report pool in this format, you probably want to display them on a web page. Now it has become possible. Consider how this works with an example. This will be the most simplified example. Let’s create an empty ASP .NET MVC project. In the Reference, we add the libraries FastReport.dll and FastReport.Web.dll, which can be taken here: C:\Program Files (x86)\FastReports\FastReport.Net\Framework 4.0. Add the MVC 5 ViewPage (Razor) view. Let's call it index. Here is its default content: ``` @{ Layout = null; }  
```  Add a WebReport object. Of course, we could create it in the controller. But, you can create it right in the view. ``` @{ Layout = null; }   @{ // FastReport .Net prepared report preview example. FastReport.Web.WebReport webReport = new FastReport.Web.WebReport(true, true); webReport.ToolbarIconsStyle = FastReport.Web.ToolbarIconsStyle.Black; webReport.ToolbarBackgroundStyle = FastReport.Web.ToolbarBackgroundStyle.None; webReport.ToolbarStyle = FastReport.Web.ToolbarStyle.Large; webReport.ToolbarColor = System.Drawing.Color.White; webReport.BorderWidth = 1; webReport.BorderColor = System.Drawing.Color.Black; webReport.ShowZoomButton = false; webReport.ShowExports = false; webReport.PrintInBrowser = false; webReport.XlsxPrintFitPage = true; webReport.LoadPrepared(Server.MapPath("~/App_Data/Prepared.fpx")); }   FastReport Prepared Report Preview @webReport.GetHtml() ```  Also, we added the header and output of the report in HTML format. Let's take a closer look at the settings of the webReport object that we created: • ToolbarIconsStyle - style of icons on the uppermost web report toolbar: Black, Blue, Custom, Green, Red; • ToolbarBackgroundStyle - background style of the web report toolbar: Custome, Dark, Light, Medium, None; • ToolbarStyle - style of displaying buttons on the web report toolbar: Large or Small; • ToolbarColor - toolbar background color; • BorderWidth - width of the web report frame; • BorderColor - web report frame color; • ShowZoomButton - display zoom buttons; • ShowExports - display export menu; • PrintInBrowser - allow printing from the browser; • XlsxPrintFitPage - enable printing of the report on one page, when exporting to Excel 2007. To display the web response, we need to export to html. Therefore, in the Web.config we add the handler: ``` ```  Let's run the application: It looks like a regular web report. But do not forget, this is a pre-prepared report in fpx format. Now we can use both frx and fpx reports. It is great that we got rid of a significant limitation of web reports. The above example shows how to use fpx reports directly from the view, but if you are more accustomed to working with logic in the controller, then use the ViewBag to transfer the report from the controller to the view. Tags: FastReport, ASP.NET ### Displaying images with transparency in Adobe Acrobat URL: https://www.fast-report.com/blogs/adobe-transparency Summary: In this article, we'll look at how to turn off the support for translucency when exporting the FastReport .NET report to PDF. In this article, we'll look at how to turn off the support for translucency when exporting the FastReport .NET report to PDF. In this article, we'll look at how to turn off the support for translucency when exporting the FastReport .NET report to PDF. Images with transparency are often called images with an alpha channel. What does this mean? The alpha channel contains information about partial or full transparency of the image. It is mainly used in computer animation. RGB images can have up to 24 alpha channels. Each of them contains information about the transparency of a part of the image. Managing these channels can make parts of the image transparent at the right time. This creates an animation effect. The most common raster formats of images with support for transparency: PSD - the native format of Adobe Photoshop. Supports full and partial transparency; TIFF - most often used to store scanned images, because it allows you to store information about the great depth of color. This quality has made the format of tiff popular in printing. Supports partial and full transparency; GIF - this format is most popular in the Web graphics, because the file has a very small size. Allows you to store information about full transparency only. That is, you can not make a semi-transparent image; PNG is also common in Web graphics, but the file is larger and supports translucency. In this article, we'll look at how to turn off the support for translucency when exporting the FastReport .NET report to PDF. This can be done from the application code: Report report = new Report(); report.Load("@/../../Transparency.frx"); PDFExport export = new PDFExport(); export.TransparentImages = false; report.Prepare(); report.Export(export, "result.pdf"); As you can see from the code, PDF export has a TransparentImages property that allows you to disable (false) or enable (true) transparency support. Three report objects are represented as a picture when exporting to PDF: Picture, RichText and Chart. The TransparentImages property works for all of them. And now I propose to see how these objects will look like with the TransparentImages property turned on and off. Export Image The original image in png format does not have a background: Now add the Picture object to the band and load this picture into it. A colored background is set for the band. As you can see, the red tint is noticeable on the background of the image, it means the picture has a transparent background. Let's see how the export of this report to the PDF format will look like with the value of the TransparentImages = ture property: Just like in the designer. And now, install TransparentImages = false: The transparent background of the picture is now painted in white. RichText Export Let's see how RichText looks like with a transparent background: Although the object has a transparent background, but you cannot get rid of the white substrate for the text. Set the property TransparentImages = false: The background is painted white. Given that the white substrate text cannot be removed, for RichText the TransparentImages property is not very useful. Export Chart object The Chart object has many background settings. To get a transparent background of the object, you need to set the following settings in the object properties: BackColor = Transparent; BorderSkin(SkinStyle) = None; BorderLineColor = Transparent; Open the Legends collection, select the legend and set TitleBackColor = Transparent for the title. Open the ChartAreas collection, select an entry, and set the value of Transparent to BackColor. Here's a chart: When exporting to PDF with the value of the property TransparentImages = true, the chart looks the same as in the picture above. And if you set TransparentImages = false, you get a white background: Tags: .NET, .NET, FastReport, FastReport, PDF, PDF ### Distributing FastReport .NET with an application URL: https://www.fast-report.com/blogs/distributing-net-application Summary: Let's take a closer look at how FastReport .NET distributes with an application. Find more usefull tips and articles in our blog. Let's take a closer look at how FastReport .NET distributes with an application. Find more usefull tips and articles in our blog. Let's take a closer look at how FastReport .NET distributes with an application. Find more usefull tips and articles in our blog. This article will be helpful for anyone who uses FastReport.Net in his application. In order for your application to be operable on any computer, you need to include third-party libraries that you use in it. In this case - FastReport library. The following libraries are available: • FastReport.dll - the main library FastReport.Net; • FastReport.Web.dll - Library to work in ASP.Net, contains WebReport component; • FastReport.Bars.dll - library for organizing floating windows, toolbars, and menus; • FastReport.Editor.dll - code editor with syntax highlighting. This library is not necessary, if your application does not use the report designer; • FastReport.xml - comments to classes, properties and methods to the FastReport. This file is used in the code editor, and also in tips panels (when you select the function in the "Data" window or any property in the "Properties"). This file is not required to distribute; • FastReport.Service.dll – the dll to implement WCF services; • FastReport.VSDesign.dll - a service library for the organization of work with FastReport from Visual Studio. In addition you need to distribute report files (if reports are stored in files instead of the application resources). What does it mean to distribute the library? This means that the library should be located in the same directory as the application .exe file, or should be registered in the GAC. GAC (Global Assembly Cache) - a well-known catalog of assemblies intended to be shared by multiple applications. The CLR automatically checks this folder when it detects reference to the assembly. It is necessary to use special utilities for placing assemblies in the GAC, for example - GACUtil. For Framework 2.0 should be used gacutil.exe. For Framework 4.0 - gacutil4.exe. Here is an example command-line utility to run the registration FastReport library in GAC: gacutil4.exe / i FastReport.dll. Gacutil4.exe can be found in one of the ways, depending on the version of Windows and Visual Studio: C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools So, together with a Windows application you need to distribute the following libraries: FastReport.dll, FastReport.Bars.dll, FastReport.Editor.dll. Mandatory one is FastReport.dl. FastReport.Bars.dll and FastReport.Editor.dll required only if you use the components of these libraries. For Web applications, place the libraries: FastReport.dll, FastReport.Web.dll. Both are required. Service WCF application distributed with the libraries: FastReport.dll, FastReport.Service.dll. It should be remembered that libraries of FastReport.Net have differences for versions of Framework 2.0 and 4.0. Keep this in mind when distributing. Copy the files of the libraries from the installation for the proper version of Framework. To work with diagrams in FastReport.Net should be installed Microsoft Chart Control https://www.microsoft.com/en-gb/download/details.aspx?id=14422 . If you want to distribute reports with charts, you have to include System.Windows.Forms.DataVisualization.dll library in the program package (can be found in the distribution FastReport.Net). This is also true for Web applications. I pointed out FastReport.VSDesign.dll in the list of libraries FastReport.Net . It needed to work with FastReport.Net in Visual Studio only and do not need to distribute it together with the application. Another such a service library - FastReport.Install.dll. Tags: .NET, FastReport ### Documentation URL: https://www.fast-report.com/downloads/documentation Summary: Access FastReport documentation for detailed information on how to use and integrate the software. Documentation FastReport .NET Online Documentation User's Manual (.pdf) Programmer's manual (.pdf) Online Dokumentation (DE) Benutzerhandbuch (.pdf)(DE) Çevrimiçi Dokümantasyon (TR) Kullanım Kılavuzu (.pdf)(TR) Programcı kılavuzu (.pdf)(TR) Online Designer Online Documentation User's Manual (.pdf) FastReport VCL Online Documentation Online Dokumentation (DE) User's Manual (pdf) Documentação Online Programmer's manual (pdf) Developer's manual (pdf) Web reporting guide (pdf) Class Reference (chm) FastScript Developer Manual (pdf) FastReport Desktop Online Documentation User's Manual (.pdf) Install Manual (.pdf) FastReport Cloud Online Documentation User's Manual (.pdf) Support's Manual (.pdf) Programmer's manual (.pdf) FastReport Corporate Server Online Documentation User's Manual (.pdf) Programmer's manual (.pdf) Support's Manual (.pdf) Installation Manual (.pdf) FastReport Publisher Online Documentation User's Manual (.pdf) Programmer's manual (.pdf) Support's Manual (.pdf) Installation Manual (.pdf) FastReport FMX (Reporting FMX) Online Documentation FastReport Business Graphics .NET Online Documentation Programmer manual (.pdf) Installation Manual (.pdf) FastCube .NET Online Documentation User Manual (.pdf) Developer Manual (.pdf) FastScript .NET Online Documentation Programmer's manual (.pdf) info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Download of OpenStreetMap in FastReport .NET URL: https://www.fast-report.com/blogs/download-osm-net Summary: Let's take a closer look at how downloading OpenStreetMap into FastReport .NET works. Find more usefull tips and articles in our blog. Let's take a closer look at how downloading OpenStreetMap into FastReport .NET works. Find more usefull tips and articles in our blog. Let's take a closer look at how downloading OpenStreetMap into FastReport .NET works. Find more usefull tips and articles in our blog. In FastReport .NET 2016.2 we added an opportunity to download maps from OpenStreetMap files (* .osm). In this article I would like to show how to do it First we should get a file containing part of OpenStreetMap data. In ordert to do this: 1. Go to the website http://www.openstreetmap.org 2. Find the city which we are intrested in. To do so we should enter the name of city in the search box, e.g. New York. 3. We can find the necessary part of the city using m oving and zooming the image. 4. Now we should select and export an area of the map. To do this, click the "Export" button. And then click "Manually select a different area". We will see illuminated rectangular area. This area can be changed by dragging its corners. 5. After selecting a part of the map click "Export" button. We will see usual save file window . M ap will be saved in map.osm file. This file can be found in the Downloads folder of browser. 6. If occurs an error after pressing the "Export" button, we should select smaller area. Because OpenStreetMap does not allow to exporting too big areas of the map. Now we can open the resulting file in FastReport .Net designer . 1. Create a map on report page. 2. We should run the map editor using double click on the map. 3. Click Add button in appeared window. 4. Select "Map file" in next window and click the Open button. 5. We will see the open file window. We should select "OpenStreetMap file(*.osm)" filter , select the file and click Open button. 6. Now we just should click "OK" in add layer window. 7. The map will be loaded and shown in the preview area of map editor. Now we can close the map editor by clicking OK button. Map is loaded successfully. Tags: .NET, FastReport, Map ### Downloading the report as an Excel document in MVC URL: https://www.fast-report.com/blogs/downloading-excel-document-mvc Summary: Let's take a closer look at how loading a report as an Excel document works in MVC. Find more usefull tips and articles in our blog. Let's take a closer look at how loading a report as an Excel document works in MVC. Find more usefull tips and articles in our blog. Let's take a closer look at how loading a report as an Excel document works in MVC. Find more usefull tips and articles in our blog. Previously, we already examined an example of displaying a printing dialog of a report in HTML and PDF formats. The aim of this article is to show how to save reports in the desired format, providing an example of Excel. We use the MVC web application. There is a button, which is provided to save a report. Add it to the web page Home. For this, open the Index.cshtml file in the Views folder. Place the following code in the desired location: ``` @using (Html.BeginForm("Save", "Home"))   {     } ``` There "Save" - is the name of the handler in the controller. "Home" - is the controller. Now add the handler "Save" to the Home page controller. For this, open the HomeController.cs file in the Controllers folder: The handler will look like this: ``` public void Save()   {   WebReport webReport = new WebReport();   System.Data.DataSet dataSet = new System.Data.DataSet();   dataSet.ReadXml("C://Program Files (x86)//FastReports//FastReport.Net//Demos//Reports//nwind.xml");   webReport.Report.RegisterData(dataSet, "NorthWind");   webReport.Report.Load("C://Program Files (x86)//FastReports//FastReport.Net//Demos//Reports//Simple List.frx");   webReport.ExportExcel2007();   } ``` Let us take a look at the procedure: Create an instance of an object of WebReport; Create an instance of an object of DataSet to work with date; Load the xml datebase file; Register the source of the date in the report object; Load the report template in WebReport object; Save the report in Excel format. Now you need to add the handler in the Web.config file, which is located in the root of the project: ```     ``` Run the application to see the button:  Click on it. The program will display a dialog to save the report file in xlsx format. After downloading the report, it will be open: Summing up, we can conclude that using the shown application, it is possible to save your report in different formats, available for exporting reports. Using the shown code allows users of the web application to download a report in the desired format without displaying the report itself. Tags: .NET, FastReport, ASP.NET, MVC, Excel ### Downloads URL: https://www.fast-report.com/downloads Summary: Use demos to test our products before making a purchase decision. Demo versions Demo FastReport .NET Demo FastReport VCL Demo Business Graphics .NET Demo FastCube .NET Demo Reporting Lazarus Demo Analysis VCL Demo FastReport Viewer Demo FastReport Desktop Demo FastReport Corporate Server Demo FastReport Publisher info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Duplication or removal of pages in the preview mode of the report URL: https://www.fast-report.com/blogs/Duplication-removing-pages-preview-report Summary: Let's take a closer look at how duplicating or deleting pages works in the report preview mode in FastReport. Find more usefull tips and acticles in our blog. Let's take a closer look at how duplicating or deleting pages works in the report preview mode in FastReport. Find more usefull tips and acticles in our blog. In FastReport 2018.4 a very interesting feature appeared - duplication and removal of the report pages in preview mode. Let us be clear. We are talking about the pages of already built report. That is, you can select a specific report page and clone it as many times as you want, or delete the selected page. In this case, there will be no effect on the template itself. Even if you have only one page. To get everything back to its original state - simply build the report again. In FastReport 2018.4 a very interesting feature appeared - duplication and removal of the report pages in preview mode. Let us be clear. We are talking about the pages of already built report. That is, you can select a specific report page and clone it as many times as you want, or delete the selected page. In this case, there will be no effect on the template itself. Even if you have only one page. To get everything back to its original state - simply build the report again. When this function can be useful? For example, if you want to print the report, and any specific pages needed in multiple instances. Or, on the contrary, some of the pages you do not want to print. Yes, in the print settings you can select the desired page number. But you must remember these numbers. It is not very convenient. Using the new function, you add the required pages without having something to remember. Let's see how this works on practice. For example, we have a built in preview mode Simple List report. Let’s reduce its scale to fit in the scope all three pages: Note that the first page has a yellow frame. This means that it is now selected. On the toolbar at the top there are two shortcuts: -  copy the page -  delete the page Let’s copy the first page: The copied page is added immediately after the selected. Now delete all pages except the last one. When you remove pages, the focus switches to the subsequent page. So, in our case, it's best to set the focus to the first page, and then delete the page. In the end, there is only one, the last page of the report. We can clone it, but other pages are not available for this action.  Thus, the new function of cloning and deleting pages of ready built report is very useful when printing. Tags: .NET, FastReport ### Dynamically create a Table in XAML URL: https://www.fast-report.com/blogs/dynamically-create-table-xaml Summary: Let's take a closer look at how Dynamic Table Creation in XAML works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how Dynamic Table Creation in XAML works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how Dynamic Table Creation in XAML works in FastReport .NET. Find more usefull tips and articles in our blog. Sometimes when we develop the WPF applications we need create tables with different configurations for output any data. Using the base tools of Visual Studio or Blend do not allow to reach the desired result or not always possible. Objects can be added programmatically to the form directly in the program code during execution. Plus this method is in using a minimum set of software. But the construction of a large table it will take too much time. Also we need to implement access to the tables with the data. A further change in the structure will have to rebuild all over again. Other way to get a beautiful custom table - using FastReport.NET. Open the report designer, create a data source and add objects: the title of the report, the page header, the data pages and other objects if desired. Then we make a preview of the report and save it in XAML. Now you need save a created report template for future use. You can embed FastReport.NET to the own application. First step: open report from code and export it in the XAML. In second step you need to load XAML into your WPF application. Example: ``` // prepare a report report1.Prepare(); // create an instance of XAML export filter FastReport.Export.XAML.XAMLExport export = new FastReport.Export.XAML.XAMLExport(); // export in xaml report1.Export(export, "result.xaml"); ``` Let’s load a table in WPF: ``` // / Create a stream to read the selected XAML file using (FileStream fs = new FileStream(filename, FileMode.Open)) { // Create a new window for graphics output XAML content file ((Window)XamlReader.Load(fs)).Show(); } ``` Where filename - the name of the file you created with the table. Instead FileStream, you can use the MemoryStream, then the XAML can be transferred without the use of files. As you see we build a table directly in the program code. It allows you to generate a table on the server side and on use the client to render the XAML. FastReport.NET eliminates the writing a database access code and reduces overall development time. Also we have saved template of the table for future modifications. Tags: .NET, Visual Studio, FastReport, WPF ### Easter eggs in the designer FastReport .NET URL: https://www.fast-report.com/blogs/easter-eggs-report-designer Summary: Let's take a closer look at easter eggs in the FastReport .NET designer. Find more usefull tips and articles in our blog. Let's take a closer look at easter eggs in the FastReport .NET designer. Find more usefull tips and articles in our blog. With this Easter egg, FastReport developers decided to show us an alternative way to use their generator. Based on the report, they created a game - the well-known Minesweeper. Surprisingly, this is indeed possible thanks to the built-in report script! With this Easter egg, FastReport developers decided to show us an alternative way to use their generator. Based on the report, they created a game - the well-known Minesweeper. Surprisingly, this is indeed possible thanks to the built-in report script. However, this is not just a report from the demo folder. It is hidden from users. This is the easter egg. And you can find it in the report designer using a special passphrase. Let's try to do it. Launch the report designer and select the File-> New menu. In the form that opens, you need to enter the word GAME by the keyboard. Pay attention to the register. After you enter this word, a new Games section will appear: The name of the section hints at the fact that there can be many games. In the meantime, one report-game FastM1nesweeper. It is clear that the name must be read as Fast Minesweeper. Let's select this report and add it to the designer. In this case, we will see this window: Here we can set the size of the playing field and the number of bombs. If you do not want to come up with sizes, you can use the presets in the Difficulty drop-down list: Each option has its own settings for field size and number of bombs. Well, let's try to make our settings simpler. This is what the report template will look like: On the “Data” band, the playing field will be drawn using the Table cell object. Depending on the number of columns and rows, the field will be filled with cells. The cell has 5 states: filled, empty, with a number, with a cleared bomb and with an exploding bomb. If you do not remember the rules of the game, then I will remind you. You need to open all the cells on the field and at the same time never get on the bomb. To calculate how far the bomb is from a particular cell, a number is written in it. It indicates how many bombs are within the radius of one cell around this cell. Focusing on the numbers in neighboring cells, we can conclude where the bomb is. Of course, you will have to open part of the cells for good luck. So, run the report in preview mode: In our case, the goal is quite simple - you need to calculate only 3 bombs. This is how the victory will look like: And so - a lossing: Now the chore of creating reports will be more fun. Without leaving the designer, you can relax a bit and have fun, because it’s not necessary to tell your boss about this Easter egg. Look at the Script tab, the amount of code is impressive. The real program. You can try your hand and write another game. Easter eggs with games work not only in the report designer FastReport.Net, but also in the FastReport Designer Community. Let's hope that the developers will periodically please us with new games. Tags: .NET, FastReport, Designer ### Embarcadero RAD Studio XE2 World Tour URL: https://www.fast-report.com/news/embarcadero-seminars-2011 Summary: Embarcadero RAD Studio XE2 World Tour Embarcadero RAD Studio XE2 World Tour FastReports are pleased to invite you to the Embarcadero RAD Studio XE2 World Tour. With RAD Studio XE2 you will be able to create 64-bit Windows Delphi applications to take advantage of the latest hardware, access more memory and push the performance envelope. You will be able to deploy your applications on Windows and Mac and more. Also you will receive RAD E ditions of FastReport VCL and FastReport.Net with RAD Studio XE2. Register today for a free live event near you: https://blogs.embarcadero.com/community/ ### Embarcadero webinar questions and answers URL: https://www.fast-report.com/blogs/embarcadero-webinar-questions-answers Summary: Embarcadero webinar questions and answers Embarcadero webinar questions and answers Embarcadero webinar questions and answers At 7th of February I took a part in Embarcadero webinar RAD Studio Reporting with FastReport.  Here you can see my presentation video  Thanks to all attendees for participation and for questions!  We got set of different interesting questions. I think answers will be useful for all. Here there are:  Q: How can you do mail merges with FastReports?  A: What do you mean? You can mail exported reports directly form fastreport.  Q: well... it's pleasure for me to meet young brains here. interesting to hear your opinion about Fast Report vs Rave Report  A: I am afraid my opinion about such comparison can not be absolutely correct. I am interest to show FastReport as the leadersip reporting tool.   Q: If we have a report that requires input parameters how do we pass parametrs to the report? Eg I have to pass year 2012 and State = VA  A: You can use Report variables for this(see the main demo for more information).  Q: Could you show us how to do web reporting by using fast report?  A: We have such demos in our demo-packages. You can download it from our web-site. Or live demo on web: server.fast-report.com  In my presentation have show all on the clear RAD Studio "from the box" without web-functionality in this session.  Q: Is Fast Reports limited to Ado Connections? We would like to use the reporting tool with Advantage Database Server who has their own connection component  A: FastReport can use any Delphi DataSet and little bit more. UserDataSet can realise different schemas of connections. Also you can use several ADO connections inside report.  Q: How can I make a report with the FireMonkey Platform?  A: Now we are working on FastReport for FireMonkey. Wait it very soon.  Q: How to support PostgreSQL in FastReport? ADO only?  A: Not only. Native too.  Q: Any updates on the FireMonkey version of Fast-Report ?  A: We are working on it. Wait it very soon.  Q: Fast-Report 5 was advertised to be launched for quite some time ... what's the status ?  A: We plan open beta-testing this year.  Q: Does Fast Report work with C++ Builder as well?  A: Yes. It supports C++Builder fully.  Q: Fast Report was developed by russian company?  A: Fast Reports is an international company with multinational developers. Q: Why should I use FR as opposed to ReportBuilder?  A: You should not  It is one variant only. And RAD edition is free for you.  Q: Can you rcreate different reports on different Reports Pages under one single Report Control?  A: Yes, it is possible. See example 12.fr3 from our main demo. “This report contains two pages (title and list). You can have several pages in your report. Each page can contains one report and can have own paper settings (size, margins, orientation and etc).”  Q: With Rave we have created a custom component that displays our own data, is it possible to create custom components in Fast-Reports?  A: Yes, we have documentation for creating own components. Q: I wanted to know if FastCube could connect to an Analysis Services OLAP data source. Is FastCube an alternative to using the Office Web Component PivotTable control?  A: No, FastCube can't use Analysis Services. But yes, it is an alternative but without an ability to connect to MS OLAP yet.  Q: I would like to know when we can expect the pdf/a export?  A: in version 5. We're planning PAD/A export in Fast Report 5 VCL. You can write to support@fast-report.com if you want to take part in a beta test.  Q: we have Delphi Prism as part of our All-Access Silver, what's the upgrade path to Delphi XE2  A: Contact sales regarding of Embarcadero Techlologies this  Q: export to spreadsheets…. is that an option for FR?  A: Yes, you can. For example FastReport has three different kinds of export filters to MS Excell.  Q: How can you do mail merge (form letters with fields)?  A:If you are about mails in database – as well as any database fields.  Q: On the initial report you had a memo field which only printed the first few characters as the field was not wide (big) enough. How do you habdle that "correctly"  A: You can see in our compiled demo example. It is necessary to use “StretchMode” property of Memo object for this.  Q: How do get the free upgrades to the basic Fast Report products that ships with XE2?  A: FastReport RAD come with RAD Studio XE2.  Q: I really need the pdf/a export for archives. In Germany only pdf/a are accepted. So when can we expect it.  A: It will available in the FastReport VCL 5. Mail us for connection to beta-testing.  Q: Is server.fast-report.com platform for linux?  A: Windows only yet.  Q: Can you drill down into the features of next version of Fast-Report (5) ?  A: It is available in the current version. You can use it just now. So it will be in 5th version too.  Q: When I use FR in xe2, script does not work for master or details, why?  A: FastScript does not included in XE2. You can order it in addition. Or use FastReport Standard Edition and higher.  Q: Do you have a timeline for firemonkey version? Update 4 claims to have printing ability. Is that FastReports? Update 4 is claiming it is just days away.  A: it will soon but without designer yet  Q: Can you create different reports under one report control for example under page 1, Sales reports, under Page 2 Customers reports and so on?  A: Yes, you can create different templates on different pages of the same report object. We have such example in demo.  Q: When I run a fast report that has script errors, I don't see the error, the report just stops painting. Is there an Error handler function that can be hooked to show these errors?  A: You can read errors from Report.Errors/ Report.Script.Errors. Remember FastScript is available in FastReport Standard Edition and higher.  Q: If we wanted to embed the fast report designer in an application, someone with advantage database server would have to setup the datasets at design time in order to manipulate the report?  A: Yes, you need fr such reports some database connection. So you can set it at design time.  Q: If I use FastReport I get allways an error that it can't find some components/units. Is there a fix or update? Actually it is not useable. A: Yes, you should download updated files from here : www.fast-report.com/pbc_download/LibD16.zip and extract them to fast report LibD16 folder(located in "Program Files\Fasty Report") with replace. Don't forget to close IDE before doing this.  Q: Will 2D barcodes (ex: QR Code) be included into the next version of Fast-Report (5) ?  A: Yes they will be included  Q: In FR, is there any "awareness" of font metrics? eg If I want to output to a pre-printed form and need to position the top of the FONT at a given vertical point (as opposed to the top of the line) can I determine or calculate "font-top" to achieve this (or font-middle, font-bottom etc...)  Q: If using multiple text boxes, how would you vertically line-space them with respect to the current font size? (Visually and in code)  A:You can use script code for text calculation inside the memo. For example TextWidth := Memo1.CalcWidth(). For this procedure you need Fast Report Standard and hire.  Q: Rave reports had a system called Rant for creating custom components for Rave. Does Fast Reports have a similar system?  A: We have system for creating own components.  I do not know about Rant system. You can write us preferences of this system...  Q: Did FastReport RAD inclde FastScript?  A: Not yet. FastReport RAD Edition only.  Q: Do you have main demo for C++ Builder?  A: We have set of demos for C++Builder also. See Demos folder  Q: Can you access ("use") your own Delphi code units within the Pascal Scripting in a report?  A: you can use RTTI and units, but it is not powerful Object Pascal. It is Pascal Script.  Q: any thoughts/advice on converting Crystal Reports  A: we plan such convertor in spring 2012  If you have not see your question and our answer - please do not hesitate write us (support at fast-report.com). We will be glad to help you!  We hope to see you next time and wait for your feedback! Tags: VCL, Delphi ### Encryption reports in FastReport .NET URL: https://www.fast-report.com/blogs/encryption-reports-net Summary: Let's take a closer look at how report encryption works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how report encryption works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how report encryption works in FastReport .NET. Find more usefull tips and articles in our blog. Reports encryption is a very useful option. In many enterprises, security policy provides for encryption of documents by transfer on external network. Of course, there is plenty of software to encrypt, but FastReport.Net allows you to do this by their own means. For the reports encryption it uses the AES algorithm that provides a high degree of protection. Encrypt the report in FastReport.Net presents no difficulties. Suffice it to set a password. Let's take a closer look: Create a report; Open the properties of the report in the menu Report -> Options. "Security" tab. As you can see, you can only set the password of the report. By setting the password of the report, we will automatically enable its encryption. Now, no one can open it without knowing the password. Set a password for the report. Save the report. Now try to open it in the designer. And we get a dialog box: You can open the report file if you know the password only. Unfortunately, encrypted reports are not yet available for the web. Therefore, the scope of these reports is limited. As mentioned earlier, the encryption can be used to exchange report files within the enterprise, or when working with customers. Tags: .NET, FastReport ### End Of 2025 - Our Achievements URL: https://www.fast-report.com/news/2025-results Summary: Explore FastReport’s 2025 highlights: product updates, new features, performance improvements, and advancements across Desktop, Cloud, and Server solutions. Explore FastReport’s 2025 highlights: product updates, new features, performance improvements, and advancements across Desktop, Cloud, and Server solutions. At the end of 2025, we traditionally look back and summarize what has been accomplished over the past year. In 2025, the Fast Reports company significantly strengthened the FastReport product line, including FastReport Desktop and FastReport Cloud, focusing on expanding functionality, improving user experience, and increasing overall stability. In the Delphi product line , new architectural capabilities were introduced, including the TfrxDeviceCommand object for sending commands to export filters, support for Runtime Themes to ensure a unified visual style with applications, and full compatibility with RAD Studio 13. A key milestone was the release of version 2026.1 , where the Ultimate VCL subscription became more valuable by including FastGrid and access to report creation via FastReport Online Designer. In the .NET direction , the main focus was on usability and feature development. A unified demo application for the entire product line was introduced, installers and the report designer interface were improved, and a new Ribbon UI was implemented. Support for FastScript .NET , Word import, new database connections, major WebReport improvements, and extended export capabilities - including Excel formulas and new formats - were added. In parallel, extensive export optimization and numerous bug fixes were carried out, significantly improving performance and document generation quality. Cloud and server solutions - FastReport Cloud, Corporate Server, and the updated Publisher - received support for S3 storage, Telegram Bot API, custom fonts, new preview modes, and autocomplete in the Online Designer. API security and administration tools were also strengthened, making the platform more flexible and enterprise-ready. Together, these improvements have laid a solid foundation for the continued development of the Fast Reports ecosystem and increased its value for developers and businesses. As we wrap up this year, we would like to thank all our users and partners for their trust and feedback. We wish you happy holidays and a successful 2026 filled with stable projects, bold ideas, and successful implementations. ### Event Report.Custom Calc - pre-processing of the input data URL: https://www.fast-report.com/blogs/event-pre-processing-input-data Summary: Let's take a closer look at how Event Report - preliminary processing of input data works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how Event Report - preliminary processing of input data works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how Event Report - preliminary processing of input data works in FastReport .NET. Find more usefull tips and articles in our blog. New CustomCalc event for the Report object is called when evaluating an expression in an object or when you receive data back from the data source. So we can use this event to intercept the data and spoofing. When this can be useful? For example, when you need to filter the values in the incoming data or to replace any row. Let's look at an example. Сreate a simple WindowsForms application. Add the data source to the project, and the DataSet component. Also, place the component Report on the form. In the drop-down menu of the Report component, select the item “Select Data Source”: And choose our data source. Now, select the item “Design Report” from the same menu. To demonstrate, I added a couple of fields from the Employee table: For interest's see how the report looks now: Save the report and close the Report Designer. Add a button to the form. And click event for it: ``` private void Run_Click(object sender, EventArgs e)   {   report1.Load("D://Reports//Simple.frx");   report1.Prepare();   report1.ShowPrepared();   } ```  Here, everything is banal. I have uploaded created earlier report. Then prepared it and showed. And now, add the event CustomCalc for the report1 object: ``` private void report1_CustomCalc(object sender, FastReport.CustomCalcEventArgs e)   {   if (e.CalculatedObject.Equals("Roberto") )   {   e.CalculatedObject = "Test Name";   }   } ```  Here we intercept the needed data and replaces them. All data passes through CalculatedObject object during construction of the report. We catch the needed information "Roberto". And replace them. You can replace the entire data field. In this case, the condition would look like this: ``` if (e.Expression.IndexOf("employee.FirstName") != -1) ```  We wrote the code for the data substitution directly in the event handler CustomCalc. You can also assign the event handler directly in the code, for example in MVC application. With a convenient location in the application code we write: ``` report1.CustomCalc += FReport_CustomCalc; ```   And the event handler: ``` private void FReport_CustomCalc(object sender, CustomCalcEventArgs e)   {   if (e.Expression.IndexOf("Employees.FirstName") != -1)   {   e.CalculatedObject = "Test Name";   }   } ```  Run the application. Click the button and see our report: Let's compare this screenshot with one that was made earlier. As you can see, the first entry and the name of the employee Roberto put in a condition and has been replaced by Test Name. Thus, we have a way to replace some of the data in the report. It probably will be used at sophisticated users of FastReport. Tags: .NET, FastReport ### Excel formulas in the BIFF export URL: https://www.fast-report.com/blogs/excel-formulas-biff-export Summary: Let's take a closer look at how Excel Formulas work in BIFF export in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how Excel Formulas work in BIFF export in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how Excel Formulas work in BIFF export in FastReport .NET. Find more usefull tips and articles in our blog. Starting from FR VCL 4.11.15 the BIFF export can export formulas. For example, to export the formula SUM(A1:B2) put a TfrxMemoView on a report and write in it Code =SUM(A1:B2) The first character of the text must be the equality sign "=", and the rest of it - a correct Excel formula. Exporting of formuals is controlled by the BIFF export's property ExportFormulas and to disable this option, simply write Code ``` procedure DisableFormulas(Exp: TfrxBIFFExport); begin Exp.ExportFormulas := False end; ``` By default, the exporting of formulas is enabled. What will happen if an incorrect formula is encountered in a report? The export will try to process it, but having found an error, will save it to an xls file as a simple text cell. What formulas the export supports The export supports Excel formulas. It's noteworthy that formulas syntax in Excel, OpenOffice and LibreOffice is different in details and, despite, in most cases you don't have to encounter these differences, it must be taken into account that only Excel formulas syntax is supported. One of examples of such differences can be found in the form of a reference to an external cell. Let's assume a report have pages PageA and PageB and the A1 cell on Page is needed to be equal to the sum of first ten cells in the third column on PageB. This can be written with the following formula in Excel: Code =SUM(PageB!C1:C10) at the same time, this formulas is written differently in LibreOffice: Code =SUM($PageB.C1:C10) It must be known that the BIFF export supports only the first formula. Operators Excel formulas allow to use various operators and functions. Below are listed those of them that are supported in the BIFF export: 1. Unary operators + - and binary operators + - * / ^ and, also, comparsion operators < <= = >= > <> 2. The unary operator % that's written after its operand and divides it by 100. For instance the formula =A1% equals =A1/100 3. The operator : that makes a cell range. In order to calculate the sum of first tree cells in the column G one can write =SUM(G1, G2, G3) or =SUM(G1:G3) 4. The operator & joining strings: = "abc" & "def" is equal to ="abcdef" 5. The operator ! that allows to make a reference to a cell or a cell range placed on another sheet within the same document. Such an example already occured: =SUM(PageB!C1:C10) There are other kinds of the operator ! but they are currently not supported by the export. They can be added if users of the export need them. 6. The range instersection operator denoted by the space sign. For example the expression A2:C2 B1:H8 equals B2 Strings The export supports two kind of strings, distinguished by quotes enclosing them: 'abc' and "abc". To insert a quote into a string it can be doubled or a string with the other enclosing quotes can be used. For example the following strings are identical: "abc""def" and 'abc"def' When referencing to an external cell with the operator ! strings can be used, if a page name contains spaces or written in a national alphabet. Following formulas are identical: Code =SUM(PageB!C1:C10) =SUM("PageB"!C1:C10) =SUM('PageB'!C1:C10) The two last methods allow to use complex page names: =SUM("Another Page In This Document"!C1:C10) Functions Built-in Excel functions can be called from formulas. One of them is the widely known function SUM - it sums its arguments. Excel supports a very big number of functions. The BIFF export supports about 150 of them only. Among them there are widely used SUM, AVERAGE, INDIRECT, MIN, MAX, AND, OR and so on. To add the support of a new built-in function to the export, simple append frxBIFF.pas with one line, as this example demonstrates: Code ``` class procedure TBiffFormulaFuncList.Init; begin if GetCount > 0 then Exit;   {http://sc.openoffice.org/excelfileformat.pdf   http://msdn.microsoft.com/en-us/library/dd904817.aspx }   Add(0, 'count', 1, 30, 'v', 'r'); Add(1, 'if', 2, 3, 'r', 'vr'); Add(2, 'isna', 1, 1, 'v', 'v');   <...>   Add(362, 'maxa', 1, 30, 'v', 'r'); Add(363, 'mina', 1, 30, 'v', 'r'); end; ``` Descriptions of functions can be found at the above links. It's also possible to report me that a new function is needed and I will add it. Technical details A formula in a xls file is represented by a usual cell. It looks like a record with code 6 (http://msdn.microsoft.com/en-us/library/dd908919.aspx) that contains the row, the column, the formatting (an index to the XF record), the formula's result and the formula's code. The formula's code is a sequence of variadic length instructions, operating within a virtual machine without registers and with the LIFO stack. Instructions can be divided into two groups: those that push new values onto the stack and those that pop a few values from the stack, perform an operation with them and push a result back onto the stack. An example is a simple formula: int(1) int(2) add The first two ones pushes two 4-byte integers 1 and 2, and the third one pops two values from the stack, sums them pushes the sum back onto the stack, leaving on the stack only one value 3. The same formula can be represented by different sets of instructions. The BIFF export tries to choose instructions that occupy less space. For example let's consider a simple formula consisting of a single number: =-7.0 There are two ways to write this formula: Code ``` double(-7.0) ``` this code occupies 9 bytes; and the second way: ``` int(7) neg ``` this code occupies 6 bytes. The same is true for more complicated cases. By default, the exporting of formulas is enabled. What will happen if an incorrect formula is encountered in a report? The export will try to process it, but having found an error, will save it to an xls file as a simple text cell. What formulas the export supports The export supports Excel formulas. It's noteworthy that formulas syntax in Excel, OpenOffice and LibreOffice is different in details and, despite, in most cases you don't have to encounter these differences, it must be taken into account that only Excel formulas syntax is supported. One of examples of such differences can be found in the form of a reference to an external cell. Let's assume a report have pages PageA and PageB and the A1 cell on Page is needed to be equal to the sum of first ten cells in the third column on PageB. This can be written with the following formula in Excel: Code =SUM(PageB!C1:C10) at the same time, this formulas is written differently in LibreOffice: Code =SUM($PageB.C1:C10) It must be known that the BIFF export supports only the first formula. Operators Excel formulas allow to use various operators and functions. Below are listed those of them that are supported in the BIFF export: 1. Unary operators + - and binary operators + - * / ^ and, also, comparsion operators < <= = >= > <> 2. The unary operator % that's written after its operand and divides it by 100. For instance the formula =A1% equals =A1/100 3. The operator : that makes a cell range. In order to calculate the sum of first tree cells in the column G one can write =SUM(G1, G2, G3) or =SUM(G1:G3) 4. The operator & joining strings: = "abc" & "def" is equal to ="abcdef" 5. The operator ! that allows to make a reference to a cell or a cell range placed on another sheet within the same document. Such an example already occured: =SUM(PageB!C1:C10) There are other kinds of the operator ! but they are currently not supported by the export. They can be added if users of the export need them. 6. The range instersection operator denoted by the space sign. For example the expression A2:C2 B1:H8 equals B2 Strings The export supports two kind of strings, distinguished by quotes enclosing them: 'abc' and "abc". To insert a quote into a string it can be doubled or a string with the other enclosing quotes can be used. For example the following strings are identical: "abc""def" and 'abc"def' When referencing to an external cell with the operator ! strings can be used, if a page name contains spaces or written in a national alphabet. Following formulas are identical: Code =SUM(PageB!C1:C10) =SUM("PageB"!C1:C10) =SUM('PageB'!C1:C10) The two last methods allow to use complex page names: =SUM("Another Page In This Document"!C1:C10) Functions Built-in Excel functions can be called from formulas. One of them is the widely known function SUM - it sums its arguments. Excel supports a very big number of functions. The BIFF export supports about 150 of them only. Among them there are widely used SUM, AVERAGE, INDIRECT, MIN, MAX, AND, OR and so on. To add the support of a new built-in function to the export, simple append frxBIFF.pas with one line, as this example demonstrates: Code Tags: VCL, Export, FastReport, Excel ### Export to Jabber URL: https://www.fast-report.com/blogs/export-jabber-net Summary: Let's take a closer look at how to export to Jabber in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to export to Jabber in FastReport .NET. Find more usefull tips and articles in our blog. A very interesting feature has been created in FastReport .NET - it allows to export to the messenger Jabber (XMPP). In fact, it is an HTML export with saving a report in Report Cloud. In this case, you receive a Web link to the report in your Jabber client. Such exports may be useful for a quick demonstration of reports within a company if the XMPP messenger is used as a corporate. A very interesting feature has been created in FastReport .NET - it allows to export to the messenger Jabber (XMPP). In fact, it is an HTML export with saving a report in Report Cloud. In this case, you receive a Web link to the report in your Jabber client. Such exports may be useful for a quick demonstration of reports within a company if the XMPP messenger is used as a corporate. Let us run any report in preview mode: Now click the Save button   in the toolbar: Then, select the lowest point of the list - XMPP. FastReport displays the export settings: Next, define the settings of your Jabber Profile - an ID and a password, and an identifier of the recipient of the report. This is the way to a message to yourself, therefore the sender name and the receiver name are the same. On the Proxy tab, set the proxy settings: Click "OK".  After that, we get a message in the Jabber: Open the link and see our report: The procedure is intelligible. If you often send reports to someone inside your company, it can be done faster with the XMPP exports. It is not necessary to transfer the report file as a reference to the report is sufficient. The recipient can share this link with others or download a report to a local computer. Tags: .NET, Export, FastReport ### Extension of client-server components for fp3 files URL: https://www.fast-report.com/blogs/client-server-components-fp3 Summary: We facilitate the formation of documents of various types from mp3 format without rebuilding reports with conversion to any available export format. We facilitate the formation of documents of various types from mp3 format without rebuilding reports with conversion to any available export format. We facilitate the formation of documents of various types from mp3 format without rebuilding reports with conversion to any available export format. Document flow plays an important role in building a corporate system. The fp3 format is the main document of the finished report if you use FastReport VCL in your system. To facilitate the generation of documents of different types from the internal format without rebuilding the reports, we have expanded our client-server components, which now enable to accept the fp3 format from clients and convert it to any available export format. This is accompanied by a caching system where the server can refuse to accept its file and work with the cache. There are also minor settings, for example, the maximum size of the received file. In order for your server to be able to receive and process fp3 files, you need to add a couple of settings to the config (XML file with settings). HeaderMaxSize — the maximum size of the HTTP header in bytes. The maximum value is 16384. ContentMaxSize — the maximum size of uploaded fp3 files in megabytes (0 — no limit). We've also updated our demo projects, which you can download here . On a client side, we will analyze PHP script in the role of a client, but, of course, a client can be written in any programming language. HTML form for script: ```
Send this:
``` Post.php: ``` $file); //Sending the file curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //Waiting for a response $response = curl_exec($ch);   // Debug return check-out if (empty($response)) { echo 'received an empty response'; } else { if (strstr($response, 'HTTP/1.1 301') == '') { //Something went wrong. The server returned an unexpected response echo '404'; curl_close($ch); exit; } if (curl_errno($ch)) { //The server returned an error, which we display in red echo ''; echo 'error: '.curl_error($ch); echo ''; } else { //Extract the address from the FastReport server response to receive export results $Location = GetLocationFromHeader($response); if (empty($Location)) { echo 'error: Location not found'; } else { //You can direct the client to the address to receive the file, but not in an architecture where the FastReport server ``` ``` //is connected to the php server locally and does not have access to the Internet. You will have to download ``` ``` //everything using the php server and it is safer from the point of view of logic in order to protect people's documents. ``` ``` $file = file_get_contents_curl($host.$Location); if (empty($file)) { echo 'error: file missing'; } { //We need to generate a new name to return the file to the client. //Everything is implemented as follows: The file name is the same as that of the client, ``` ``` //and the server response is analyzed to obtain the extension.   //Let's extract the format from the response. We take the old name that the client sent us ``` ``` //and replace the extension with the export result (if he sent 123.fp3, we will get 123.pdf). $Format = getExtension(GetFileNameFromLocation($Location)); $OldName = substr_replace($OldName, $Format, -3);   //Transferring files from the php server to the client header('X-Accel-Redirect: storage/'.$OldName); header('Content-Disposition: attachment; filename="'.$OldName.'"'); echo $file; } } } } curl_close($ch);       //Secondary functions //Extracts the address from the server response to get the conversion result function GetLocationFromHeader($arg_1) { $Location = strstr($arg_1, 'Location'); $Location = strstr($Location, '/'); $Location = substr($Location, 0, strrpos($Location, 'SessionId')-2); return $Location; }   //Getting filename from response function GetFileNameFromLocation($arg_1) { $FN = substr($arg_1, strripos($arg_1, '/')+1, strlen($arg_1)); return $FN; }   //Getting extension from filename function getExtension($fileName) { return substr($fileName, strrpos($fileName, '.') + 1); }   //Faster function counterpart file_get_contents function file_get_contents_curl($url) { $ch = curl_init();   curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);   $data = curl_exec($ch); curl_close($ch);   return $data; } ?> ``` This way you can get rid of several big problems. You won’t need to rebuild reports, which reduces the load on the server. Reports can be stored in any convenient place, and the client side can be written in any programming language that is comfortable for you. Tags: VCL, VCL, Lazarus, Lazarus, FastReport, FastReport, PHP, PHP, Delphi, Delphi, HTML, HTML ### Fast Query Builder 1.01 URL: https://www.fast-report.com/news/fastquerybuilder-1.01 Summary: Fast Query Builder 1.01 Fast Query Builder 1.01 Let's your customers create DB-query without SQL! Fast Query Builder  enables to work with local and client-server databases using BDE. Also there is an opportunity to work via other data access components: ADO, IBX, FIBPlus Main features:  1. Borland Delphi 4, 5, 6, 7, 2005 and C++ Builder 4, 5, 6 supports  2. Keeping query visual model for use and editind.  3. You can create any window based on Fast Query Builder  4. Fast Query Builder designer window can be internal to any window of your application  5. Full visual customization of query parameters. ### Fast Report Inc. sponsors Delphi Developer from 2 URL: https://www.fast-report.com/news/sponsors-delphi-developer-2010 Summary: Fast Report a leading company in the development of fast software The company also sponsors the MindTheBird campaign! in support of Firebird 2.5. Fast Report a leading company in the development of fast software The company also sponsors the MindTheBird campaign! in support of Firebird 2.5. Fast Report Inc., a leading company in the development of fast softare The company also sponsors the MindTheBird campaign! in support of the launch of Firebird 2.5. As a promotional sponsor, Fast Report Inc. it also supports the first Ukrainian International Conference, which aims to provide information about Firebird, the open source database management system. The company Fast Report is famous for sponsoring numerous conferences that are held around the world. The company-sponsored conferences are intended to facilitate dialogue and exchange of views among IT professionals, so that they can fully exploit their potential. Fast Report Inc. she is proud to announce these initiatives and to contribute to collaboration between leading global companies. These conferences provide important up-to-date information on the latest technology and related business activities, and are also a source of inspiration for attendees. In addition, they help create new business opportunities and function as an excellent platform for exchange and collaboration between professionals. Delphi Developer Days 2010 will take place in the USA, the Uk, and in Germany in may, this event will bring together both experts in Delphi for the same users, which will delve into together the issues related to the technologies, applications and techniques of Delphi. The in-depth sessions of all the relevant topics will be held by the two leading experts from Delhi, Marco Cantu and Carens Further information on the program of this conference and the description of the topics that will be covered, are available on the website: http://www.delphideveloperdays.com. Marco Cantu will also share his experience during AEB. The global campaign, launched to provide visibility to Firebird 2.5, is supported by leading companies including Fast Report Inc. As the official sponsor of the campaign, the campaign will offer numerous licenses, of its products and at reduced prices, to the most active Firebird users and developers participating in the MindTheBird campaign. More information about the campaign is available on the website: www.mindthebird.com. Another event sponsored by Fast Report Inc. and dedicated to Firebird is the first Ukrainian International Conference on Firebird which will take place on April 23, 2010 in Dnepropetrovsk. The main developers of Firebird, Dmitrem Emanov, ale PES Peshkov and Vlad Khorsun will present the opportunities and main features of this innovative soft Rd The conference program includes a report on the main tools used to develop and improve this relational database management system for multi-platforms. ### Fast Report on CodeRage 9 URL: https://www.fast-report.com/blogs/fastreport-coderage9 Today we had a session on CodeRage 9 about Fast Report server. The session covers how you can easily build a server application and view your reports from browser. Also that session discovers how you can build server client application for mobiles using TWebBrowser component from FireMonkey framework. For all who watched the session and interesting in examples showed in the session you can download then from here: Delphi demos C++ Builder Demos Tags: FireMonkey, FireMonkey, FMX, FMX, FastReport, FastReport ### Fast Report Sponsors Delphi Developer Days 2010 URL: https://www.fast-report.com/news/fast-reports-sponsored-delphi-2010 Summary: Fast Report Inc. Sponsors Delphi Developer Days 2010 and MindTheBird Global Campaign Fast Report Inc. Sponsors Delphi Developer Days 2010 and MindTheBird Global Campaign Fast Report Inc., a leading developer of the fast reporting software, is proud to announce its sponsorship of upcoming Delphi Developer Days 2010 that will provide a deep insight into current and earlier versions of Delphi. The company also sponsors MindTheBird! campaign supporting the launch of Firebird 2.5. As a sponsor of the campaign, Fast Report Inc. supports First Ukrainian International Conference aimed to deliver the information on the open-source database management system Firebird.  Fast Report is known for sponsoring a number of conferences held all over the world. The conferences sponsored by the company aim to facilitate the dialog and exchange of views between IT professionals, allowing them to fulfill their potential. Fast Report Inc. is proud to come up with these initiatives and contribute to the collaboration of the leading global companies. While delivering current and essential information about the latest technology advances and related industry activities, the conferences also provide inspiration for participants. What’s more, they help to create new business opportunities and serve as an excellent platform for professional networking and exchange.  Delphi Developer Days 2010 scheduled to be held in the USA, UK and Germany in May will bring together Delphi experts and users who will elaborate on the major questions including Delphi technologies, applications and techniques. Sessions covering all the relevant topics will be presented by top Delphi experts Marco Cantù and Cary Jensen who will reveal their favorite tricks. Further information on the schedule of this conference and topic descriptions is available at http://www.delphideveloperdays.com .  Marco Cantù will also share some more of his experience during a webinar on Delphi+Firebird as a part of MindTheBird! campaign. Launched to ensure the visibility of Firebird 2.5, the global campaign is supported by the leading companies including Fast Report Inc. Being a full sponsor of the campaign, the company offers several licenses of its products as prizes for the most active Firebird users and developers who have joined MindTheBird campaign. Additional information about the campaign is available at www.mindthebird.com. One more event sponsored by Fast Report Inc. and devoted to Firebird is the First Ukrainian International Conference on Firebird that is to take place April 23, 2010 in Dnepropetrovsk. Firebird’s core developers Dmitry Yemanov, Alex Peshkov and Vlad Khorsun will explore the opportunities and main features of the innovative RDBMS software. Conference program includes the report on the main tools used for developing and enhancing this multi-platform relational database management system. ### Fast Report sponsors Delphi Developer Days 2011 URL: https://www.fast-report.com/news/sponsors-delphi-developer-2011 Summary: Fast Report sponsors Delphi Developer Days 2011 Fast Report sponsors Delphi Developer Days 2011 Fast Report Inc. Sponsors Delphi Developer Days 2011 and MindTheBird Global Campaign  Fast Report Inc., a leading developer of the fast reporting software, is proud to announce its sponsorship of upcoming Delphi Developer Days 2011 that will provide a deep insight into current and earlier versions of Delphi.  Delphi Developer Days 2011  DelphiDeveloperDays.com Top Delphi experts Marco Cantù and Cary Jensen present their annual Delphi Developer Days tour. This year, they visit four cities in the United States and Europe.  Cites and Dates for 2011:  DC/Baltimore area, US:            April 11-12, 2011  Houston, Texas, US:                April 14-15, 2011  Frankfurt, Germany                  May 12-13, 2011  Amsterdam, The Netherlands:   May 16-17, 2011 ### Fast Reports Anniversary Celebration — Enjoy 20% Off URL: https://www.fast-report.com/news/birthday-fastreport-2026 Summary: To celebrate the Fast Reports anniversary, we're offering 20% off all reporting libraries FastReport VCL, FastReport .NET and FastReport Desktop. To celebrate the Fast Reports anniversary, we're offering 20% off all reporting libraries FastReport VCL, FastReport .NET and FastReport Desktop. Every year brings new products, thousands of successful projects, and millions of reports created with Fast Reports solutions. But our greatest achievement is the community of customers and partners who trust us to power their reporting. Thank you for choosing our products and growing with us. To celebrate the Fast Reports anniversary, we're offering 20% off all reporting libraries FastReport VCL , FastReport .NET and FastReport Desktop . The promotion runs from August 10 through August 25. Take advantage of this special offer to purchase new products or update your existing licenses to the latest version at a discounted price. We're proud to be part of your projects and will continue improving our products to make reporting even easier and more efficient. ### Fast Reports announced best partners of 2020 URL: https://www.fast-report.com/news/best-partners-2020 Summary: Fast Reports announced best partners of 2020 Fast Reports announced best partners of 2020 At the beginning of the year 2021, we analyzed the work of our partner channel from 2020. Despite the hard year our partners rose to the task and didn't yield their ground. In fact, there was a certain growth. Based on last year's result we selected the best of the best. We are proud to introduce our "Partners of the year", who showed the best results in product promotion, event handling, and, of course, sales. The winners are: Partner of the year North America - Component Source Partner of the year South America - FireBase Partner of the year Europe - Component Source / IT Haimerl Partner of the year Asia - Evget / Ag Tech Partner of the year OEM -   Isah "Although 2020 was not easy, our partners showed themselves to the best advantage. Once again we are convinced how important it is to build a trust-based relationship, that is much more than "just business" - together we are making developers' lives better!" We want to thank all our partners for their collaboration and wishing them luck this year. ### Fast Reports at DelphiCon 2021 URL: https://www.fast-report.com/news/delphicon-2021 Summary: Our speaker presents a report on the topic: "Invoice Generation via Telegram Bot Using FastReport VCL and Delphi" at Delphicon 2021. Our speaker presents a report on the topic: "Invoice Generation via Telegram Bot Using FastReport VCL and Delphi" at Delphicon 2021. November 18, 16:00 (UTC), Fast Reports Delphi developer, Alexander Syrykh, will speak at DelphiCon 2021, which will be held by Embarcadero, bringing together the best experts in Delphi development. The conference will be held online, in his talk Alexander will speak about “Generating invoices using a Telegram bot using FastReport VCL and Delphi”. The talk will give a step-by-step review of the process of creating a Telegram bot with a menu, working with the Telegram bot API in Delphi, creating invoices using FastReport VCL in PDF format, and sending them to the user. The event is free.  You can book your place for the lecture here. ### Fast Reports at Entwickler Summit URL: https://www.fast-report.com/news/entwickler-summit-2025 Summary: Fast Reports participated in Entwickler SUMMIT in Berlin. The event gathered 2,000 software professionals and featured Neal Stephenson. Fast Reports participated in Entwickler SUMMIT in Berlin. The event gathered 2,000 software professionals and featured Neal Stephenson. On September 18, Fast Reports took part as an exhibitor at the Entwickler SUMMIT , hosted in the historic Colosseum cinema in Berlin to celebrate the 30th anniversary of Entwickler Magazin. The event, organized by Software & Support Media, brought together around 2,000 software professionals and became a vibrant meeting point for knowledge sharing, networking, and inspiration. Among the highlights was the presence of Neal Stephenson, world-famous science-fiction author and tech visionary. For Fast Reports, it was a fantastic opportunity to connect with the developer community, exchange ideas, and showcase our products to an engaged and curious audience. Participants were also able to participate in a raffle. Congrats to the winners! Looking forward to the next event. ### Fast Reports copyrights protection in the China URL: https://www.fast-report.com/news/copyrights-protection-china Summary: Fast Reports copyrights protection in the China Fast Reports copyrights protection in the China We are pleased to annouce the campaign of Authentic plan initiated by  Huidu Technology , our China partner. It is aimed to increase the awareness of using authorized software and protect all users' interests. We strongly support this campaign and will continuously work with Huidu to achieve its success. ### Fast Reports in Embarcadero Technologies webinars URL: https://www.fast-report.com/news/webinars-embarcadero-2015 Summary: Fast Reports in Embarcadero Technologies series of webinars Fast Reports in Embarcadero Technologies series of webinars On February 13th Fast Reports will take part in Embarcadero Technologies series of webinars “Embarcadero Technology Partner Spotlights”, where our lead developer Denis Zubov will tell you all about rapid report development with FastReport. Presentation will be followed by Q&A session. Sign up at http://forms.embarcadero.com/14Q1TechPartnerSpotlights ### Fast Reports Inc. visited the DWX Mannheim 2025 exhibition URL: https://www.fast-report.com/news/report-dwx-mannheim-2025 Summary: Fast Reports participated in DWX, an event for AI, Cloud, Web and .NET professionals. We attracted developers with giveaways and informative talks. We look forward to next year's Developer Week. Fast Reports participated in DWX, an event for AI, Cloud, Web and .NET professionals. We attracted developers with giveaways and informative talks. We look forward to next year's Developer Week. DWX is the event for AI, Cloud, Web and .NET. An estimated number of 2500 software developers, AI pioneers and tech decision-makers was expected in the beautiful Congress Centre Rosengarten in Mannheim. Fast Reports was represented with a booth of 4m² supported by a 55“ flat screen where the Fast Reports movie was constantly played. Expert talks were held throughout the day in different rooms.  To attract potential customers Fast Reports decided to give away a backpack with a LED screen on each day of the event. The raffles took place towards the end of the day during the coffee break. While the participants collected the tickets for the raffle and their batches were scanned, we started an informative small talk about the company.  Most of the booth visitors were software developers employed in companies from various work areas, including aviation and medicine. The needs of our potential customers are still the fast reports in terms of the documentation generating speed rate to save time, money and nerves. We could also impress by giving the information about the standard documentation support of FastReport products like PDF A and ZUGFeRD. Nevertheless, the advantages of processing big data volumes by the FastReport products awakened much interest in our leads.  Evening gatherings like the very well organised Casino Night or the Partner Meet Up gave possibilities to make further contacts and introduce Fast Reports to the most potential customers. We are looking forward to participating in the Developer Week next year and would like to motivate the organisers to invite more visitors by Partner Networking over the year.  ### Fast Reports is one of the best software creators 2021 URL: https://www.fast-report.com/news/fastreports-top-100 Summary: Fast Reports is one of the best software creators of 2021 Fast Reports is one of the best software creators of 2021 Yet again we are happy to be recognized as Top 100 publisher from Component Source ! ### Fast Reports is sponsor of The Autumn ADUG Symposium URL: https://www.fast-report.com/news/sponsor-symposium-2011 Summary: Fast Reports is sponsor of The Autumn ADUG Symposium 2011 Fast Reports is sponsor of The Autumn ADUG Symposium 2011 We became a sponsor of The Autumn ADUG Symposium 2011.  ADUG is an organisation dedicated to providing a forum for activities and information that promote and improve the professional use of Delphi and related products and services in the Australian developer community.  You can visit this page for getting more information:  ADUG Symposium ### Fast Reports launched in Japan with AG-Tech! URL: https://www.fast-report.com/news/fast-reports-japan Summary: Fast Reports launched in Japan with AG-Tech! Fast Reports launched in Japan with AG-Tech! One of the leading worldwide producers of reporting tools for .Net and Delphi developers - Fast Reports Inc. - today opens sales in Japan with their first fully localized Japanese version of their flagship FastReports.NET product. This has been made possible by one of Japan's largest packaged software distributors AG-Tech Corporation, the exclusive distributor of Fast Reports Inc. products in Japan. Michael Philippenko, CEO of Fast Reports says "We are glad to be able work with such a highly professional team as AG-Tech. They have prepared for us a fully localized version of our flagship product FastReport.Net for the Japanese market. It is important to say also that AG-Tech has the necessary rich experience we required of working in the Business Intelligence market in Japan. All the preparation of product, support, sales and marketing materials took about one year, so now we are fully confident in the high quality of tech support, documentation and product which will now be offering in their native language to Japanese software developers." Yoshio Ando, CEO of AG-Tech Corporation says "In FastReports.NET we have found a high quality, compact, reasonably priced and fast reporting tool to offer to the Japanese market. By offering a fully localized product combined with our experienced team of local support and sales engineers, we feel we can offer Japanese report developers and standalone report users a fully featured complete reporting solution. Furthermore later on this year, we plan to be able to launch a Japanese version of Fast Report's VCL report generator product for Delphi." About AG-TECH Corporation AG-TECH Corporation (Head Office: Tokyo Japan; President: Yoshio Ando), is a company with over 25 years of experience in localizing, selling and importing packaged software into the Japanese market. They have been active in the Japanese Business Intelligence market for many years, having been in the past distributors for Crystal Reports and current distributors for ACL Services Ltd. ( the leading global provider of audit analytics and continuous monitoring software ). ### Fast Reports on BASTA! in Germany URL: https://www.fast-report.com/news/germany-basta-2014 Summary: Fast Reports on BASTA! in Germany Fast Reports on BASTA! in Germany We will take a participation in BASTA! developer conference in Mainz from 23th to 25th of September. The BASTA! is the leading independent conference for Microsoft technologies in Germany. Alexander Tsyganenko, Aleksandr Fediashov and Oleg Kozhnikov will answer on any questions regarding our products. ### Fast Reports on BASTA! Spring 2014 URL: https://www.fast-report.com/news/fastreport-basta-2014 Summary: Fast Reports on BASTA! Spring 2014 Fast Reports on BASTA! Spring 2014 Fast Reports is going to BASTA! in February 24  personally! Can FastReport work with BigData? We will speak about on BASTA! Spring! BASTA! is the most famous and independent conference for .NET technologies in Germany. At BASTA! renowned experts from all over Europe come together to share their .NET knowledge with conference attendees. For many years, the conference has offered a unique blend of sessions, workshops and keynotes, giving attendees a level of information that is unparalleled. Conference City:  Darmstadt Period:  24.02.2014  to  28.02.2014 ### Fast Reports on CodeRage 9 URL: https://www.fast-report.com/news/ivent-coderage9-2014 Summary: Fast Reports on CodeRage 9 Fast Reports on CodeRage 9 Recently we had a session on CodeRage 9 about FastReport server. The session covers how you can easily build a server application and view your reports from browser. Also that session discovers how you can build server client application for mobiles using TWebBrowser component from FireMonkey framework. For all who watched the session and interesting in examples showed in the session you can download then from here: Delphi demos C++ Builder Demos ### Fast Reports on EuroDevCon 2014 URL: https://www.fast-report.com/news/EuroDevCon-2014 Summary: Fast Reports on EuroDevCon 2014 Fast Reports on EuroDevCon 2014 Our CEO Michael Philippenko  will  mak e presentation "Reports inheritance and live interactive reports - how to use it in applications" and will show methods of using inheritance in reports. What exactly (and for what) you can inherit in report? what the difference and restrictions of inheritance of report objects, script, etc.? How to use overriding in complex with inheritance? Interactive report - often you need some reaction of report to user's activity. The Conference will be in Germany from 3th till 5th of November, the EuroDevCon 2014 welcomes some of the worlds leading Delphi experts, thinkers and practitioners to share their craft and mastery secrets. The EuroDevCon 2014 offers a deep dive for the modern developer and architect aiming to transform technologies into valuable business solutions. The conference is focusing on Delphi innovations, Fundamentals, Tips and Tricks, Data bases, Frameworks and Tools and Cross platforms/ Mobile and Web technologies, as well as expert professional insight into the very latest methodologies and best-practices. Interaction and exchange of ideas is one of the great attributes of EuroDevCon 2014 – a meet, greet, listen and learn conference. For more information visit www.eurodevcon.com . ### Fast Reports on PasCon Netherlands URL: https://www.fast-report.com/news/pascon-netherlands-2014 Summary: Fast Reports on PasCon Netherlands Fast Reports on PasCon Netherlands We will take a participation in Developer Conference of Delphi and Object Pascal in Leiden at 11th of September. Michael Philippenko and Denis Zubov will speak you about Server Reporting in FastReport VCL and about migration from other reporting tools. More detail and registration: blaisepascal.eu ### Fast Reports on the “Delphi na Estrada” tour in Brazil URL: https://www.fast-report.com/news/delphi-brazil-may-2025 Summary: Fast Reports will participate in the "Delphi na Estrada" tour during May, and also launched a website with Portuguese localization. Fast Reports will participate in the "Delphi na Estrada" tour during May, and also launched a website with Portuguese localization. We invite you to travel “Delphi na Estrada" with us! We will visit 8 cities to represent the latest innovations in the world of Delphi programming. Michael Philippenko, one of the co-founders of Fast Reports Inc., will tell you about the advantages of the new 2025.2 version of FastReport VCL: Advanced report components and external data Overview of TfrxPDFVIew,TfrxHTMLView, and TfrxMapView components Connecting objects to external data via DataLink And much more! We will be waiting for you in all cities to share our experience and valuable knowledge. Detailed information about the reports and dates is available here! Delphi na Estrada Portuguese localization Our website is now available in Portuguese! This opens up new opportunities for you to conveniently explore information and make purchases. Easier find the solution suitable for your project. Receive important updates and news directly in your native language. No need to spend time translating or searching for information from other sources. We are constantly working on improving our website, and adding Portuguese localization is another step towards creating a more user-friendly and nice interface. If you have any questions or suggestions, please contact  our support team. Go to Website ### Fast Reports participates in CodeRage 8 URL: https://www.fast-report.com/news/coderage-8-2013 Summary: Fast Reports participates in CodeRage 8 Fast Reports participates in CodeRage 8 Join us on CodeRage8! On our stand short time will be available discounts on our software components for Delphi, C++Builder and RAD Studio. And also it may be interesting for you - Michael Philippenko will speak and make some demonstration about FastCube 2 and FastReport 5. When - Thursday, October 17, 2013 Where -  CodeRage 8 - Delphi Conference Sessions Register now for free! ### Fast Reports Private NuGet-server URL: https://www.fast-report.com/blogs/private-nuget-server Summary: We are talking about our own NuGet package repository-a Fast Reports server with connection through various sources. We are talking about our own NuGet package repository-a Fast Reports server with connection through various sources. We are talking about our own NuGet package repository-a Fast Reports server with connection through various sources. In the article on working with NuGet packages we considered all the specific features of using  with Fast Reports software . One of the most frequent questions of our clients is the following one:  How do we install your licence packages in our product using Linux, MacOS or Windows so that we won’t have to install the latest update of FastReport products manually by installer that has been downloaded from the website compatible only with Windows? To answer this question, we have prepared a comprehensive decision such as our Fast Reports Private NuGet-server. What is that and what is that for? Almost all packages you use in your projects are stored in public package registry - NuGet Gallery ( nuget.org ). Here you can find different demo versions of our packages, however there are no full packages that are not limited by demo versions. That’s why we have decided to create our package registry available only for Fast Reports clients. Hence you need a Fast Reports account to have an access to it (via this account you could go to  cpanel.fast-report.com  for downloading the product installer). Adding a source We consider several types of adding our NuGet-server: .NET CLI Visual Studio Visual Studio for Mac Rider nuget.exe CLI NuGet.Config Docker But at first, we should speak about differences of a global and a local NuGet Config. Global and local NuGet.Config Consider the restoring of packages used in your project: 1) NuGet looks for necessary packages in the cache 2) NuGet looks for necessary packages in all the sources added to the NuGet.Config file, and: a) NuGet addresses to the local NuGet.Config b) NuGet addresses to the global NuGet.Config The local NuGet.Config is situated near your project. So, sources that have been added here will be used only for restoring this project. In its turn, the global NuGet.Config will be used for all projects of this computer. However, it is necessary not for all projects. Global NuGet.Config location: Windows: "C:\Users\{User’s_name }\AppData\Roaming\NuGet\NuGet.Config" MacOS: "~/.config/NuGet/NuGet.Config" Linux: “~/.config/NuGet/NuGet.Config” Thus, according to NuGet specification, the server’s name, its address and your data (email and password to this server) must be written in a file named NuGet.Config (or nuget.config) that will be situated in a place suitable for you. Encrypted and non-encrypted password storage  A file of NuGet.Config is able to store a source password in encrypted way as well as in the format of ClearTextPassword. In most cases it is recommended to store passwords encrypted, however at the same time encrypting is made with the help of external environment parameters (operating system, computer configuration, etc.). As a consequence, if we distribute this configuration file to another machine, the mentioned password can’t be decoded and you won’t get access to the source. It should be taken into account when choosing types of adding or updating the source. Then we study principal methods to add our source to NuGet with specifying operating system compatible with this particular method. In addition, we won’t forget about available types of configurations and source password storage format. .NET CLI: (any OS, any config, any password storage format) Downloaded SDK .NET Core 3.1.200 and later (including SDK .NET 5 and later) is necessary for this method to work out. Put in the command prompt: dotnet nuget add source https://nuget.fast-report.com/api/v3/index.json --name [choose source name without spaces, for example: fr_nuget] --username [email of your Fast Reports account] --password [password from your Fast Reports account] By default, this command adds a source to the global NuGet.Config, but you can choose the location of the configuration file and make it local with the help of --configfile parameter [configuration file path]. The source password is also encrypted by default, and --store-password-in-clear-text parameter is necessary to store non-encrypted password. Example: ``` dotnet nuget add source https://nuget.fast-report.com/api/v3/index.json --name fr_nuget --username myaccount@fast-report.com --password 1234Password5678 ``` You can read more about this method of adding a source on the Microsoft website. Microsoft Visual Studio: (Windows, global config, encrypted password) Consider adding NuGet-server using Microsoft Visual Studio 2022 by means of an example. It is important to take into account that this method works out starting from Visual Studio 2017 . In menu choose ‘Tools’, then ‘NuGet Package Manager’ and open the ‘Package Manager Settings’ window. Then on the left choose ‘Package Sources’ and click + (add) button. Put the name source in ‘Name’ field without spaces (for example, FastReport-NuGet) and the source address https://nuget.fast-report.com/api/v3/index.json in ‘Source’ field Press ‘ОК’ and after that shift to a package adding window. In the drop-down list ‘Package source’ choose the source we have just added. Then in the dialog box fill in Fast Reports account data and tick ‘Remember my password’. Microsoft Visual Studio for Mac: (macOS, global config, encrypted password) Consider using the example of Microsoft Visual Studio for Mac 2019. In the menu choose ‘Project’ and open ‘Manage NuGet Packages…’ window. At the bottom of the drop-down list ‘Package source’ choose ‘Configure Sources…’. Press Add button and fill in the data in the window: - Name: source name without spaces (for example, FastReport-Nuget); - Location: https://nuget.fast-report.com/api/v3/index.json ; - Username: email from Fast Reports account; - Password: password from Fast Reports account. Confirm adding the source by ‘Add Source’ button. JetBrains Rider: (any OS, global config, encrypted password) Consider using the example of Rider 2021.3 in Linux Ubuntu 18.04. Go to the menu ‘Tools’, ‘NuGet’ and choose ‘Show NuGet Sources’. Press + in the NuGet window in ‘Sources’ in front of ‘New feed’ Enter necessary data: - Name – source name without spaces (for example, FastReport-Nuget); - URL - https://nuget.fast-report.com/api/v3/index.json ; - User - email from Fast Reports account; - Password – password from Fast Reports account. Nuget.exe CLI: (any OS (Mono 4.4.2 or later is necessary for macOS/Linux), any config, any password storage type) Nuget.exe installation  is described in detail on Microsoft website. Now we consider just important features. nuget sources add -name [choose the source name without spaces, for example: fr_nuget] -source “https://nuget.fast-report.com/api/v3/index.json” -username [email of your Fast Reports account] -password [password of your Fast Reports account] By default, this command adds the source in the global NuGet.Config, however you can choose the location of the configuration file and make it local using -ConfigFile parameter (configuration file path). Initially a source password is encrypted, and -StorePasswordInClearText parameter is used to store a non-encrypted password Example: ``` nuget sources add -name fr_nuget -source “https://nuget.fast-report.com/api/v3/index.json” -username myaccount@fast-report.com -password 1234Password5678 ``` You can read more about this method of adding a source on the Microsoft website. Edit NuGet.Config: (any OS, any config, non-encrypted password) Important! It is only non-encrypted password from Fast Reports account that you can enter using this method , as the configuration file is a simple XML file. Any text editor opens or creates it. In the block ‘packageSources’ it is necessary to add our resource with chosen name (it is undesirable to use spaces), for example: ``` ``` In the block ‘packageSourceCredentials’ it is necessary to add your email and password from Fast Reports account in the block with the same key: ``` ``` Finally, you’ll get a similar configuration file (other sources have been removed from the example): ``` ``` Docker: (any OS, any config, non-encrypted password) In Dockerfile when creating docker-image you need to add a source either by using .NET CLI, or by placing NuGet.Config configuration file, that has been prepared before, in a docker-container. As a mean of example, we use .NET CLI in Dockerfile to add a source. ``` FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build ARG username ARG pass RUN dotnet nuget add source https://nuget.fast-report.com/api/v3/index.json --name fr_nuget --username $username --password $pass --store-password-in-clear-text ``` Now when running docker build command we just give necessary parameters: ``` docker build -f "./DockerTestProject/Dockerfile" --force-rm --build-arg username=myaccount@fast-report.com --build-arg pass=1234Password5678 -t dockertest:latest ``` Attention! This method of transferring private keys and passwords is not secure. You can read  a corresponding article on more secure transferring passwords as docker build arguments. Updating login/password If your account data changed, you need to update it in the NuGet configuration file. Consider following methods: .NET CLI; nuget.exe CLI; NuGet.Config. In JetBrains Rider and Microsoft Visual Studio for Mac changing user data is similar to adding ; the only adjustment is that it is necessary to update a source you have already added. In case of connection via Docker in the method of adding mentioned above it suffices to change user data when assembling a container from Dockerfile. .NET CLI: (any OS, any config, any password storage method) Installed SDK .NET Core 3.1.200 and later (including.NET 5 and later) is necessary for this method to work out. Put in the command prompt: dotnet nuget update source [the name of resource that has been added before, for example: fr_nuget] --username [email of your Fast Reports account] --password [password of your Fast Reports account] This command is considered to change a source that has been added to the global NuGet.Config. However, you can choose the location of the configuration file by using --configfile parameter (configuration file path). By default, the source password is encrypted, you can use --store-password-in-clear-text parameter to store non encrypted password You can read more about this method of updating the source on the Microsoft website . Nuget.exe CLI: (any OS (Mono 4.4.2 or later is required for macOS/Linux), any config, any password storage type) Nuget.exe installation  was described previously in detail. It suffices only to consider key features. nuget sources update -name [name of the source that has been added before, for example: fr_nuget] -username [email of your Fast Reports account] -password [password of your Fast Reports account] Initially this command changes the source added in the global NuGet.Config. However, you can choose the location of configuration file using the -ConfigFile parameter (configuration file path). By default, a password is encrypted, -StorePasswordInClearText parameter is used to store a non-encrypted password. You can read more about this method of updating the source on the Microsoft website . Edit NuGet.Config: (any OS, any config, non encrypted password) Open a necessary file of NuGet.Config via any text editor. In the block ‘packageSourceCredentials’ with the name of the source that has been added before we change values “Username” and “ClearTextPassword” to necessary ones. If instead “ClearTextPassword” you have the block “Password”, just change it to “ClearTextPassword”. Finally, it should look as follows: ``` ``` More detail on downloading packages By default, in the interface of your IDE you see all the packages downloaded in Fast Reports private NuGet source. However, to download a selected package the next requirement should be met: if the package is not public available (such as FastReport.Compat, FastReport.Core demo version, FastReport.Net.Demo, etc.), you need to have a necessary subscription to download the latest updates of these packages. For example, to download FastReport.Core you need to have a subscription not earlier than FastReport .NET Standard (including Professional, Enterprise or Ultimate), to download FastCube.Core you need a subscription not earlier than FastCube .NET Standard (including Professional or Ultimate), etc. Restoring packages in case of an expired subscription  If your subscription has expired, you can keep using Fast Reports packages source, however you will have no access to the latest versions of packages. As a consequence, the latest available version of the package will be determined by the following condition: Date of selected version release < date of necessary subscription expiry  Important! When trying to download a package with the release date later than necessary subscription expiry date, Fast Reports NuGet server will provide you with the latest available version of the package based on your subscription. But we don’t recommend a link to unavailable package version, as it leads to Warning notification when restoring a project and delay of package downloading. Tags: .NET, MacOS, FastReport, Upload, NuGet ### Fast Reports releases NuGet-server URL: https://www.fast-report.com/news/release-nuget-server Summary: Launching our NuGet server, which will make it much more convenient and faster to deliver our products to users. Launching our NuGet server, which will make it much more convenient and faster to deliver our products to users. We are happy to announce the release of our NuGet-server. It is an important part of our framework that will make the delivery of our products to users more convenient and faster. Now you can automate the assembly of your products using Fast Reports licence packages, without the need to download manually and install them from the official website via installer. In addition, thanks to the appearance of NuGet-server, it is much easier to use Fast Reports cross-platform products in operating systems of Linux and MacOS families. To have an access you just need Fast Reports account. On this server NuGet-packages of various .NET products are available: FastReport .NET (including Core, CoreWin), FastCube .NET, FastReport Business Graphics .NET, etc. We’ve shared more detail on the work of NuGet-server in our article. ### FAST REPORTS SUPPORT SERVICE AGREEMENT URL: https://www.fast-report.com/technical-support-regulations Summary: Fast Reports has been creating libraries and tools for generating reports and documents from databases since 1998. 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314 Fast Reports has been creating libraries and tools for generating reports and documents from databases since 1998. 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314 This document describes the processes that ensure the FastReport software life cycle during the annual subscription period, including troubleshooting issues that occurred during the operation of the software, software improvement, technical support procedures, terms, levels of technical support, and the grounds for refusal of technical support. 1. DEFINED TERMS As used in this Support Service Agreement ( “Agreement” ), capitalized terms shall have the following meanings: 1.1 “Documentation” user documentation and materials provided with the Products and detailing the functionality thereof. 1.2 “Issue” shall mean an unexpected behavior of the Products resulting in substantial nonconformance to the functional specifications set forth in the Documentation. 1.3 “Person” means any individual, partnership, limited liability company, corporation, association, joint stock company, trust, joint venture, labor organization, unincorporated organization, or governmental authority. 1.4 “Products” Fast Reports software products validly licensed to Customer pursuant to a separate license agreement. 1.5 “Support Services” shall mean the use of commercially reasonable efforts to (a) provide installation assistance, (b) provide Update information, (c) provide general consultation as to the function of a Product, and (d) to assist Customer in diagnosing and resolving Issues, all during Support Hours and pursuant to Customer support requests made in accordance with Section 2.2 of this Agreement. Support Services do not include integration assistance, development of new features and functionality, training, or the development of report templates. 1.6 “Support Hours” shall mean Monday-Friday, 9 AM – 6 PM ET, excluding official government holidays. 1.7 “Updates” all successor upgrades, revisions, patches, enhancements, fixes modifications, copies, additions or maintenance releases of the Products, if any, licensed by Fast Reports provided that the Updates shall not include new subsequent releases of the Software bearing a new first version numeral such as 6.0 or 7.0. 2. SUPPORT SERVICES 2.1 Support Services. Fast Reports agrees to provide the Support Services, pursuant to the terms and conditions of this Agreement and the applicable Product license agreement, for the duration of the Term, and solely for the Products. 2.2 Submission of Issues. Customer may submit support requests, which shall include descriptions of the Issues and the information required by Section 4.3 of this Agreement, to Fast Reports during Support Hours via helpdesk/email support@fast-report.com and registers them in the system https://cpanel.fast-report.com/login ,  and shall provide all relevant data requested by Fast Reports. Fast Reports shall not be responsible in the event that Internet access failures or other technical communication failures out of Fast Reports’s control result in the loss of a request and related information. 2.3 Request Limit. The amount of support requests that Customer may submit depends on the Product license that the Customer has purchased. Support request limits by license type is set out below: Product License Support Requests Annual - Single 5 Requests / Year Annual - Team 10 Requests / Year Annual - Business 15 Requests / Year Annual - Site 15 Requests / Year Monthly FastReport Cloud - Personal 2 Requests / Month Monthly FastReport Cloud - Team 4 Requests / Month Monthly FastReport Cloud - Business 8 Requests / Month Fast Reports shall not be responsible for reviewing or responding to support requests beyond the Customer’s allotment set out above. Additional requests and services may be available for purchase pursuant to a separate agreement. 2.4 Response Time. Support requests are resolved in the order they are received, however, Critical Errors requiring emergency intervention may be processed out of order. Upon receiving a request, Fast Reports shall qualify the Issue in one of the categories set out below and provide an approximate estimate of when the Issue will be resolved. Fast Reports strives to resolve support request quickly but does not make any warranties, express or implied, as to support response times or when a particular Issue will be resolved. Level 1 Critical error A critical severity level is assigned to issues that completely prevent Fast Reports products from operating or cause it to fail catastrophically. These are issues that have a widespread impact, affect many users, and result in data loss or security breaches. Level 2 Significant error A high severity level is assigned to issues that significantly impact the use of the Fast Reports products for many users, but do not completely prevent it from operating. These may include issues that cause performance degradation, data corruption, or major functionality failures. Level 3 Minor error A medium severity level is assigned to issues that impact the use of the Fast Reports Products for a small number of users or have a minor impact on the overall functionality. These may include issues that cause minor performance issues, minor functionality failures, or cosmetic issues that do not affect the overall use of the product. Level 4 Consultations A low severity level is assigned to issues that have a minimal impact, if any, on the use of the Fast Reports products, such as cosmetic issues or minor bugs that do not affect the overall functionality, documentation issues, and general questions related to functionality. 2.5 Fixed Versions. Any amended or repaired versions of the Products following a completed support request shall be made available for download via the user panel web interface ( https://cpanel.fast-report.com/login ). 3. SUPPORT LIMITATIONS 3.1 Unlicensed Product. Fast Reports shall not be responsible for providing Support Services, or any other maintenance and support for any unlicensed Products, nor for Products that do not have an active support and update subscription. Fast Reports shall only provide Support Services to the licensee named in the applicable Product license agreement. 3.2 Customer Error. Fast Reports shall not be responsible for providing Support Services, or any other maintenance and support to the extent that Issues arise because Customer (i) misuses, improperly uses, mis-configures, alters, or damages the Products; (ii) uses the Services with any hardware or software not recommended by Fast Reports; (iii) uses the Products at any unauthorized location; (iv) fails to install an Update to the Products if such Update would have resolved the Issue; or (v) otherwise uses the Products in a manner not in accordance with the applicable license agreement. 3.3 Non-Compliance Problems. If Customer notifies Fast Reports of a problem and Fast Reports determines that the problem is due to Customer’s incorrect or improper use of the Products or failure to comply with the terms of this Agreement or the applicable Product’s license agreement, Fast Reports shall not be responsible for providing the Support Services or otherwise resolving the problem or Issue. Notwithstanding the aforementioned, to the extent such Issue may be resolved, Fast Reports, in its soled discretion, may agree to resolve such Issue, subject to an additional payment. 3.4 Third-Party Products. The Support Services do not cover the operation or use of third-party hardware or software or Products modified by any party other than Fast Reports or used in any manner in violation of the appliable Products license agreement or inconsistent with the Documentation. FAST REPORTS DOES NOT SUPPORT INSTALLATION OF UNLICENSED SOFTWARE. CUSTOMER MUST ENSURE THAT CUSTOMER HAS A LICENSED COPY OF ALL NECESSARY SOFTWARE AND HARDWARE, INCLUDING THIRD PARTY SOFTWARE AND HARDWARE. 3.5 Custom Development. Nothing in this Agreement shall be construed to create any obligation for Fast Reports to develop any software, code, or workaround. 4. CUSTOMER OBLIGATIONS 4.1 Support Contact. All communications relating to the Support Services will be supervised, coordinated, and undertaken by designated contacts (“Customer Contact(s)”). Each Customer Contact must possess the necessary expertise and knowledge to diagnose and resolve Issues with the direction of Fast Reports. 4.2 Prior to Request. Prior to requesting support from Fast Reports, Customer shall comply with all published operating and troubleshooting procedures for the Products. If such efforts are unsuccessful in eliminating the Issue, Customer shall then promptly notify Fast Reports of the Issue. Prior to contacting Fast Reports for support Customer shall: a) confirm whether the Issue is reproducible; b) confirm that the Customer Contact has the technical knowledge regarding the Products, any other Products or hardware systems involved, and in the facts and circumstances surrounding the Issue; c) make the related system components, including all Products and hardware, available to the Customer Contact as necessary to provide the Support Services and during any communication with Fast Reports support personnel; and d) if requested and required, Customer must make available to Fast Reports a technical representative during Support Hours for all Issues. Fast Reports reserves the right to suspend any and all work related to any Issue during periods when the Customer does not provide access to a technical representative with requisite knowledge or requested data to continue work on the Issue. 4.3 Description of Issue. Customer shall provide to Fast Reports: (i) error messages and indications that Customer received when the Issue occurred; (ii) a detailed description of actions taken by the user when the Issue occurred; (iii) steps Customer has taken to reproduce the Issue; (iv) steps Customer took to resolve the Issue; (v) a link to the relevant section of Documentation relating to the Issue, if possible; (vi) operating system information, such as version number; (vii) relevant information about the software environment used; (viii) version number of the used software, including the version and edition; and (ix) any relevant log files. 4.4 Customer Facilities. To the extent required by Fast Reports, Customer will, upon request, make available to Fast Reports certain facilities, computer resources, Products, programs, networks, personnel, and business information as are required to perform any Support Services or obligations hereunder. 4.5 Remote Access. If necessary, Customer shall cooperate with Fast Reports to enable Fast Reports to perform the Support Services remotely using standard, commercially available remote-control software. Customer shall be solely responsible for instituting and maintaining proper safeguards to protect Customer’s systems and data. For the avoidance of doubt, Fast Reports is not responsible for any security breaches or data leaks caused by third party remote-control software, even if such third-party remote-control software was provided by Fast Reports. 4.6 Regular Backups. Customer is solely responsible for its data. Customer must perform a successful and verified backup of its data before Fast Reports or a third party performs any remedial, upgrade, or other work on Customer’s systems. If applicable law prohibits exclusion of liability for lost data, then Fast Reports shall only be liable for the cost of the reasonable effort under industry standards to recover the lost data from Customer’s last available backup. 4.7 Non-solicitation. During the Term and for a period of two (2) years thereafter, Customer agrees not to hire, solicit, nor attempt to solicit, the Support Services of any employee or subcontractor of Fast Reports or its Affiliates without the prior written consent of Fast Reports. 4.8 Proper Consents. Customer will ensure that each member of Customer’s organization (including employees and contractors) about whom personal data may be provided to Fast Reports has given his or her express consent to Fast Reports’s processing of such personal data.  Any personal data provided to Fast Reports shall be processed according to the Privacy Policy located at https://www.fast-report.com/privacy . 5. LIMITED WARRANTY 5.1 Fast Reports Warranty. Fast Reports warrants all Support Services performed under this Agreement shall be performed in a workmanlike and professional manner. EXCEPT AS OTHERWISE STATED IN THIS SECTION 5.1 OF THE SUPPORT AGREEMENT, FAST REPORTS MAKES NO OTHER WARRANTIES, EXPRESS OR IMPLIED INCLUDING WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. ### Fast Reports was ranked in the Top-50 among the best software vendors 2022 URL: https://www.fast-report.com/news/top-software Summary: Fast Reports was ranked in the Top-50 among the best software vendors 2022 Fast Reports was ranked in the Top-50 among the best software vendors 2022 We’re proud of being selected in the Top-50 software vendors according to  Component Source !  ### Fast Reports will be in Warsaw on .NET Developers Days URL: https://www.fast-report.com/news/event-warsaw-2016 Summary: Fast Reports will be in Warsaw on .NET Developers Days Fast Reports will be in Warsaw on .NET Developers Days Fast Reports will be in Warsaw on .Net Developers Days again! Here's how it was in 2016 and we are excited to be a part of this event again! Thousands of developers, speakers and exhibitor: a must attend event! Learn more about .Net Developers Days here ### Fast Reports Wins ComponentSource Award URL: https://www.fast-report.com/news/top-software-2024 Summary: ComponentSource has awarded Fast Reports a Top 50 Publisher Award in the annual ComponentSource Awards for 2024. ComponentSource has awarded Fast Reports a Top 50 Publisher Award in the annual ComponentSource Awards for 2024. ComponentSource awarded Fast Reports a Top 50 Publisher in the 2024 annual ComponentSource Awards.  Once again we are pleased to be included in the Top 50 Best Software Publishers according to ComponentSourse ! ### Fast Reports Wins ComponentSource Award! URL: https://www.fast-report.com/news/component-source-awards-2025 Summary: We are excited to be once again among the Top-50 Publisher by ComponentSource! We are excited to be once again among the Top-50 Publisher by ComponentSource! We are excited to be once again among the Top-50 Publisher by ComponentSource !  It's awesome to share the stand with the other great software publishers! Our collaboration with the international reseller ComponentSource has lasted for over 15 years. We are happy to see the continued success of our partnership and how it has helped us to become a part of thousands of projects. We want to thank our customers who continuously choose FastReport and FastCube in their work. *The allocation of the awards has been calculated based on real sales orders placed by ComponentSource customers globally during 2024. ### Fast Reports' speaker at Basta! URL: https://www.fast-report.com/news/speaker-basta-2021 Summary: Visit the talk of our head of cloud development Vitaliy at one of the biggest .NET conferences in Europe - Basta! Visit the talk of our head of cloud development Vitaliy at one of the biggest .NET conferences in Europe - Basta! We are proud to present our speaker at one of the biggest .NET conferences in Europe - Basta!  Our team lead of cloud development Vitaliy will talk about Load balancing with Rabbit MQ. Here's the synopsis of his talk:  One of the most popular solutions for load balancing is message queues. How to distribute the load evenly among users so that no one is left out? In this session you will learn about developing a distribution system on .NET 6 using Rabbit MQ queues, dynamically adding new users, and comparing it with prioritized queues. Vitaly is a graduate of the Faculty of Mathematics, Mechanics & Computer Science of Southern Federal University. Developed bots for computer games in .NET and Java. Was working with migration modeling problems. Among his hobbies are mathematics, fishing, guitar, and Minecraft modding. If you're at Basta in Frankfurt or online - make sure to visit his talk and ask questions during the Q&A session.  ### Fast sending to print reports in MVC URL: https://www.fast-report.com/blogs/sending-print-reports-mvc For harmony of Web report with the stylistics of the web page, many people are disable WebReport object toolbar. Thus the user is deprived of options to export and print reports. But if you still want to allow the user to print a report from a browser, you can create a special button to print. By clicking on it, the user will receive the print dialog box. Now I'll show how to invoke the print dialog in MVC web project. To start, add a button in the view. I placed it on the home page of my demo web application. Find the Index.html file in the Solution Explorer: Add the button to the desired location: ``` @using (Html.BeginForm("Print", "Home")) { } ```  Here Print - name of the handler in the controller. And Home - name of the controller. Go to the Controllers folder. HomeController.cs file: Add the method to the class code: ``` public void Print() { WebReport webReport = new WebReport(); System.Data.DataSet dataSet = new System.Data.DataSet(); dataSet.ReadXml("C://Program Files (x86)//FastReports//FastReport.Net//Demos//Reports//nwind.xml"); webReport.Report.RegisterData(dataSet, "NorthWind"); webReport.Report.Load("C://Program Files (x86)//FastReports//FastReport.Net//Demos//Reports//Simple List.frx"); webReport.EmbedPictures = true; webReport.PrintHtml(); } ```  As you can see a method called Print, as in the button that we added. Let's take a closer look at the code. In the first line, we created an instance of an object WebReport. Then, we created a DataSet to work with the data. DataSet can work with xml database. Actually in the third line, I specify the path to the database. Using the method RegisterData we register the data source in the report object. Then, load the report template into the report object. It is located in the same folder as the database. EmbedPictures property allows you to embed images in html log file. Finally, the last line starts the printing of the report in the browser. If you want to save the report in PDF format, then change the last line to: ``` webReport.PrintPdf(); ```  In this case, you can use options to format pdf file. For example: ``` webReport.PdfPrintOptimized = true; ```  This option gives the best image quality for printing. Now you need to add the handler in the Web.config: ``` ```  Now run the application. Here is the button on the Web page: Сlick on it. And we get the page with the report and the print dialog: Here is the saving in PDF: Thus it is possible to call the print dialog using the user's button instead of WebReport object toolbar. This can be useful when you embed report controls in web page design. In this example, we have not added any web report object on the web page. The report is based on a separate page, just before printing. This is useful when there is no need to display the report on a Web page. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, MVC, MVC, WebReport, WebReport, Printing, Printing ### FastConverter URL: https://www.fast-report.com/products/converter Summary: Desktop converter for FP3 format and an online converter for FPX files to multiple formats: PDF, RTF, XLSX, XML, DOCX, and more. Desktop converter for FP3 format and an online converter for FPX files to multiple formats: PDF, RTF, XLSX, XML, DOCX, and more. Use FastConverter .FP3 to convert a single file or the contents of a selected folder, with support for nested folders FastConverter Desktop converter for FP3 format and an online converter for FPX files to multiple formats: PDF, RTF, XLSX, XML, DOCX, and more. Try Online Buy Download Use FastConverter to convert a single file or the contents of a selected folder, with support for nested folders. The product offers support both via command line and in interactive mode. Batch conversion of FastReport VCL documents to popular formats. Batch Conversion Simultaneously convert multiple generated reports (a single file or the contents of a folder) to the chosen format. Multiple Output Formats Convert your fp3 reports to the most popular data formats: PDF, Office, Web, Graphics in just a couple of clicks. Fine-Tuning Exports Configure export settings once for all formats, and FastConverter will remember your choices for future operations. Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. The article provides a detailed overview of the watermark functionality in FastReport VCL — covering both the visual interface and programmatic methods using Delphi code and report scripts. Any other questions? Contact the manager ### FastCube - High-Speed OLAP Cube Engine and Pivot Grid URL: https://www.fast-report.com/blogs/fastcube-pivot-grid-olap Summary: Exploring FastCube .NET and its possibilities Exploring FastCube .NET and its possibilities Exploring FastCube .NET and its possibilities. It is difficult to imagine data analysis without OLAP (On-Line Analytical Processing) technology . Although there are differing opinions about whether OLAP should be considered a technology or ideology. After all, OLAP can be imagined as a complex multi-dimensional cube, and as ordinary cross-tables (cross-tabs). All of this can be called rapid data analytics. Traditionally, OLAP has been considered a technology to streamline large amounts of data for statistical analysis. Often The OLAP system is called cubes . As we know the cube has three dimensions: length, width and height. Therefore, the cube is a three-dimensional figure. It's the same with the data. For example, data on the number of goods sold by each company manager can be presented as a matrix (cross-table). This is a two-dimensional set of data - in the headlines of the lines - the name of the product, in the headlines of columns - the names of managers. But if we add another dimension, for example, months, this data set will be three-dimensional. And you can add and years. That is the number of dimensions is not limited to two or three. The name of the cube should not mislead you, it only serves to make it immediately clear - it is a multidimensional data warehouse . Thus, the OLAP cube in practice may have several tens of dimensions - this is a very complex structure, which is difficult to imagine in mind. But it is precisely such a multidimensional cube , and allows you to collect all the data into one and quickly obtain the necessary information for the analysis. To work with cubes, slices are normally in use- that is, a sample of only certain, necessary dimensions. The convenience of working with cubes is that you can instantly add the necessary information to your slice, because the cube is already built, and you take from it only the needed one. Riding the wave of the necessity of OLAP systems, Fast Reports released its FastCube. Since the end result of the analyst's work is a report, any OLAP system should be able to generate them. This can be attributed to FastCube's strengths, as it uses the popular and fast FastReport VCL report generator for the VCL and LCL ( FastCube VCL ), FastReport.Net for the .Net and Mono ( FastCube .NET ), and FastReport FMX for the FMX ( FastCube FMX ). Unlike ready "box" products, FastCube is a set of libraries for the target platform. This allows you to include your own OLAP component applications. This solution is more flexible, though, it requires programming skills to create your application. Yet, for those who would satisfied with any standard solution without creating your own application, there is a demo application in the delivery package. It provides an interface for working with the cube and slices and contains all the standard FastCube tools. Perhaps for the majority this application will be enough for their work. This demo application looks like as follows: What kind of opportunities are offered to us by FastCube. Let's take a look: 1) Very simple cutting. The key is to enter the data source: table or SQL query. Then, you add the required fields to the crosstab to dimensions, measures, classifications, filters, etc. 2) Standard statistical operations: amount, minimum, maximum, average, counter, variance. These operations are used to filter or separate data. 3) Additional filtering and conditional selection functions: unique value list, number of unique values, first value encountered. 4) The ability to create computed metrics. This is implemented with a script in one of the available programming languages (Delphi and C++ - for the VCL platform, VB.Net, C# - for .Net) 5) The axes are classified according to measurements and indicators. You can use multiple sorts for each dimension. 6) Conditional selection of cell values in the slice. This is a very useful feature that allows you to select a colour or data icon, depending on the condition. 7) Flexible settings for displaying the results. You can set the position of the total (at the beginning, at the end), make invisible. 8) The ability to create calculated value filters when calculating metrics. It is implemented with the help of a script. 9) The format of output indicators (date, money, text, number). You can add your own format. 10) Measurements can be rolled out as specific and entire. 11) Cross table can be transposing - rotate, change rows and columns in places. 12) Indicators may appear as percentages. 13) The ability to build graphics using TeeChart. 14) The ability to view and export cell detail, i.e. records from the original table, where the data for the cells are taken. 15) Export slice in one of the formats is available: HTML, DBF, CSV, XML, Open Document Spreadsheet, Excel, Excel 2007. 16) You can save the cube and the scheme. 17) The possibility of copying a range of values from across tables to the clipboard. 18) Dates are automatically divided by date and time. So we can display separately. 19) Slices can be converted to FastReport reports. This means that you can use the report generator's output, export, and print reports, thus increasing the possibility of FastCube. 20) The ability to export cube/data to XML. 21) You can set cube settings programmatically or from the interface. 22) The ability to create ready-made templates (schemes) for summary tables. There is a possibility of prohibiting the user from changing the scheme. The above features of the product tell us that in addition to the standard features on the creation of cube slices, sorting and filtering, there are advanced data analysis tools. In particular, it is a tool of conditional data selection. Depending on the conditions of the cell may be highlighted color, may be added to a cell or icons gradient. These graphical indicators will help you to quickly assess which of the values fall within the specified range, or above it. The possibility of exporting a slice is not insignificant. This can be done both by FastCube and through a report generator. In the second case, the list of possible export formats is much larger. It should be noted that the cube can be connected to databases using both standard ADO and BDE components and any other data sources through TDataSet. In conclusion, FastCube provides fast downloading and processing of large amounts of data. Although FastCube involves creating its own application based on components, the end use of the cube by the user does not require any specific programming knowledge. Tags: .NET, .NET, VCL, VCL, FMX, FMX, FastCube, FastCube, Visual Studio, Visual Studio, FastReport, FastReport, Delphi, Delphi ### FastCube .NET URL: https://www.fast-report.com/products/fast-cube-net Summary: С# library for creating OLAP pivot cubes for .NET Core, Mono, ASP.NET, MVC, and WinForms С# library for creating OLAP pivot cubes for .NET Core, Mono, ASP.NET, MVC, and WinForms FastCube .NET is a C# library for OLAP-based big data analysis .NET Framework 4.7.2, Mono and .NET Core. FastCube .NET С# library for creating OLAP pivot cubes for .NET Core, Mono, ASP.NET, MVC, and WinForms Download demo Online demo Documentation ## FastCube enables you to analyze data and to build summary tables (data slices) as well as create a variety of reports and graphs both easily and instantly. Embedding in the interface Full customization and integration into the interface of your business application. Global Filter Use a single data cube for synchronous analysis according to various criteria based on an independent filter. Source code This set of components includes FastReport source codes. Maximum convenience for companies wishing to adapt the code to their needs. Ultimate .NET Learn more about Ultimate .NET Currently, the library works with applications on WinForms, .NET Framework 4.7.2, ASP.NET Core, Mono Framework. How to Set Up WSL 2 for Working with FastReport and FastCube In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. Installing FastReport and FastCube components in Lazarus Instructions for installing FastReport in Lazarus for various operating systems with a comparison of Trial, Professional editions. Instructions for installing FastReport in Lazarus for various operating systems with a comparison of Trial, Professional editions. How to use filters and sorting options in FastCube VCL We talk about the types of filtering and sorting data in the FastCube VCL analytical environment with detailed instructions for creating custom filters. We talk about the types of filtering and sorting data in the FastCube VCL analytical environment with detailed instructions for creating custom filters. Any other questions? Contact the manager ### FastCube .NET 2021.1 integration with Business Graphics URL: https://www.fast-report.com/news/fastcube-net-2021.1 Summary: We added FastReport Business Graphics extension. It's a new product for interactive visualization of data from applications. We added FastReport Business Graphics extension. It's a new product for interactive visualization of data from applications. We added FastReport Business Graphics extension. It's a new product for interactive visualization of data from applications. More about FastReport Business Graphics for .NET Added ListDataSet component which allows loading data to cube using Windows Forms Data Binding. It is now possible to load data to Cube using Windows Forms complex Data Binding which is used in standard controls: DataGridView, ListView, and Combobox. Complex Data Binding loads data through the BindingSource component which acts as a proxy (more info can be found in MSDN). Here is a small example of loading data from List<>. 1. Declare a ProductInfo class ``` public class ProductInfo { public String Name { get; set; } public String Group { get; set; } public int Count { get; set; } } ``` 2. Create a list of ProductInfo records ``` List CreateProducts() { return new List { new ProductInfo {Group = "Bakery products", Name = "Ciabatta", Count = 3}, new ProductInfo {Group = "Bakery products", Name = "Bread", Count = 5}, new ProductInfo {Group = "Bakery products", Name = "Croissant", Count = 1},   new ProductInfo {Group = "Alcohol", Name = "Wine", Count = 6}, new ProductInfo {Group = "Alcohol", Name = "Whiskey", Count = 2}, new ProductInfo {Group = "Alcohol", Name = "Beer", Count = 5},   new ProductInfo {Group = "Dairy products", Name = "Yoghurt", Count = 5}, new ProductInfo {Group = "Dairy products", Name = "Milk", Count = 4} }; } ``` 3.  Configure cube and slice ``` private void Form1_Load(object sender, EventArgs e) { // configure data source listDataSet1.DataSource = CreateProducts(); // load data to Cube cube1.Active = true; // configure Slice slice1.YAxisContainer.AddSliceField(slice1.SliceFields.GetFieldByName("Group")); slice1.YAxisContainer.AddSliceField(slice1.SliceFields.GetFieldByName("Name")); var measure = new FastReport.Olap.Slice.MeasureField(slice1, FastReport.Olap.Types.AggregateFunction.Sum, slice1.SliceFields.GetFieldByName("Count")); slice1.MeasuresContainer.AddMeasure(measure); slice1.XAxisContainer.AddMeasuresField(); } ``` Here is the result: The full example is located in Demos\C#\DataBindings. Other changes: - Added "Copy" menu item to the context menu of XAxisZone and YAxisZone of the SliceGrid component. The menu item copies the caption of the selected node to the clipboard. - Paste from clipboard operation in a popup list executes search operation - Double click in the popup filter of a dimension executes SliceGrid positioning to the clicked item ### FastCube .NET Release 2020.2 URL: https://www.fast-report.com/news/fastcube-net-2020.2 Summary: FastCube .NET Release 2020.2 FastCube .NET Release 2020.2 New features are already expected in the update: - Added Mono platform support. Starting with this version we add support of cross-platform Mono framework. - Major changes: * Before this release we shipped FastCube.Olap package with depency on FastReport library. Now we moved this dependency and therefore integration with FastReport into a separate package FastReport.Olap.Report for the .Net platform and FastReport.Olap.ReportMono for Mono platform. Other changes: * Expression editor now shows dimension/measure/field names instead of their captions. Errors resolved: * Expression errors does not raise Exceptions; * ExpressionHighlight errors does not raise Exceptions; * Fixed move to group error; * Fixed chart data representation in some locales; * Fixed "List of values" aggregate calculation; * Fixed "Median" aggregate calculation. ### FastCube 1.1 released! URL: https://www.fast-report.com/news/fastcube-vcl-1.1 Summary: FastCube 1.1 released! FastCube 1.1 released! FastCube 1.1 --------------- + added new aggregate function "Count of Unique" + added new property DefaultFormat for Date, Time and Numeric. + added new property FormatString in TfcCubeField. + added support for ftLargeInt and ftMemo fields + added option mdsoNoTotalIfOneValue (No Total if data only one row) + added finction for automatic fields layout: TfcSlice.CreateAutoFieldsLayout(ANumsAsFacts: boolean = false); + added option mdsoAddTotalPrefix (add word "Total" when used mdsoTotalAsPrevLevel) + added event (OnGetFieldConv) for tune of field converter + added AutoHeight from ALL colmuns in RowAxis + added package for Delphi 5 + added Recompile Wizard for FastCube + added Events on Save/Load/Export actions + added component TfrcGrid for link TfrcCrossView in report with TfcGrid from form. * unit fcGraphics renamed to fcGraphicUtils since 1stClass has same unit name * unit fcScrollBar renamed to fcScrollBarCtrl since 1stClass has same unit name - fixed problem with Lookup Fields - fixed problem with compare BCD in Delphi 2005 - fixed problem with copy selected block cell in clipboard - fixed wrong left position of horizontal scrollbar after changing internal layout of TfcGrid - fixed wrong setting of MakeTotal when collaps(expand) value - remove russian symbols from form - fixed bugs in Export ### FastCube 1.2 released! URL: https://www.fast-report.com/news/fastcube-vcl-1.2 Summary: FastCube 1.2 released! FastCube 1.2 released! FastCube 1.2 --------------- + added property SelectedArea in TfcGrid (coordinate of selected area in Grid) + added possibility of changing PopUpList width + added save PopUpList width in slice + added split of Time (Hour, Minute, Second). Cube option: mdcoMakeTimes. + added event onGetStyles in TfrcGrid for setting styles of TfrcCrossView in report + added possibility of removing fields from list when loading from DataSet. Use event OnGetFieldConv. + added new property Version in TfcCube * allow set MakeTotal into Slice.BeginUpdate ...  Slice.EndUpdate. * added check version in Recompile Wizard for FastCube * default value for NullStr is '' * in measure editor change precision to DisplayFormat * renamedclass TfrxChartEditor to TfrcChartEditor - fix error loading of FMTBCD - fix error loading of TimeStamp - fix error with calculated fields in DataSet - fix memory leak in TfcUniqueValues.Find - fix some bugs of axis grid paint  - fix error of loading filed caption in TfcSlice.LoadFromStream - fix error creating of TfcSourceGrid - fix error in LoadFromStream - fix error with OnChange in TfcGrid - fix error with deletion of TfcGrid if it is assigned to TfcToolBar - fix error with deletion of TfcGrid if it is assigned to TfcGridReport ### FastCube 1.3 released! URL: https://www.fast-report.com/news/fastcube-vcl-1.3 Summary: FastCube 1.3 released! FastCube 1.3 released! FastCube 1.3 ------------ + Added styles for cells with total: cellrowtotal, cellrowgrand, cellcoltotal, cellcolgrand, cellfulltotal, cellfullgrand, cellrowtotalcolgrand, cellrowgrandcoltotal + You can use keyboard now to scroll content of DetailGrid + in detail grid added cell focus + Recompile Wizard save settings for every compiler + added description of TfcChart. Read fcchart.txt. + new events: TfcChart.OnGetSeriesClass, TfcChart.OnSeriesCreated, TfcChart.OnChartFilled + new events: TfcGrid.OnDrawCell, TfcGrid.OnDrawAxisItem + Change Caption of field in Slice when renamed Caption of field in Cube + added component TfrcChart for link TfrcChartView in report with TfcChart from form. + use new utf8-xml resource + new version of TfcChart + added PercentFormat + added popup menu item to rename dimensions + added property Value in TMeasure in script (short from CurrentValue) + added FastCube classes registration in script in FastReport + added Italian resources (thanks Loris Ferraresso) + Right Alignment for numeric fields in DetailGrid + added Brazil resources + export in UTF8 * dimension does not lose its width/height anymore while moving between areas * In Trial version You can to save cube to file. * added: It is possible to choose source for TfrcChartView and TfrcCrossView in report. * fix for Delphi5 * not allow use function with "Count of Unique" with calculated measure * TfcCube.LoadFromStream set Cube to Active * String "Report Data" changed to Cube Caption in export - fix error with THorizBarSeries - fix error: divide by zero when display measure as Percent and Total = 0 - Fixed: AV when drag and drop 'System Counter'. - fix error with showing SmallInt values - fix error: AV after loading slice from another cube - fix error: AV after added new measure - fix error: Caption of measures field set to "#MEASURES" - fix error: clear Data marking after measures editing - fix some bugs of DetailGrid and SourceGrid paint - fix error of unchecked of all measures with unchecked option mdsoAutoFilter - fix paint in TfcDetailGrid - fix error of rollback filter changes with unchecked option mdsoAutoFilter ### FastCube 1.4 with Delphi 2009 support released! URL: https://www.fast-report.com/news/fastcube-vcl-1.4 Summary: FastCube 1.4 with Delphi 2009 support released! FastCube 1.4 with Delphi 2009 support released! New in FastCube 1.4 + Added option mdsoSaveChartInSchema in TfcSlice (save Chart properties in Schema) + Added new aggregate function "List of Unique" + Added new event TfcSlice.OnInterpreterCreated to add users variables and functions to Script + Added Polish resources + Added new procedure TfrcCrossView.Update to use is report script after refresh dataset in cube. + added save X axis colums width in slice + You can use values of detail records in script for calculated measures.   Use Measures.PrepareDetailInfo to create array of detail records in script.   Record count in array - Measures.RecordCount   Detail value - Measures.DetailValue[ARecordIndex, AFieldName] + result of script can be String. + Measures[MeasureName] in script maked by measure name!!! + Added new property "Name" in TfcFieldOfRegion. Use property Name with measure. + Added new aggregate function "First value". It is possible to use with any type of the data! + Added cube option mdcoLoadWithDefaultFormat: use DefaultFormat on Load from cube. + Added split of Date - DayOfYear. + Added Dutch resources (thanks Jack Janssen) + Added new grid property PaintStyle. It changes style of grid and its parts    painting. We will increase differences between paint styles in next versions + Add export of cube/cube data to the following XML formats: XML for Analysis, xml-msdata (.Net DataSet), ms rowset (ADO), DataPacket (ClientDataset) + Added property UseFCChartEvents: boolean in TfrcChart + At a printing of the diagram through TfrcChart events from initial diagram TfcChart are used + Added opportunity of packages registration by Recompile Wizard + Added Turkish resources (thanks Burhan Cakmak) + Added split of Date - WeekNumber. + Added property TfcSlice.FieldsOrder - type of order in Field List (by Field Name, by Field Caption, by order in DataSet, by event OnFieldsListSortCompare). + Added Portuguese resources (thanks Fernando Dias) + Added Czech resources (thanks Karel JaneД_ek) * Added new propertyes expamles in demo. * Updated Brazil resource - Fixed an error: value of calulated measure with agreagate function af_formula is 0 in chart - Fixed an error of caption lost when field has been move between regions - Fix error with fields in IBObjects - Set caption of field "Measures" to value from language resources during Load From Stream - Fix error with FastReport designer in FastCube - Fix error with Measures.DetailValue[ARecordIndex, AFieldName] in script - Fix error with Dimensions[AFieldName].CurrentValue in script - Fix error with mdgoYAxisScroller - Fix error: Names of measures and dimentions are CaseSensitive. - Fix error: unnecessary invalidate in RowRegion of fcGrid. - Published properties in DefaultFormat are made "write". - Fix error of data gathering for TfcChart - Fix error registration of TfrcChart - Fix error with sort by total value - Fix error: inherited abstract SetCubeFieldCaption in TfcAbstractSlice - Fix error: Font not used in TfcGrid - Fix error with Lookup fields - Fix errors in Recompile Wizard ### FastCube 1.5 released! URL: https://www.fast-report.com/news/fastcube-vcl-1.5 Summary: FastCube 1.5 released! FastCube 1.5 released! FastCube 1.5 released! + Changed: row height calculation algorithm of the X Axis + Added property: TfcGrid.MaxRowHeightInXAxis + Added properties in Measures[] ColOffsetValueWithDimValue[ADimValue: Variant] and ColOffsetValueWithDimValue[ADimValue: Variant] + Added support for the mouse wheel in the detail grid. + Added: Properties FieldsOrder and ShowSplitFieldsInFieldList are saved in Schema file + Added property TfcSlice.ShowSplitFieldsInFieldList + Added: Index of the field in DataSet is saved in Cube file + Added events TfcSlice.OnSliceChanged + Added opportunity of copying in the Clipboard with headers + Added events TfcSlice.OnStartChange and TfcSlice.OnStopChange. + Added French resources (thanks Hugues Van Landeghem) + Better WideString field support. In combination with new defines UseWideString, UseUnicodeString (d2009 only) it allows to show unicode charaters in grid + Added PercentFormat property to the TfcCube.DefaultFormat + Added option mdgoCloneMasterValueOnExport to the TfcGrid (copy master value to all rows(columns) in export) + Field width is saved in Schema and does not reset after move field in a grid region + Added support for TBCDField for Delphi5 + Added German resources (thanks Daniel Soppe) + Added property GridCanvas to the TfcGrid for using in events OnDrawCell and OnDrawAxisItem + Added CopyToClipboard button to the ChartToolbar + Added Spanish resources + Added method TfcCube.Refresh to refresh data in Cube from DataSet * Function af_Count does not required a base field. - Removed grid properties: Crl3D, ParentCrl3D - Speed of expand/collapse operations has been dramatically increased - Fixed error: Axes were drawn very slowly with the big amount of data - Fix error with Dimensions[] in calcilation field script - Fix error with BCD fields in Fib+ and InterBaseExpress - Fixed error: DefaultFormat is nil in TfcFieldOfRegion - Fixed error in the html export with Delphi 2009 - Fixed error: the schema loss in TfrcChartView editor. - Fixed recompile in BCB6 package with support of FastScript - Fixed wrong charset assignment - Fixed errors in the Recompile Wizard for Delphi 2009 - Fixed errors in the frcd12.dpk package (Delphi 2009) - Fixed errors in the Measure Editor ### FastCube 1.6 released! URL: https://www.fast-report.com/news/fastcube-vcl-1.6 Summary: FastCube 1.6 released! FastCube 1.6 released! FastCube 1.6 --------------- + Added function TfcAxis.GetVisibleIndexFromAbs(ALevel: Integer; AAbsIndex: Integer; var AIndex: integer; var AVisible: Boolean): Boolean; + Added procedure TfcGrid.SelectCell(ACol, ARow: integer; AMakeVisible: boolean); + Added support for Embarcadero Rad Studio 2010 (Delphi/C++Builder) + Added option mdsoSaveFiltersByValue ў TfcSlice (save in Schema filters by value) + Added new aggregate function "Last value". It is possible to use it with any type of the data! + Added property UseParentFont into TfcGridStyles. + Font, color and alignment of TfcGrid are used when print with TfrcGrid. + Added property Font into TfcGridStyle. + Added script property Measure[].TotalValueForDims['dim1, dim2, ...'] to get measure total value for dimensions dim1, dim2, ... + Added Greek resources (thanks Dimitris Karagikas) + Added an ability to use one field for the measures and dimension simultaneously + Added script events OnGetSeriesClass, OnSeriesCreated and OnChartFilled in TfrcChartView. + Updated chart support in unit frcCrossRTTI. + Added property StackType (MultiBar) in TfcChart. + Added support THorizBarSeries in TfcChart. + Added new events OnSaveTemplate and OnLoadTemplate in TfcChart. + Added new property DefaultTemplatePath in TfcChart. + Added new properties DefaultSchemePath, DefaultCubePath and DefaultExportPath in TfcGrid. + Added option in Grid: mdgoChangeOrderByClick - Switching order of sorting by one mouse button clicking. + Added properties Dimensions.IsTotalByCol and Dimensions.IsTotalByRow. You can use this properties in Script. + Added new format type fkCustom (You can to create and registrate custom formates. Use fcCustomFormats.AddFormat. See examples fcExamples). + Added Swedish resources from Niklas Larsson + Added  FastReport integration package for BCB6 + Added: You simultaneously can change width of all columns in the X axis. Keep key Ctrl at change of width of the column. * Only the UTF8 encoding is now used for scheme files. * Event TfrcGrid.onGetStyles is changed - Fixed export of Null data into various XML formats - Fixed error of reading from stream property StackType (MultiBar) in TfcChart. - Fixed error with property DefaultExportPath in TfcGrid and property DefaultTemplatePath in TfcChart. - Fixed width TfcChartToolBar. - Fixed error of reading Chart Template from version before 1.5.5. - Fixed error: Calculation of sizes of memos is wrong in FastReport if are used different fonts. - Fixed error: AV in Chart if no data in grid - Fixed error: Caption of measures are wrong when dimension is collapsed ### FastCube 1.7 released! URL: https://www.fast-report.com/news/fastcube-vcl-1.7 Summary: FastCube 1.7 released! FastCube 1.7 released! FastCube 1.7 --------------- + Added script event OnGetFieldConv in TfrcCube. + Added parameter ACalcRowHeight: boolean in TfcGrid.SelectCell + Added events TfcSlice.OnBeforeRemoveSliceFieldFromRegion and TfcSlice.OnBeforeAddedSliceFieldToRegion + Added option mdsoAllowFilterAllValues in TfcSlice.Options + Added property TfcChart.SkipNullPoints: boolean + Added option mdsoSaveFiltersEnabledValues for TfcSlice (to save enabled filters Values (instead of disabled values) in Schema) + New key combinations Ctrl+Up and Ctrl+Down in TfcGrid and TfcDetailGrid + Added event TfcGrid.OnUpdateSelection: TNotifyEvent + TfcGridStyle.UseParentFont is set to False when Style properties are changed.  * Values of numerical measure are copied to clipboard without format. * Alignments are imported from TfcGrid if are used OnGetStyles in TfrcGrid - Fixed styles copying. Caused wrong colors in xls and html exports. - Fixed grid printing errors. - Fixed errors in fields converter. - Fixed error with PopUp list with Form.FormStyle=fsStayOnTop - Fixed error of fcChart printing. - Fixed error of saving Null value in schema with mdsoSaveFiltersByValue option - Fixed error in Recompile Wizard: installation packages in Delphi 11. - Fixed grid copy to clipboard operation for D9+ - Fixed memory corruption by the DrawText routine which caused random crashes - Fixed error in the Recompile Wizard for C++Builder 6 with FastScript in the Standart edition - Fixed few problems with FreePascal and Lazarus - Fixed Sort by focused row/column. - Fixed error: AV in TfcGridReport - Fixed error: AV when schema contains a field which is absent in cube ### FastCube 1.8 released URL: https://www.fast-report.com/news/fastcube-vcl-1.8 Summary: FastCube 1.8 released FastCube 1.8 released FastCube 1.8 --------------- + Added support of Embarcadero Rad Studio XE (Delphi XE/C++Builder XE) + Added property RunScriptInDesigner in TfrcCube. + Added search by first symbol (after pressing a key) in popup lists (list of fields and the lists of unique values) + Added TeeChart 2010 support - Fixed error: AV when calculation measure is moved in field list - Fixed range drawing when XP themes are enabled. - Fixed error with UnicodeString measures - Fixed error: AV after compiling project without using runtime packages in BCB 6 - Fixed error with ftMemo fields - Fixed error of TfcGrid printing ### FastCube 2 VCL beta demo is available now! URL: https://www.fast-report.com/news/beta-demo-fastcube-vcl Summary: FastCube 2 VCL beta demo is available now! FastCube 2 VCL beta demo is available now! New level of data analysis! I. Grids    1. Improvements to source data grid    2. Closer to the native look of Windows with enabled themes    3. Gradient drawing II. Data analysis    1. Optimized axis operations    2. New dimension attribute for single choice (radio filter)    3. Groups    4.Totals have many new features    5. Ranks for measures    6. Tree-like axis    7. Data highlighting    8. Status panel    9. Use of FastScript    10. Export III. Cube    1. Splits    2. Loading from custom storage    3. Data conversion during the load process    4. Custom field calculation during the load process    5. Add/remove operations on fields after the load    6. Append data to an active cube IV. Global filter ### FastCube 2 VCL Beta updated URL: https://www.fast-report.com/news/fastcube-vcl-beta Summary: FastCube 2 VCL Beta updated FastCube 2 VCL Beta updated + Delphi XE4 support * Improve chart editor - Fixed errors with Variant to Double conversion - Fixed errors in resources - Fixed errors with style frame initialization * Change save toolbar item + Implement chart Load/Save together with schema + Implement filter Load/Save together with schema - Fixed error with AdditionalTotals ### FastCube 2 VCL released! URL: https://www.fast-report.com/news/release-fastcube-vcl Summary: FastCube 2 VCL released! FastCube 2 VCL released! Desktop OLAP components set which supports Delphi/C++Builder/RAD Studio from 7th version upto XE5 Brief review of news in the 2nd version: I. Grids 1. Improvements to source data grid 2. Closer to the native look of Windows with enabled themes 3. Gradient drawing II. Data analysis 1. Optimized axis operations 2. New dimension attribute for single choice (radio filter) 3. improvements in Groups and 4. Totals 5. Ranks for measures 6. Tree-like axis 7. Data highlighting styles 8. Status panel 9. Advanced using of FastScript 10. New export filters III. Cube 1. Splits 2. Loading from custom storage 3. Data conversion during the load process 4. Custom field calculation during the load process 5. Add/remove operations on fields after the load 6. Append data to an active cube IV. Global filter V. And much more If you are our customer of VCL-components — login to customer panel and get FastCube 2 with discount! ### FastCube FMX commercial beta URL: https://www.fast-report.com/news/fastcube-fmx-commercial-beta Summary: FastCube FMX commercial beta FastCube FMX commercial beta Launched commercial beta FastCube FMX - Delphi XE4-XE6 supported. Compilation for MS Windows and Mac OS X only. FASTCUBE FMX is a tool for effective data analysis FastCube  enables you to analyze data and to build summary tables (data slices) as well as create a variety of reports and graphs both easily and instantly. It's a handy tool for the efficient analysis of data arrays. FastCube FMX is a set of OLAP Desktop components. It  supports  Embarcadero Delphi XE4, XE5, XE6, C++Builder XE4 - XE6, RAD Studio XE4 and higher. You can integrate it to applications for MS Windows and Apple Mac OS X. ### FastCube FMX for FireMonkey URL: https://www.fast-report.com/news/release-fastcube-fmx Summary: FastCube FMX for FireMonkey FastCube FMX for FireMonkey FastCube FMX is a tool for effective data analysis for FireMonkey. - Supports Embarcadero Delphi/C++Builder XE4, XE5, XE6, XE7 - You can integrate it to applications for MS Windows and Apple Mac OS X. - Instant data slices creation. You can load data from SQL queries or custom sources - All basic statistical operations (count, sum, minimum, maximum, average, variance, etc.) - Special functions (number of unique values, first value, list of unique values) - Filters for measured values - Automatic component layout of date and time - Unlimited number of measures in a summary table - Possible to put data into table columns or table rows, as well as on any level of measurements - Calculated data (based on FastScript) - Calculated filters for numeric data by using output formatting - Calculated filters for values when calculating data (based on FastScript) - Numeric data display control by using output formatting - Numeric data output as a value or as percent (in a row, column, group or table total) - Possible to use data of Date, Time and Row type - Conditional highlighting of cell value in a slices (in a range) - Possible to minimize measurements as a whole as well as separate values - Possible to control the display of totals - Control of axis sorting (according to measurement value or data) - Control of each level of measurement sorting (line of sorting) - Possible to group values of dimension - Top-N - Saving of templates (schemas) and data itself for future use - Export of FastCube's slices to Excel or HTML - Copying of a highlighted range to the clipboard - Reviewing and exporting slices cell details - Cube's/data cube's export to XML formats : XML for Analysis, xml-msdata, ms rowset or DataPacket - Printing by means of FastReport FMX - Graph construction by means of TeeChart for FireMonkey - Recompile Wizard ### FastCube for multi-dimensional data analysis URL: https://www.fast-report.com/news/blog-fastcube-vcl Summary: FastCube for multi-dimensional data analysis FastCube for multi-dimensional data analysis The case for using FastCube in multi - dimensional data analysis is  here .  Stay tuned for our blog . Comments and questions are welcome . ### FastCube released! URL: https://www.fast-report.com/news/first-release-fastcube-vcl Summary: FastCube released! FastCube released! By high needs of the FastReport's customers our company releases set of OLAP-components for Delphi "FastCube".  What the preferences of the FastCube?  high speed of the information processing by the our traditional code optimization and own data-keeping format high flexibility of data analisis in the power of full compatible and posibility of use script enjine FastScript - connect any complexity analisis! full integration with the FastReport. You can send results from the OLAP-cube to FastReport or, by other way,  call OLAP-cube from the FastReport. And - the main! Only for our customers - 30% discount to any edition of the FastCube!   ### FastCube VCL 2021.1 release URL: https://www.fast-report.com/news/fastcube-vcl-2021.1 Summary: Include support for the new Rad Studio 11 Alexandria. In addition, we have improved the interface - there are new items in the context menus, improved the ability to search for values. Include support for the new Rad Studio 11 Alexandria. In addition, we have improved the interface - there are new items in the context menus, improved the ability to search for values. New Features Include support for the new Rad Studio 11 Alexandria. In addition, we have improved the interface - there are new items in the context menus, improved the ability to search for values. We also updated the language resources and fixed bugs. New licensing mode l Starting version 2021.1 all FastCube VCL editions are subscription-based. It means that you will always have an up-to-date version as long as your subscription is valid. Added Rad Studio 11 support Starting with this version we add Rad Studio 11 support. SliceGrid changes Axis position changes on DblClick in the axis field popup. Added search in the popup list of unique values by pasting from the clipboard. Added "Copy" menu item to the axis menu. Item copies dimension value to clipboard. Report changes Added PreviewOptions, ReportOptions, PrintOptions properties to the TfcxpSliceGridReport class. Other changes Changed font of several forms from "MS Sans Serif" to "Tahoma". Updated Czech locale resources. Updated Greek locale resources. Errors Fix header drawing (D10.4 bug). Access violation with double click on the script edit in the dimension editor. Fix stack overflow error on long list popup. ### FastCube.Net components. Part 1. Cube, CubeGrid, CubeGridToolbar, Slice, SliceGrid, SliceGridToolbar. URL: https://www.fast-report.com/blogs/fastcube-net-components In this article, we'll consider the components included in the FastCube.Net library. List of components: Cube – the main component that loads a cube from a file and fills it with data; CubeGrid – It is intended for displaying all data of a cube. Visual component; CubeGridToolbar – is a toolbar for CubeGrid; Slice – contains a cube slice; SliceGrid – is intended for displaying a cube cut. Visual сomponent; SliceGridToolbar – toolbar for the Slice grid; Chart – chart, based on the slice data; ChartToolbar – toolbar for the chart; DataSource – data source for a cube. DBDataSet – data set obtained from the database; DTDataSet – data set from the DataTable. Let's look at the components relationship scheme. We consider the scheme from left to right. The DataSource object has a DataSet property. The value of this property is a reference to one of two objects: DBDataSet or DTDataSet. The Cube object has the DataSource property. A CubeGrid and Slice are related with the Cube object. In turn, SliceGrid and Chart are related with the Slice object. In the future, this scheme will help us in setting up the connection of components. In the meantime, let’s consider the components: 1)      The Cube component is the basis of the entire FastCube. It loads the cube file and acts as the data provider and data scheme provider for the other components. Below there are main properties and methods of this component. Properties: Property Description Active The activity is true or false. It is important to make sure that after all the settings, the Active property is set to true. Otherwise, you just will not see any data. Caption Cube header. Visible in the CubeGrid. CompressCubeFile Whether to use cube file compression DataSource The data source must be selected if you fill the cube with data from the database or DataTable. Description Description. It can be seen in CubeGrid SkipFieldsWithErrors Ignore fields with errors SourceType The type of the data source indicates where to get the data to fill the cube. Can take one of the values: Empty DataSource File Stream Manual Methods: Method Description ClearGroups() Clear grouping. Close() Close cube. GetFieldsCount() Get the number of fields in a cube. GetSourceRecordsCount() Get the number of records in the data source. GetSourceValue() Get the value of the data source. GetSourceValueAsString() Get the value of the data source as a string. GetSourceValueId() Get the ID of the data source value. GetSourceValueIdAndVariant() Get the ID of the data source value. Load() Load cube. File or stream. LoadGroups() Load grouping. Open() Open the cube. Save() Save the cube to a file. SaveGroups() Save grouping. Dispose() Destroys the cube object. SendAlert() Send alert to user. Examples of use in the code: ``` FastReport.Olap.Cube.Cube cube = new FastReport.Olap.Cube.Cube(); cube.DataSource = dataSource1; cube.SourceType = FastReport.Olap.Cube.SourceType.DataSource; cube.Load("С:\\Program Files (x86)\\FastReports\\FastCube.Net Professional\\Demos\\Data\\Cubes\\2_0_sample_en1.mdc"); cube.Active = true; ```  If you are using a cube file that contains data, you do not need to set the DataSource property. And for the SourceType property, you need the value FastReport.Olap.Cube.SourceType.File. 2)      The CubeGrid component is a summary table filled with data from a cube. Simply saying - a visual display of the cube. Properties: Property Description Сube Cube object. DataZone Settings for displaying data in the grid. Methods: Methods Description Export Export a cube to one of the following formats: HTML; DBF; CSV; XML; Open Document Spreadsheet; Excel; Excel 2007. CreateDataZone Create a new data zone. FullUpdate Update the data zone and the captions zone. Examples of use in the code: ``` CubeGrid cubeGrid = new CubeGrid(); cubeGrid.Dock = DockStyle.Fill; cubeGrid.Parent = tabPage2; cubeGrid.Cube = cube; ```  The above example shows how to create a cubeGrid from the application code. The created object needs to be placed on the form (the Parent property), and set up the location (the Dock property). In addition, you must specify a cube from which to take the data. 3) The CubeGridToolbar component is a toolbar that works in conjunction with the cubeGrid component. This toolbar provides only one element - export. The table below shows the available export formats. Properties: Property Description Grid Grid for which acts toolbar. ToolItems List of elements of the toolbar. Examples of use in the code: ``` CubeGridToolbar cubeGridToolbar = new CubeGridToolbar(); cubeGridToolbar.Dock = DockStyle.Top; cubeGridToolbar.Parent = tabPage2; cubeGridToolbar.Grid = cubeGrid; ```  If the Dock and Grid properties can be configured in the Property inspector, then “Parent” needs to be set only in the program code. 4)      The Slice component contains a slice of the cube. To load a slice, you need to download a file with a slice. This can be a cube file or a scheme file. Properties: Property Description AutoUniqueValuesFilter Filter duplicate values. Cube Cube object. FieldsOrder The order of displaying fields: ByIndex, ByName, ByCaption. ColCount Number of columns. HideColZeros Hide empty columns. HideRowZeros Hide empty lines. HideTotalForSingleValue Hide the total if there is only one value. MeasuresContainer Container that contains the measures. RowCount The number of rows in the grid. ScriptLanguage It can be CSharp or Vb. ScriptText Script code. ScriptRestristions Configuring Script Restrictions. SliceFields List of the slice fields XAxisContainer Container for fields placed along the X axis. For dimensions. YAxisContainer Container for fields placed along the Y axis. For dimensions. Basic methods: Methods Description BeginUpdate Enable update mode. EndUpdate Finish the update. Clear Clear the slice data and fields. Save Save the slice. When you save a cube, it runs automatically. Load Load a slice from a file or stream. Transpose Transpose the slice (change axes). Examples of use in the code: ``` FastReport.Olap.Slice.Slice slice1 = new FastReport.Olap.Slice.Slice(); slice1.Cube = cube; ``` 5)      The SliceGrid component displays a slice in the form of a crosstab. This is the main tool of the analyst. Allows you to customize the layout of fields, to add new ones, to sort, to group and more. Properties: Property Description DataZone Settings for displaying data in the grid. XAxisZone X-axis display area settings. YAxisZone Y-axis display area settings. FilterFieldsZone Filter zone settings. XFieldsZone Setting the area of displaying dimensions on axis X. YFieldsZone Setting the area of displaying dimensions on axis Y. FieldsZone Field list zone settings. Methods: Methods Description Export() The method of exporting a report to one of the following formats: HTML; DBF; CSV; XML; Open Document Spreadsheet; Excel; Excel 2007. ShowFieldsEditor() Open the window with the list of fields of a slice. Examples of use in the code: ``` SliceGrid sliceGrid = new SliceGrid(); sliceGrid.Dock = DockStyle.Fill; sliceGrid.Parent = tabPage1; sliceGrid.Slice = slice1; ```  This example shows how to create a sliceGrid object in the application code. If there is no such need, then all the settings can be made in the Property inspector. 6)      The SliceGridToolbar component is a rendered toolbar for the SliceGrid: The toolkit is as follows: 1) Save: cube; scheme. 2) Open: cube; additional cube; scheme. 3) Clear grid; 4) Export to: HTML; DBF; CSV; XML; Open Document Spreadsheet; Excel; Excel 2007. 5) Transport - change the X and Y axes by places; 6) Hide row zeros; 7) Hide column zeros; 8) Row sort type: Sort by value of the axis; Sort by measures totals; Sort by focused column. 9) Column sort type: Sort by value of the axis; Sort by measures totals; Sort by focused row. 10) Edit measures - settings of indicators. This includes setting up conditional data highlighting; 11) Display format - is set for the selected column or row; 12) Field list - a list of all fields available in the slice; 13) The formula editor is intrinsically a script editor in the programming language C # or VB; 14) Information - information about the slice; Properties: Property Description Grid Grid for which acts toolbar ToolItems List of Toolbar Items An important feature of using this component is the binding to the parent object in the program code. That is, it is not enough simply to "drag" the component onto the form and set its Grid property. It is necessary in the program code to set the Parent property to display the toolbar on the form. This can be, for example, a sliceGrid object, or a TabPage, Panel, or other suitable. Examples of use in the code: ``` FastReport.Olap.Controls.SliceGridToolbar toolbar = new FastReport.Olap.Controls.SliceGridToolbar(); toolbar.Grid = sliceGrid1; toolbar.Parent = sliceGrid1; toolbar.Dock = DockStyle.Top; ```  In the second part of the article we will consider the remaining objects: Chart, ChartToolbar, DataSource, DBDataSet, DTDataSet. Tags: .NET, .NET, FastCube, FastCube ### FastEditors URL: https://www.fast-report.com/products/fast-editors-vcl Summary: A library of UI components for visualizing and editing data on VCL and Lazarus A library of UI components for visualizing and editing data on VCL and Lazarus This universal library features UI elements for viewing and editing data using standalone components or editors embedded in FastGrid cells. FastEditors A library of UI components for visualizing and editing data on VCL and Lazarus Buy Try for free Documentation Integration with the FastGrid Component Some properties and events are grouped in a set called Properties. Based on this, editors are automatically created in the cells of the FastGrid component. This simplifies the formatting and editing of data. Predictable Behavior The behavior of the editors is similar to standard VCL and Lazarus editors. The library supports the main properties, methods, and events. As a result, our editors can be easily integrated into a project both as part of the FastGrid component and as standalone components. The Business Application Interface "As Is" Create the perfect interface for your business application with minimal effort. The WYSIWYG (What You See Is What You Get) principle allows you to achieve visual results quickly and easily. High Performance The editors in the FastGrid cells operate optimally and efficiently. They create input fields and visual data representations only when necessary. This speeds up performance and eliminates unnecessary window identifiers. Data Export Integration with FastReport VCL Reporting simplifies the export of data from FastGrid cells. You can easily print them in the format they are presented in the project. Source Code The FastEditors library includes the source code for each editor. This provides maximum convenience for companies looking to flexibly adapt the ready-made solution to their needs. Ultimate VCL Learn more about Ultimate VCL Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. The article provides a detailed overview of the watermark functionality in FastReport VCL — covering both the visual interface and programmatic methods using Delphi code and report scripts. Any other questions? Contact the manager ### FastExperts 1.21 URL: https://www.fast-report.com/news/fastexperts-1.21 Summary: FastExperts 1.21 FastExperts 1.21 New version of the FastExperts: - added French language - minor bug fixes ### FastGrid URL: https://www.fast-report.com/products/fast-grid-vcl Summary: Library for visualizing, editing, and structuring data on VCL and Lazarus Library for visualizing, editing, and structuring data on VCL and Lazarus A versatile library with UI components for visualizing, editing, and structuring both local and server data in VCL and Lazarus environments. FastGrid Library for visualizing, editing, and structuring data on VCL and Lazarus Buy Try for free Documentation High Performance Our components have undergone numerous testing stages to ensure truly stable operation with large amounts of data. Your data is processed instantly. Data Sources Connect to local and server data sources without complex settings and additional tools. The standard TDataSource component supports connections to FireDAC, ADO, BDE, DBX, IBX, FIBPlus, and Oracle. “As Is” Business Application Interface reate the perfect interface for your business application based on the WYSIWYG (“what you see is what you get”) principle. Visual results without extra effort! Built-in Editors Our editors allow you to transform your data into convenient and visual information. Make informed business decisions using UI elements that automatically adapt to data types. Data Export Integration with FastReport VCL Reporting allows you to easily export data to various formats and print them. Source Code The FastGrid library includes source code. Maximum convenience for companies wishing to adapt the code to their needs. Ultimate VCL Learn more about Ultimate VCL Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. The article provides a detailed overview of the watermark functionality in FastReport VCL — covering both the visual interface and programmatic methods using Delphi code and report scripts. Any other questions? Contact the manager ### FastQueryBuilder URL: https://www.fast-report.com/products/fast-query-builder Summary: A visual builder of SQL database queries for VCL and Lazarus applications A visual builder of SQL database queries for VCL and Lazarus applications A visual builder for building query text in SQL in VCL, FMX, and Lazarus applications as quickly as possible. FastQueryBuilder A visual builder of SQL database queries for VCL and Lazarus applications Try for free Documentation Support for multiple platforms It supports Embarcadero Delphi (the former Borland and CodeGear), C++Builder, RAD Studio 2009, and Lazarus. Ease of use FastQueryBuilder saves the visual query model to be used and adjusted in the future. Visibility Query parameters can be completely visually built into any window of your application. Ultimate VCL Learn more about Ultimate VCL FastQueryBuilder currently works on Windows and Linux. Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. The article provides a detailed overview of the watermark functionality in FastReport VCL — covering both the visual interface and programmatic methods using Delphi code and report scripts. Any other questions? Contact the manager ### FastQueryBuilder 1.02 URL: https://www.fast-report.com/news/fastquerybuilder-1.02 Summary: FastQueryBuilder 1.02 FastQueryBuilder 1.02 + DBX Engine added  + multilanguage added - conflict between fr_sinmemo.pas (Fr2) and fqb_sinmemo.pas (FQB) is fixed - bug with use XPManifest is fixed - bug when work with FR3 is fixed - minor bugs fixed ### FastQueryBuilder 1.03 released URL: https://www.fast-report.com/news/fastquerybuilder-1.03-release Summary: FastQueryBuilder 1.03 released FastQueryBuilder 1.03 released Whats new: + added d2006(DeXter) packages and compatibility + Danish, Portuguese language added + joins between fields of the compatible types + Designer saves its own position and size - fixed for order by DESC of any field - fixed 'Control has no parent window.' error in Delphi 5 ### FastReport .NET URL: https://www.fast-report.com/products/fast-report-net Summary: A library for generating reports and creating documents for .NET 10, Blazor, .NET Core, ASP.NET , MVC and WinForms A library for generating reports and creating documents for .NET 10, Blazor, .NET Core, ASP.NET , MVC and WinForms Reporting and documents creation library for .NET 10, ASP.NET, MVC and Windows Forms. Includes online report designer and source code FastReport .NET A library for generating reports and creating documents for .NET 10, Blazor, .NET Core, ASP.NET , MVC and WinForms Try for free Documentation ## Library for generating reports and creating documents for .NET 10, Blazor, .NET Core, ASP.NET , MVC and WinForms. It can be used in Microsoft Visual Studio 2026 and JetBrains Rider environments. Embeddability in projects Install the necessary packages from the NuGet repository, or download packages from our website and add the necessary libraries to the project. No additional modules or special extensions are required. Lots of components A variety of elements are available for building reports in the designer: from text and images to mathematical formulas and 3D diagrams. Quick access to the report and data structure From the report tree and properties tree, you can edit the report structure, parameters, and filters, as well as data sources with global styles. Compatibility and integration FastReport .NET is part of a single FastReport ecosystem in C#. Reports created in other products will work in FastReport .NET and vice versa. Smooth transition from other solutions Our report generator instantly converts your reports from List&Label, DevExpress, Microsoft Reporting Services (RDL, RDLC), Crystal Reports, StimulSoft, and Jasper Library into FastReport format. System.Drawing (GDI) The familiar System.Drawing with GDI+ graphics functions is used to create graphical elements, render text, and manage graphic images. Report generator for WinForms, Blazor Server, ASP.NET , MVC, .NET 10 Using FastReport .NET, you can create reports that work independently of the application. In other words, FastReport .NET can be used as an independent solution for building reports. Judge for yourself: - Contains a powerful visual designer for creating and modifying reports. Your application can run the report designer from the code; - Contains an online report designer for ASP.NET; - You can connect to any database, use any of its tables, or create your own queries in SQL; - You can add one or more dialog forms to the report to request parameters before running the report; - Using the built-in script, you can control the interaction between the controls of dialog forms and perform complex data processing; - Finally, you can see the result in the preview window, print the report, or save it in a variety of popular formats. ASP.NET demo ASP.NET MVC demo .NET Core demo Online Designer demo Blazor WASM Demo Blazor Server demo What is FastReport .NET? - FastReport .NET is written in C# and consists entirely of managed code. It is compatible with .NET Framework 4.6.2 and later versions, as well as .NET Core, .NET 10, and Blazor. - FastReport .NET comes with source codes. You can adapt it to your own needs. - Reasonable price and licensing policy. The license price includes a visual designer - you can give your users the opportunity to develop reports on their own. No additional deductions are required from your side! Please note the full terms of use in the License Agreement! - FastReport report generator .NET allows you to add geographical maps to the report using the maps object, which will make the report relevant to the topic even more interactive. - Integrated into FastReport .NET support for cloud services makes it possible to save reports to storage: Google Drive, OneDrive, DropBox, Box. It is possible to send documents by e-mail and FTP. - Extensible FastReport architecture .NET allows you to create and connect your own objects, export filters, functions, wizards, and database engines to the report. If the available opportunities are not enough for you, expand them! - Automated update of Nuget packages in Visual Studio. - Support for RDL format - the ability to open and save in this format. - Support for importing Crystal Reports. - Very compact and really Fast! How do I buy a product? Ultimate .NET WinForms WPF Avalonia Mono Web How to Export a Report from FastReport .NET to PostScript FastReport .NET supports exporting reports to many popular formats, such as PDF, Excel, Word, and others. However, professional printing, plotters, and specialized printing equipment often require the PostScript (.ps) format. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. How to configure Content Security Policy for FastReport .NET WEB reports Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions of FastReport .NET WEB, the architecture of the client-side has been significantly reworked, which simplifies compliance with a strict CSP without losing report functionality. In this article, we will examine how to properly configure CSP for FastReport reports and take into account typical risks. Learn how to configure Content Security Policy for FastReport .NET WEB reports: an overview of CSP directives and values, changes in the FastReport architecture, typical bypass scenarios, and ways to protect against them. How to Configure a Report with Business Objects in Code and the FastReport .NET Designer FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects (Category → Products). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects in FastReport .NET. Any other questions? Contact the manager ### FastReport .NET - FAQ URL: https://www.fast-report.com/faqs/fastreport-net Summary: Discover key features and updates in FastReport .NET, including installation, usage, and troubleshooting. Discover key features and updates in FastReport .NET, including installation, usage, and troubleshooting. Do you have a Technical Support Statement? Yes, you can find it at: Technical Support Statement. Is there paid enhancement of FastReport .NET functionality? Yes, on a contractual basis. How do you calculate the size of an object that has dynamic resizing properties set (AutoWidth, CanGrow, CanShrink)? If you call the object's .Height property (Text1.Height), the result will be the height of the object in the report template. During report rendering, the height changes, and to determine the height of the object in the prepared report, you should use the CalcHeight method (Text1.CalcHeight()). The CalcWidth method is also used to calculate the length. When compiling the project, an error message is displayed: Could not find type or namespace name 'FastReport' (missing using directive or build reference?) Ensure that the project has references to the required libraries (FastReport.dll, FastReport.Web.dll) set up. Check the .NET Framework version used by your project and the referenced library. How to send a report by mail using a code in PDF format? Use this code snippet: ``` Report report = new Report(); report.Load(...); report.RegisterData(...); report.Prepare(); PDFExport pdfExport = new PDFExport(); EmailExport export = new EmailExport(); // set up Account properties... export.Account.Host = ""...""; export.Account.Address = ""...""; // set up email properties... export.Address = ""...""; export.Subject = ""...""; export.MessageBody = ""...""; // send email export.Export = pdfExport; export.SendEmail(report); ``` How do you remove the Data tab in the designer (for providing to users)? Add the "EnvironmentSettings" control to your form (Form). Before calling `report.Design()`, add the following lines: ``` EnvironmentSettings1.DesignerSettings.Restrictions.DontCreateData = True; EnvironmentSettings1.DesignerSettings.Restrictions.DontEditData = True; ``` If you are using DesignerControl, then these lines: ``` designerControl1.Restrictions.DontCreateData = true; designerControl1.Restrictions.DontEditData = true; ``` How to inherit a report from code? Create a new report: ``` Report report = new Report(); ``` Add a CustomLoadEventHandler event to load a basic report: ``` report.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport); ``` Load the inherited report: ``` report.Load(""InheritReport.frx""); ``` Delete CustomLoadEventHandler: ``` report.LoadBaseReport -= new CustomLoadEventHandler(FReport_LoadBaseReport); ``` Now you can show the report or open it in the designer. It will contain both the one that is inherited and the one that inherits the base report: ``` report.Show(); ``` You also need to create an event to load the base report: ``` private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e) { // e.FileName contains the name of base report. It may be the file name, or an ID in the database, // it depends on how you load the main report e.Report.Load(""C:\\Users\\InheritReport\\bin\\Debug\\Title2.frx""); } ``` And the full code: ``` public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Report report = new Report(); report.LoadBaseReport += new CustomLoadEventHandler(FReport_LoadBaseReport); report.Load(""InheritReport.frx""); report.LoadBaseReport -= new CustomLoadEventHandler(FReport_LoadBaseReport); report.Show(); } private void FReport_LoadBaseReport(object sender, CustomLoadEventArgs e) { // e.FileName contains the name of the base report. It may be the file name, or an ID in the database, // it depends on how you load the main report e.Report.Load(""C:\\Users\\InheritReport\\bin\\Debug\\Title2.frx""); } } ``` If you want to load a report from a database, replace the `Load()` method with `LoadFromString()`. How to remove the Code tab in the designer (for providing to users)? Add the ""EnvironmentSettings"" control to your Form. Before calling `report.Design()`, add the following line: ``` environmentSettings1.DesignerSettings.Restrictions.DontEditCode = true; ``` How do you set object formatting from code? You can do this in the report script or in your project code using the following lines: ``` FastReport.Format.NumberFormat format = new FastReport.Format.NumberFormat(); format.UseLocale = false; format.DecimalDigits = 2; format.DecimalSeparator = "".""; format.GroupSeparator = "",""; ``` And set the created formatting for the text object (TextObject): ``` textObject.Formats.Clear(); textObject.Formats.Add(format); ``` How to create an MSChartObject chart from code? Create a new MSChart object, set the height, width, and legend: ``` MSChartObject MSChart1 = new MSChartObject(); MSChart1.Width = 300; MSChart1.Height = 300; MSChart1.Chart.Legends.Add(new Legend() { Name = ""Legend1"", Title=""Legend title""}); ``` Create a ChartArea object, set the name, axis titles and assign the created MSChart object: ``` ChartArea chartArea1 = new ChartArea(); chartArea1.Name = ""ChartArea1""; chartArea1.Axes[0].Title = ""X name""; chartArea1.Axes[1].Title = ""Y name""; MSChart1.Chart.ChartAreas.Add(chartArea1); ``` Create a Series object, set the chart type, border thickness, add points, and assign the series to the chart: ``` Series series = new Series(""sample""); series.ChartType = SeriesChartType.Line; series.BorderWidth = 2; series.Points.Add(new DataPoint(0, 1)); series.Points.Add(new DataPoint(1, 2)); series.Points.Add(new DataPoint(3, 5)); series.Points.Add(new DataPoint(4, 8)); MSChart1.Chart.Series.Add(series); ``` Assign the created MSChart to the DataBand report object: ``` Report report = new Report(); report.Load(""ok.frx""); DataBand db = report.FindObject(""Data1"") as DataBand; MSChart1.Parent = db; ``` And the full code snippet: ``` MSChartObject MSChart1 = new MSChartObject(); MSChart1.Width = 300; MSChart1.Height = 300; MSChart1.Chart.Legends.Add(new Legend() { Name = ""Legend1"", Title=""Legend title""}); ChartArea chartArea1 = new ChartArea(); chartArea1.Name = ""ChartArea1""; chartArea1.Axes[0].Title = ""X name""; chartArea1.Axes[1].Title = ""Y name""; MSChart1.Chart.ChartAreas.Add(chartArea1); Series series = new Series(""sample""); series.ChartType = SeriesChartType.Line; series.BorderWidth = 2; series.Points.Add(new DataPoint(0, 1)); series.Points.Add(new DataPoint(1, 2)); series.Points.Add(new DataPoint(3, 5)); series.Points.Add(new DataPoint(4, 8)); MSChart1.Chart.Series.Add(series); Report report = new Report(); report.Load(""ok.frx""); DataBand db = report.FindObject(""Data1"") as DataBand; MSChart1.Parent = db; ``` Result: How to disable showing ProgressForm when building and displaying a report? You can disable the window in EnvironmentSettings: ``` Report report = new Report(); report.LoadPrepared(""1.fpx""); EnvironmentSettings s = new EnvironmentSettings(); s.ReportSettings.ShowProgress = false; report.Show(); ``` How to return default settings for the designer? Delete the FastReport.config file from C:\Users""Your user's name""\AppData\Local\FastReport. How to get request parameter value from code? Use the following code for this: ``` Report.Dictionary.Connections[0].Tables[0].Parameters[0].Value.ToString(); ``` Why don't web demos work? If demos from the Demos\C#\Web folder do not launch, then to fix this you need to: Restore NuGet packages; Add links to all necessary libraries from ""packages""; Change the build versions to the current ones in the Web.Config files from the root directory and from Views. How to combine several reports into one (group printing)? Use the code below for this. For desktop version: ``` Report report = new Report(); report.Load(Path.GetFullPath(@""..\..\Report1.frx"")); report.Prepare(true); report.Load(Path.GetFullPath(@""..\..\Report2.frx"")); report.Prepare(true); report.Load(Path.GetFullPath(@""..\..\Report3.frx"")); report.Prepare(true); report.ShowPrepared(); ``` For web version: ``` webReport.Report.Load(Path.GetFullPath(@""..\..\Report1.frx"")); webReport.Report.Prepare(true); webReport.Report.Load(Path.GetFullPath(@""..\..\Report2.frx"")); webReport.Report.Prepare(true); webReport.Report.Load(Path.GetFullPath(@""..\..\Report3.frx"")); webReport.Report.Prepare(true); webReport.ShowRefreshButton = false; webReport.ReportDone = true; ``` How to load and call a report from application resources? Installing a report in resources: Go to Visual Studio to the resources tab (Project -> Properties -> Resources); Set the name (report) and set the contents of the resource (the contents of the file myreport.frx); Calling a report from resources: ``` Report report = new Report(); report.ReportResourceString = Resources.report; report.Show(); ``` How to add an assembly (dll) to a report from code? Use this code snippet: ``` Report report = new Report; List assmbly = new List (report.ReferencedAssemblies); assmbly.Add(""Newtonsoft.Json.dll""); //replace to your dll's name report.ReferencedAssemblies = assmbly.ToArray(); ``` Make sure that the added dll is in the same folder as FastReport.dll. Now you can use methods from the connected dll. For example, you can add the following expression to the TextObject - `[Newtonsoft.Json.ConstructorHandling.Default.ToString()].` How to include all tables and relations from a dataset in a report? Use this code snippet to make all tables from your data source (DataSet) available in the report: ``` foreach (FastReport.Data.DataSourceBase tbl in report.Dictionary.DataSources) { tbl.Enabled = true; } ``` Then add all the relations from the DataSet: ``` for (int i = 0; i < ds.Relations.Count; i++) { report.RegisterData(ds.Relations[i], ""relation"" + i); } ``` And enable all relations: ``` foreach (FastReport.Data.Relation rl in report.Dictionary.Relations) { rl.Enabled = true; } ``` The full code: ``` Report report = new Report(); DataSet ds = new DataSet(); ds.ReadXml(""EstimateFile.xml""); report.RegisterData(ds, ""ds""); foreach (FastReport.Data.DataSourceBase tbl in report.Dictionary.DataSources) { tbl.Enabled = true; } for (int i = 0; i < ds.Relations.Count; i++) { report.RegisterData(ds.Relations[i], ""relation"" + i); } foreach (FastReport.Data.Relation rl in report.Dictionary.Relations) { rl.Enabled = true; } ``` FastReport .NET and the print service are installed on Server_1, but all printers will be located on Server_2. Is it possible to send a report to the print queue from another server? Yes, it is possible. You need to configure a network printer in the system. When converting RDL reports from SSRS, only the report display is transferred, but not the DataSets? Data sources are not transferred during the conversion. I have a data row with a label. If the value is 0.00, I need to hide the entire row along with the label. Is this possible? You need to add an event handler BeforePrint to the band. There, check this value, if it is 0.00, then set the Visible property of the band to false. Additionally, you may need to set the height of the band to 0. Does FastReport .NET support integration with a database using DTO? (no direct access to the database) It depends on what DTOs are there. They can be passed as objects to the report as a data source. There is a similar example in the demo projects. In the [FastReport .NET]\Demos\C#\DataFromBusinessObject folder. In FastReport .NET, can I get rid of Microsoft.CodeAnalysis.CSharp.dll, Microsoft.CodeAnalysis.VisualBasic.dll, and Microsoft.CodeAnalysis.dll, which are generated during deployment? If they are excluded, an error occurs when preparing the report. How can you remove them? These libraries are necessary for the operation of our script in FastReport .NET. Removing them is not possible. Is it possible to convert existing XtraReport reporting forms to frx format? Yes. In our reports, the data source is a DataSet. Is it possible to display the DataSet structure in the form of a tree in the FastReport .NET report designer, taking into account the relations between tables in it? It will not be possible to display the DataSet structure in the form of a tree, taking into account the relations between tables in it. Can you set the displayed names for fields, tables, and relations in the FastReport editor (similar to DisplayName in DevExpress)? There is something similar, the Alias property. Is there a report designer for Angular applications? You can use FastReport .NET and the Online Designer. We received the source code of the library from you, everything builds, but two libraries are already built there: FastReport.Compat.dll and FastReport.DataVisualization.dll. Where can we get the source code for these libraries? **[FastReport.Compat](https://github.com/FastReports/FastReport.Compat)** and **[Datavisualization](https://github.com/FastReports/winforms-datavisualization)** There is a web application developed with Flutter, and a back-end web service developed with C# .NET. Can FastReport .NET be used to create reports on the back-end, generating PDF files and displaying them in the Flutter application? Yes, FastReport .NET can be used for this purpose. Is it possible to use LINQ in the FastReport .NET report script if you need to find one or more rows from the BusinessObjectDataSource? Yes, it is possible. Suppose we have a .NET assembly: a DLL with a DataConnection, written similarly to the samples. That means we have our own data provider. Is it possible to connect this .NET assembly to the Online Designer? How? Possibly through `FastReport.Utils.RegisteredObjects.AddConnection()` Is there a converter for templates from .FRX to .FR3? Yes. With the template designer, you can save templates in a number of formats, including .FR3. In the designer, select "Save As...", and in the save dialog, select "FastReport VCL report (.fr3)". How can I get the old version of the product? If you are using our private nuget server, then you can choose the version you want there. You can also request the desired version from us. Is it possible to connect an Excel file as a database and build a report? Direct connection is not planned. Depending on your file, you may be able to convert it to another format, such as CSV, and FastReport will be able to use that format as a database. Is it possible to connect to DataSource in FastReport .NET? Yes. What databases and DBMSs can you connect to? Cassandra ClickHouse Couchbase ElasticSearch Excel Firebird Json Linter MongoDB MsSql MySql OracleODPCore Postgres RavenDB SQLite Databases compatible with the ones listed above are also supported. We are constantly improving our products, so the list is not exhaustive. If you contact our support, we will provide you with detailed information about compatibility with the database management system you are interested in. Does FastReport .NET support Vertica and Clickhouse databases? It supports СlickHouse, but does not support Vertica. Is it possible to export the PDF as text instead of an image? Unlike FastReport Open Source, FastReport .NET exports to PDF not in image format, but in text. Is it possible to export PDFs with interactive input fields? Yes. Is there an option to embed fonts when exporting to PDF? Yes. Is it possible to export the report to PDF with the report structure? Yes. Is it possible to use a digital signature when exporting to PDF? Yes. Is there an export of the report to cloud services? Yes. Can I send the report by email? Yes. What office document formats does export support? RTF, Excel 2007, Excel 97, Word 2007, PowerPoint 2007, Open Office Calc, Open Office Writer, XML, XAML, LaTeX What types of documents for different types of printers does export support? PostScript, PPML, ZPL, dot matrix printers. What PDF standards does FastReport .NET export support? PDF: 1.5 and 1.7, PDF / A (1, 2, 3), PDF / X (3, 4) What types of exports are available in FastReport .NET? In what formats will I receive documents and reports? PDF: 1.5 and 1.7, PDF / A (1, 2, 3), PDF / X (3, 4); Office: RTF, Excel 2007, Excel 97, Word 2007, PowerPoint 2007, Open Office Calc, Open Office Writer, XML, XAML, LaTeX; Web: HTML, MHT; Graphics: BMP, PNG, GIF, JPEG, TIFF, EMF, SVG, DXF, PPML, PostScript; Data Base: CSV, DBF, Json; As well as: Text , ZPL, XPS. The Visual Studio toolbox does not contain .NET FastReport components Add components to the toolbox manually: Click ""Select items"" in the right-click menu hovered over the Visual Studio toolbar and select FastReport.dll from the GAC (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\FastReport) folder. Why are there no libraries for the .NET Framework 2.0 in the installation since version 2020.3? We have decided to stop supporting the old framework and Visual Studio 2005. We have some difficulties with supporting different code snippets for legacy frameworks. If you continue to use the .NET Framework 2.0 in your applications, please email us or use .NET FastReport version 2020.2 or earlier. Can I use watermarks? You can, but they will look like a picture. Will there be a full-fledged HTML object for displaying HTML files? It is planned. Can I work with MSChart in FastReport .NET? Yes. Is there support for embedding RichText in .NET FastReport? Yes. Is there support for dialog forms in FastReport .NET? Yes. Where to look for sources after purchase? You need to download the product installer in your **[client panel](https://cpanel.fast-report.com/)** After installing the full version of FastReport .NET, reports continue to be generated with limitations. Delete FastReport.NET Trial. Make sure that there are no .NET FastReport libraries in the C:\Windows\assembly and C:\Windows\Microsoft.NET\assembly\GAC_MSIL directories. If libraries were found, delete them. Install the full version of the program. Is there a console installer? No. Can I add the report generator to my product so that my clients have the ability to modify reports? Or does each client need to purchase their own license? You can add the FastReport.NET designer for end-users without additional licensing. This means that you can add the report generator to the product without the source code and outside the development environment. Where can I get a trial or demo version with FastReport.Core.Skia? Upon request. What are the limitations in the trial version of FastReport .NET? The "DEMO VERSION" label is put on each page, and random fields are replaced. Will there be support for SkiaSharp (Replace System.Drawing.Common to SkiaSharp)? There is support for Skia. Are EMF, WMF image formats supported under FastReport .NET Skia? No, these formats are only supported on Windows, while Skia is a cross-platform library Is there support for Xamarin.Forms? No, it is not planned. Is there support for Blazor? Yes: both Server and WebAssembly. Is there support for Maui? No, it is not planned. Do you provide technical support for FastReport .NET? Yes, for clients with an active subscription. Is there support for WinUI? No, it is not planned. What types of web projects can FastReport.NET be used in? ASP.NET, ASP.NET MVC, .NET Core, Blazor Server, Blazor WebAssembly Is there a template designer in FastReport.NET? Yes, the designer is included in the product. Does FastReport .NET work on mobile devices? Now no, it is not planned. You can use the Web version. In which IDEs can I use FastReport .NET? Visual Studio, Visual Studio Code, JetBrains Rider, as well as any other editors that support .NET How do I save a FastReport .NET report in LaTeX? See more in the **[article](https://www.fast-report.com/blogs/export-latex-dotnet)**. What are the differences between FastReport .NET and Skia and GDI+? You can see it **[here](https://www.fast-report.com/blogs/fastreport-core-skia)**. How can I configure the display of certain export filters in the FastReport .NET preview? **[Article](https://www.fast-report.com/blogs/disable-printing)** My subscription has expired. Where can I download the latest available version? Write to us at **[support](/support)** and we will send you the latest version available to you. Is there a converter for templates from .FR3 to .FRX? Yes. **[Download link](https://www.fast-report.com/pbc_download/fr3tofrx.exe)** Can I use FastReport Online Designer with FastReport .NET? Yes, FastReport .NET can be used with Online Designer. FastReport .NET Ultimate and WEB Online Designer packages already contain Online Designer. For other packages you will have to buy Online Designer separately. Where can I go for FastReport .NET technical support? Users can send requests via email to **support@fast-report.com**, through the request form on the website from the **[client panel](https://cpanel.fast-report.com/)**, or online chat Is there an application to preview the prepared report? Yes, it can be used in commercial development, as long as you comply with the EULA. See **[file LICENSE.md](https://github.com/FastReports/FastReport/blob/master/LICENSE.md)** How to install your license packages into our product using Linux, MacOS or Windows? That said, we wouldn't have to install the latest version of FastReport products manually using an installer downloaded from a site that only works on Windows? We have prepared a universal solution to this question in the form of our private NuGet server Fast Reports. Read more about it in the next **[article](https://www.fast-report.com/blogs/private-nuget-server)**. If your subscription expires, you can continue to use the Fast Reports package source, but you will not have access to the latest versions of the packages. Therefore, the latest available version of the package will be determined by the condition: The release date of the selected version < The expiration date of the eligible subscription Important! If you try to download a package with a release date later than the end date of the eligible subscription, the Fast Reports NuGet server will return the most recent available version of the package according to your subscription. However, we do not recommend referencing an unavailable version of the package, as this leads to a Warning when restoring the project and delays the package download. How do I download the FastReport .NET package from nuget? See more in this **[article](https://www.fast-report.com/blogs/private-nuget-server)**. Is there support for Avalonia UI? Yes. See details of **[FastReport Avalonia](https://www.fast-report.com/products/avalonia)**. What are the fundamental differences between FastReport Open Source and the commercial version? The differences are presented in the **[table](https://www.fast-report.com/designers-comparison)** Where can I download the FastReport .NET CoreWin demo? It can be found by following the **[link](https://www.fast-report.com/downloads/fast-report-net)**. Where can I find the FastReport .NET documentation? It can be found by following the **[link](https://www.fast-report.com/public_download/docs/FRNet/online/en/index.html)**. Where can I find a FastReport .NET demo for ASP.NET? Here: **[Live ASP.NET demo](https://www.fast-report.com:2013/)** Where can I find a FastReport .NET demo for ASP.NET MVC? Here: **[Live ASP.NET MVC demo](https://www.fast-report.com:2013/razor/)** Where can I find a demo of FastReport .NET with Online Designer? Here: **[Online Designer demo](https://www.fast-report.com:2015/razor/Home/Designer)** Where can I find the FastReport .NET demo for .NET Core? Here: **[Live .NET Core demo](https://www.fast-report.com:2018/)** Where can I find a demo of FastReport .NET for Blazor Server? Here: **[Blazor Server demo](https://fast-report.com:5000/)** Is there support for Blazor WebAssembly? Implemented. Read about it in this **[article](https://www.fast-report.com/blogs/blazor-webassembly-manual)**. Is there WPF support? Yes, we have **[FastReport WPF](https://www.fast-report.com/products/wpf)** product. Where can I find the FastReport .NET demo application (trial version)? It can be found by following the **[link](https://www.fast-report.com/downloads/fast-report-net)**. How do I migrate a project from FastReport OpenSource to the commercial version of FastReport .NET? See more in this **[article](https://www.fast-report.com/blogs/Migrate-FastReport-Open-Source-to-FastReport-Core)**. Are named expressions similar to calculated fields in DevExpress supported in FastReport .NET? No, named expressions are not supported in FastReport .NET. I cannot add controls to the form in Visual Studio 2013. Make sure that FastReport.Editor.dll, FastReport.VSDesign.dll, FastReport.Web and FastReport.dll are registered in the GAC (see the directories from p. 3). If not, register them. For this open Visual studio tools folder(C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts), open Developer Command Prompt for..., and write on the command line ``` gacutil -i ""reference path+ name.dll""(gacutil -i ""Program Files\FastReports\FastReport.Net\Framework 4.0\FastReport.dll""). ``` **[Learn more about GAC registration.](https://msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx)** After that, add the FastReport controls to the Visual Studio Toolbox: right-click on the toolbar -> Choose Items -> Select FastReport.dll from the GAC and click OK. Can custom fonts be used? Yes, see the **[Article](https://www.fast-report.com/blogs/fonts-reports-without-installing)** Does FastReport .NET work on Linux? Yes, FastReport .NET supports Linux in Ultimate, WEB, Avalonia, and Mono packages. How to embed a report in HTML format in a message and send it by email using the code? Use this code snippet: ``` Report report = new Report(); report.LoadPrepared(""preparedreport.fpx""); HTMLExport htmlExport = new HTMLExport() { SubFolder = false, Navigator = false, Pictures = true, EmbedPictures = true, SinglePage = true, Layers = true, HasMultipleFiles = false }; EmailExport email = new EmailExport(); //email mailer settings email.Account.Address = ""Email@gmail.com""; email.Account.Name = ""Usename""; email.Account.Host = ""smtp.gmail.com""; email.Account.Port = 25; email.Account.UserName = ""Email""; email.Account.Password = ""password""; email.Account.MessageTemplate = ""Test""; email.Account.EnableSSL = true; //email addressee settings email.Address = ""Destinationaddress@gmail.com""; email.Subject = ""Embedding of html""; email.Export = htmlExport; //Set export type email.SendEmail(report); //Send email ``` How to hide buttons in FastReport .NET preview? **[Article](https://www.fast-report.com/blogs/disable-printing)** How to create a line with breaks in MSChartObject? First you need to create a `System.Windows.Forms.DataVisualization.Charting.Series` object, which is the basic for Series in MSChartObject and draw a line in it. Then you need to assign the created series to the object, which is basic for MSChartObject (MSChart1.Chart.Series.Add(series) Don't forget to include the `System.Windows.Forms.DataVisualization.dll` library (in the Report-> Script menu) and the System.Windows.Forms.DataVisualization.Charting namespace. Example of a line with breaks: ``` using System.Windows.Forms.DataVisualization.Charting; namespace FastReport { public class ReportScript { private void MSChart1_BeforePrint(object sender, EventArgs e) { Series series = new Series(""sample""); series.ChartType = SeriesChartType.Line; series.BorderWidth = 2; series.MarkerSize = 5; series.Points.Add(new DataPoint(0, 1)); series.Points.Add(new DataPoint(1, 2)); DataPoint dp = new DataPoint(2, double.NaN); dp.IsEmpty = true; series.Points.Add(dp); series.Points.Add(new DataPoint(3, 5)); series.Points.Add(new DataPoint(4, 8)); MSChart1.Chart.Series.Add(series); } } } ``` What are the system requirements for FastReport .NET? Hardware requirements: 1 GHz processor, 512 MB RAM Minimum disk space (32-bit or 64-bit OS): 20 MB Requires .NET support Minimum version .NET Framework: .NET Framework 4.6.2 Does FastReport .NET have a report object that allows you to upload a PDF document inside a report (similar to the TfrxPDFView object in FastReport VCL)? Not now. Does FastReport .NET work on CentOS and Debian? Yes, FastReport .NET Сore works on CentOS and Debian. Is the FastReport .NET report generator only for the Blazor server and not for hybrid mode? Blazor Hybrid is not supported. The Blazor, WASM, and Blazor Server platforms are supported now. Is there support for Uno? No, it is not planned. Is there support for Uno.WinUI? No, it is not planned. What type of licensing is used in FastReport .NET? The **[FastReport .NET License](https://www.fast-report.com/license/license-agreement-net)** is available at this link Can I connect a CSV file as a database and build a report? Yes, see more in the **[article](https://www.fast-report.com/blogs/build-daily-graphics-csv)**. How to render a report using WebApi + VueJs? **[Article](https://www.fast-report.com/blogs/fastreport-core-in-vue-js)** Does FastReport .NET support RFID label design and printing? It is available, read about it in the **[article](https://www.fast-report.com/blogs/rfid-tags-zpl-fastreport-net)**. ### FastReport .NET 1.1 released! URL: https://www.fast-report.com/news/fastreport-net-1.1 Summary: FastReport .NET 1.1 released! FastReport .NET 1.1 released! New version of lead product of Fast Reports for .NET-platform FastReport .NET 1.1 released! What is new? Version 1.1 --------------- + added new UI styles - Office2007Blue, Office2007Silver, Office2007Black, VistaGlass. You can choose the designer and the preview form appearance using the EnvironmentSettings component (its UIStyle property) + added CSV export + added Text/Dot-matrix export + added Designer.exe and Viewer.exe end-user applications + added DesignerControl control + added the "Format Painter" command to the standard toolbar + added two new system variables - "TotalPage#" and "Page#" + added design-time support for BindingSource + added the property "RTFExport.ImageFormat" + added HideIfNoData, NoDataText properties to BarcodeObject + added new demo project - MdiDesigner + added "Table/Fit Dynamic Table To Page" report + added "Dialogs/Cascaded Data Filtering" report + added "Interactive Reports/Interactive Matrix With Chart" report + added "Dialogs/Labels With Dialog" report + added Chinese (simplified) localization + added Arabic localization + added export of transparent colors and pictures (alpha blending) in PDF format + added export of lines, arrows, rectangle shapes, shadows in PDF format + added export of page watermarks in PDF format + added export of dash-dot patterns in PDF format + added export of horizontal and vertical lines, rectangle shapes, shadows in Excel(xml), RichText, OpenOffice and HTML formats * enhanced support of Unicode in PDF export * MSChart object moved to main FastReport.dll, no need to plug-in it anymore * FastReport.Dock library now replaced with FastReport.Bars - fixed bug with designer in Vista 64-bit - fixed bug with subreport & breaked band - fixed Matrix object bug (break spanned cell) - fixed bug with creating an event handler for multiple selected objects - fixed bug in PDF export with right border of table object - fixed focus lost when closing the preview window - fixed error with text justification - fixed error in data window (when you pass bad DataRelation object) - fixed bug in VS IDE (designer silently closes after you close the preview) - fixed bug with clipboard keys in TextObject in-place edit mode - fixed bug with MS SQL guid-type parameter - fix in business objects processing - fixed bug with subreport's PrintOnParent - fixed issue with printing static & dynamic TableObjects on the same band - fixed bug with report parameters - fixed bug with SQL parameters - fixed duplicate table names issue - fixed TableRow, TableColumn "Visible" property - fixed Matrix "Count" function - fixed bug with TableObject break - fixed bug with relations and empty data columns - fixed rotation of text in Excel(xml), RichText, OpenOffice, HTML and PDF export - fixed bug with subreport and "RepeatOnEveryPage" flag - fixed bug with inserting items of "generic" data type from "Data" window to a script - fixed bug with incorrect escaping of "Script" node content in the .frx file - fixed bug with delays in the designer when selecting a lot of objects - fixed bug with PictureObject.Tile - fixed bug with page breaks and margins in XML export - fixed bug with export of different border lines in Excel(xml), RichText, OpenOffice, HTML and PDF export - fixed bug with underlined and strikeout text in PDF export - fixed bug with borders of TableObject in PDF export - fixed bug with document title in PDF export FastReport.NET is a full-featured reporting solution for Windows Forms and ASP.NET. It can be used in Microsoft Visual Studio 2005 and 2008. It is compatible with .NET Framework 2.0 and higher. Main features: - own report visual advanced report designer. It does not depend on development environment and can be integrated to end-users' application; - optimized for corporate heavy load, big data mining processing and preparing really big reports. ### FastReport .NET 1.2 released! URL: https://www.fast-report.com/news/fastreport-net-1.2 Summary: FastReport .NET 1.2 released! FastReport .NET 1.2 released! What is new in version 1.2? + added Functions in the "Data" window + added new report objects - CellularTextObject, ZipCodeObject + added report's Email settings (see Report|Options... menu, "Email" tab) + added multi-frame TIFF export + added RC4 128-bit encryption in PDF export + added "Visible" flag in the highlight editor. Now the highlight condition may hide the object + added TextObject's AutoShrink, AutoShrinkMinSize properties + added DataBand's RowCount property + added ReportPage.ManualBuild event + added PictureObject.Angle property + added AfterData event to all report objects + added CommandTimeout property to all connections + added export of watermarks in HTML format + added export of underlined TextObject (Underlines = true) in PDF format + added Swedish, Chinese (Traditional), Czech, Turkish, Spanish localizations + added new demo reports in the "Report Objects" category + added new demo projects in the Demos folder * POSSIBLE BREAKING CHANGE! changes in the business objects engine.  * improved performance (loading and running reports with lot of objects) * you can use Anchor property of report objects when printing hierarchical bands * changed default extension of resulting file in Excel(XML) export from *.xls to *.xml * changes in Excel(XML) export - added export of numeric values * changes in Matrix object * improvements in hierarchical reports (header/footers, totals) - fixed bug in VB.Net report language - fixed bug in Viewer.exe (exception if window is too small) - fixed bug with selecting Report in the ReportTree in VS design-mode - fixed bug when using WebReport with MasterPage - fixed bug with RTL in HTML export and WebReport - fixed bug with RTL in RichText(rtf) export - fixed bug in MS Chart (border width is not scaled properly when printing) - fixed bug with preview window's "Search" dialog - fixed bug with Nullable column type - fixed bug in PDF export when exporting complex fills - fixed bug with export different frame styles in XML and RichText formats - fixed bug when editing prepared report - fixed printing of CellularTextObject - fixed bug with dialogue form - fixed bug with Entity Framework in ASP.NET mode - fixed bug in PageSetup dialog in preview - fixed bug with rendering side-by-side Matrix objects - fixed bug in Label wizard - fixed bug with send email via MAPI ### FastReport .NET 1.3 released! URL: https://www.fast-report.com/news/fastreport-net-1.3 Summary: FastReport .NET 1.3 released! FastReport .NET 1.3 released! What is new in version 1.3? --------------- + added monochrome TIFF export + added Excel 2007 export + added PowerPoint 2007 export + added MHT (web-archive) export + added DBF export + added ODBC connection + added Oracle ODP.NET connection + added ability to print copy name on the printed page (see  + "Features/Print Copy Names" report) added built-in support for  + cascaded data filtering (DetailControl property). See the  + "Dialogs/Cascaded Data Filtering" report added "apply" flags to the  + style elements added band's context menu items for easy creation of  + child band and detail data band added TextObject.NullValue property  + (to replace null values with specified string) added  + TextObject.ProcessAt property (allows to print totals in the header)  + added the ImageExport.MonochromeTiffCompression property added  + HTMLExport.WidthUnits, HTMLExport.HeightUnits properties (allows  + selection between Pixel and Percent) added the Message-HTML (MHT,  + MHTML, web-archive) mode in HTML export (HTMLExport.Format property)  + added Config.DesignerSettings.FilterConnectionTables event added  + DataSourceBase.Load event to load detail rows in code added Croatian  + localization added Persian localization added new demo projects in the  + Demos\VB.Net folder added "Script/Sort Group By Total" report * improved "Keep with data" mechanism - fixed bug with Matrix and Table objects (Visible property is not working) - fixed bug with MS SQL connection (can't use tables in schemas other than dbo.*) - fixed bug in Medium Trust mode - fixed bug in business objects (duplicate datasource names) - fixed bug in dialogue forms (switch to the dialog page may throw an exception) - fixed bug in query builder - fixed bug with OutlineExpression and RepeatOnEveryPage - fixed bug with KeepChild - fixed bug with exporting barcodes - fixed bug in dialogue controls (Enabled & data filtering) - fixed bug with RepeatOnEveryPage band with child - fixed Matrix&Table bug (infinite loop if there is not enough space to print a column) - fixed bug in PDF export (file structure) - fixed designer exception when copying the total - fixed exception when closing the designer - fixed bug with disabling the navigator in HTML export - fixed bug with size of WebReport in percents - fixed PDF export (digits substitution in Arabic) - fixed bug with sorting on a calculated column - fixed bug in the PDF export (export of band with zero height and non-solid fill) - fixed bug in the text/expression editor (drag&drop items from the data tree) - fixed bug in the Excel 2007 export - fixed bug in the printer settings dialog (printer properties) - fixed bug with Outline when several reports are joined into one - fixed search in the preview - fixed bug in the group when there is no data to display FastReport.NET is a full-featured reporting solution for Windows Forms and ASP.NET. It can be used in Microsoft Visual Studio 2005/2008 and Delphi Prism. It is compatible with .NET Framework 2.0 and higher.   With FastReport.NET, you can create application-independent reports. In other words, FastReport.NET can be used as a standalone reporting tool. ### FastReport .NET 1.4 released! URL: https://www.fast-report.com/news/fastreport-net-1.4-release Summary: FastReport .NET 1.4 released! FastReport .NET 1.4 released! Good news - New version of Fast report generator for .Net (FastReport .Net v.1.4) released! What's new? Version 1.4 --------------- + added Visual Studio 2010 support + added support of font subsets in PDF export added SQL CE connection  + added HierachyRow# system variable which returns the row number like  + "1.2.1" in the hierarchical report added support for table schema in  + OleDB and ODBC connectors added NumToWordsEs function for spanish  + added Dutch localization added Ukrainian localization added  + Config.ReportSettings.DefaultPaperSize property added HTMLExport.Print  + property (show the browser's print dialog when html document is  + opened, available only in "single page" mode) added  + HTMLExport.PageBreaks property (insert hard page breaks in "single  + page" mode) added ForceLoadData property to all datasources added  + band.FirstRowStartsNewPage property added Parameter.Description  + property added Config.TempFolder property added  + report.ReportInfo.PreviewPictureRatio property added  + DataBand.PrintIfDatasourceEmpty property added  + ChildBand.PrintIfDatabandEmpty property added  + Config.DesignerSettings.Restrictions.DontCreateData restriction to  + disable the "Data|Add Data Source..." menu - fixed bug with Row# and StartNewPage - fixed bug with Nullable custom functions - fixed bug with bands which CanBreak and StartNewPage properties set to true - fixed bug in HTML export (skip of styles when many pages exported in "single page" mode) - fixed bug with registration of plugins - fixed bug with dialog controls attached to a calculated column - fixed bug in the query builder (wrong join type) - fixed dialogue forms controls order - fixed bug with Dock != None and CanGrow, CanShrink - fixed bug in HTML export - fixed bug with "Save printer in the report file" option - fixed bug in Chart object (ClearValues method does not work) - fixed bug in the Data Wizard - fixed bug in totals when the "Convert null values" option is off - fixed bug with saving report as VB class - fixed outline in a hierarchical report - fixed bug in the Chart object (when trying to group unsorted data by months) - fixed bug in the Data Wizard under Vista OS - fixed bug with embedded TTC fonts in PDF export - fixed bug when exporting TableObject with invisible rows * improved "Data Wizard" dialog (loading the table list is much faster now) * designer command DesignerControl.cmdData replaced with cmdAddData and cmdChooseData commands * reduced the resulting file size in HTML export * improved performance with very deep business objects * tables in the "Data Wizard" window are sorted now, "Sort tables" button removed * small improvements in the Data window (ability to move up/down the report parameters using Ctrl+Up/Down keys) * the installer is now automatically adds all FastReport.Net assemblies to the GAC * assembly FastReport.dll split into two parts - FastReport.dll, FastReport.Web.dll ### FastReport .NET 1.5 released! URL: https://www.fast-report.com/news/fastreport-net-1.5-release Summary: FastReport .NET 1.5 released! FastReport .NET 1.5 released! What's new? Version 1.5 --------------- + added import from RDL format (Report Definition Language) + added XPS export + added Word 2007 (docx) export + added DataBand.ResetPageNumber property + added properties PDFExport.JpegQuality and PDFExport.RichTextQuality (default value is 90 in both) + added Slovak localization + added support for custom functions in the matrix totals + added calculation of percents in the Matrix object + added TotalsFirst option for the matrix totals + added property HTMLExport.Layers and a checkbox in the dialog of the HTML export (enable layers in HTML file) + added Config.ReportSettings.ReportPrinted event + added DataLoaded event to all dialog controls that support data filtering + added inline printing from browser in WebReport + added property WebReport.PrintInPdf (enable for PDF printing or disable for browser printing) + added properties WebReport.PrintWindowWidth, WebReport.PrintWindowHeight + added properties WebReport.ShowWord2007Export, WebReport.DocxMatrixBased * DbfExport properties FieldNamesFileName, LoadFieldNamesFromFile replaced with FieldNames property * improved TextObject.Duplicates - fixed text object's html tags + "underline" font style - fixed "keep with data" + multicolumn databand - fixed bug with paper size - fixed bug when rendering several side-by-side Table objects - fixed bug with report outline - fixed bug in RTF export with similar pictures - fixed bug with CheckedListBoxControl + cascaded filter - fixed bug with subreport and multi-column band - fixed bug with FirstTabOffset - fixed bug with static query parameters and master-detail report - fixed bug in the PowerPoint export - fixed bug with Matrix and EvenStyle  ### FastReport .NET 2013 released! URL: https://www.fast-report.com/news/fastreport-net-2013.1 Summary: FastReport .NET 2013 released! FastReport .NET 2013 released! Main news: 1. Dialogue forms in web-reports - now end-users can control the internet/intranet reports building (Web forms + Win forms and Professional Editions). 2. Now you can insert Map objects to a report. (Win Forms Edition and higher) 3. Save prepared reports in clouds (Win Forms Edition and higher). Full list of news in version 2013.1 --------------- + added dialogs in WebReport (some controls and features are in development now) + added Map object + added map editor in designer + added save in cloud Dropbox from preview + added save in cloud SkyDrive from preview + added AJAX in WebReport + added new customizable toolbar in WebReport + added AdjustSpannedCellsWidth property in Matrix and Table objects + added Wysiwyg property in Word 2007 export + added PrintOn.SinglePage to the PrintOn property (doublepass must be enabled) + added anchors support in the PDF export + added Armenian localization + added Label property to chart series - fixed bug when saving report to .cs/.vb file - fixed drag&drop bug in the code editor - fixed bug in the TXT export - fixed bug in the Word 2007 export in layer mode - fixed bug with number format in Excel exports - fixed bug in VB.Net code generator And that's not all - we plan to add more features soon. Check our daily builds. It is good time for order, upgrade or prolongation of FastReport.NET ### FastReport .NET 2013.2 MVC URL: https://www.fast-report.com/blogs/net-2013.2-mvc We have released FastReport .NET 2013.2 with MVC support. And I'd like to inform all WebReport developers about some changes. First . An extension of the handler in web.config was changed. You need replace old string «FastReport.Export.aspx» to new string «FastReport.Export.axd» everywere. Web application without these changes will throw an exception and you will see text with error and instructions for changes in web.report. You can check the handler of WebReport by typing in the address bar : http://site_address/app_folder/ FastReport.Export.axd (replace site_address and app_folder with your values). In the successfull request case you'll see FastReport version number and server time. Second. We have added support of ASP.NET MVC framework. You will not have any troubles with using our control in ASPX (MVC 2) – You'll just enough drag control from Toolbox to the page. WebReport will set all needed changes in web.config automatically. Let see the demo of WebReport in aspx in folder \Demos\C#\MvcDemo. Also I should say how to use the WebReport in Razor (MVC 3,4).  You will need add lines with handler defenitions in web.config in root folder of your web-application.  Add line in section for using in IIS7: Add line in section for using in IIS6: Then you should modify web.config in folder with Views.  Add lines in section : Add lines in file _Layout.cshtml in tag : @WebReportGlobals.Scripts() @WebReportGlobals.Styles() Now you can draw the report on the View . Go to the controller and create a WebReport : WebReport webReport = new WebReport(); // create object webReport.Width = 600;  // set width webReport.Height = 800; // set height webReport.Report.RegisterData(dataSet, "AppData"); // data binding webReport.ReportFile = this.Server.MapPath("~/App_Data/report.frx");  // load the report from the file ViewBag.WebReport = webReport; // send object to the View Go to View and add the line : @ViewBag.WebReport.GetHtml() Similar code to create WebReport you can also write directly in View. Let see the demo of WebReport in Razor in folder \Demos\C#\MvcRazor. There are various samples for load the report, including preprepared , and there is an example of using event StartReport. Do not forget to add the missing dll in bin directory . Tags: .NET, .NET, FastReport, FastReport, MVC, MVC ### FastReport .NET 2013.2 released! URL: https://www.fast-report.com/news/fastreport-net-2013.2 Summary: FastReport .NET 2013.2 released! FastReport .NET 2013.2 released! We glad to inform you about new version of FastReport.Net with support MVC is one of the most modern technology for web development. MVC is available in Win+WebForms and Professional editions. Read our blog to get more information. Besides, we added  Google Drive for saving your reports to the cloud.  + added support of ASP.NET MVC framework (ASPX, Razor) in WebReport + added new demos using WebReport in MVC - \Demos\C#\MvcDemo, \Demos\C#\MvcRazor + added save in cloud Google Drive from preview + added Greek localization * IMPORTANT! changed extension of WebReport handler (from FastReport.Export.aspx to FastReport.Export.axd), please check existing web.config - fixed bug in Dropbox export when Application Key and Secret - fixed bug in Dropbox with NullReferenceException - fixed bug with encoding when importing dDase file of Map in DBX export - fixed excel numeric formats bug - fixed bug with broken formats after matrix optimization in Excel 2007 export - fixed bug with font transparency of empty cells in Excel 2007 export - fixed bug with cell duplication on merged cells in Excel 2007 export - fixed bug with embedding of monospaced fonts in PDF and XPS exports - fixed bugs in WebReport with styles - fixed bug with WebReport.RepotDone - fixed bug with MasterPages in WebReport - fixed bug with printing chart legend - fixed bug in PictureObject ### FastReport .NET 2013.3 released! URL: https://www.fast-report.com/news/fastreport-net-2013.3 Summary: FastReport .NET 2013.3 released! FastReport .NET 2013.3 released! FastReport.NET presents new opportunity for building safe and secure application on FastReport.Service (WCF Service Library). This library can be used for stand-alone application Windows Service and Web-Service in your product. Also added new demos: WCFWindowsService, WCFWebService, WCFClient, WCFWebClient.  + added new object SparklineObject (compact chart based on MSChartObject) + added save to FTP from preview + added Windows Communication Foundation (WCF) Service Library FastReport.Service.dll + added demo of Windows Service \Demos\C#\WCFWindowsService with WCF Service Library + added demo of WCF web-service \Demos\C#\WCFWebService + added demo of WCF Windows client \Demos\C#\WCFClient + added demo of WCF web-client \Demos\C#\WCFWebClient + added new methods WebReportGlobals.ScriptsWOjQuery() and WebReportGlobals.StylesWOjQuery() for disable jQuery in WebReport (MVC Razor) + added property WebReport.ExternalJquery (default: false) for enable or disable jQuery in WebReport (ASPX) + added WeekOfYear function + added Slovenian localization * report.RegisterData(ds) replace existing datasources - fixed bug with the re-export to PDF from code - fixed bug in PDF export with print from Acrobat Reader with hyperlinks in document - fixed bug in Excel 2007 export with styles for multi-page report template - fixed bug in Excel 2007 export with empty page name - fixed bug in PDF export with double frame borders ### FastReport .NET 2015 with online web report designer URL: https://www.fast-report.com/news/fastreport-net-2015.1 Summary: FastReport .NET 2015 with online web report designer. New version of FastReport.Net 2015.1 included new online designer web-components. FastReport .NET 2015 with online web report designer. New version of FastReport.Net 2015.1 included new online designer web-components. New version of FastReport .NET 2015.1 included new online designer web-components. We started developing online designer for our users who want more opportunities in corporate reporting. You can open and construct report-templates and reports with this tool in any modern browser. Online designer works quickly and smoothly even on slow devices and this is definitely its strongest side. You can try here:  online visual report designer .  Do not forget to test in on tab computers! The online designer is available in Professional Edition only. You can get upgrade to highest edition in customer panel . Report construction becomes more pleasant and comfortable with each new version of FastReport. We added new interface styles and Ribbon toolbar in v. 2015.1. New styles: Office 2010 (Silver), Office 2010 (Blue), Office 2010 (Black), Visual Studio 2010, Visual Studio 2012 (Light), Office 2013. Others features: + added RESTful service in FastReport.Service.dll + added new Aztec, Plessey barcode + added GS1-128 (formerly known as UCC-128 or EAN-128) barcode. Currently supports only numeric values. + added new properties in WebReport: DesignReport, DesignScriptCode, DesignerPath, DesignerSavePath, DesignerSaveCallBack, PrintInBrowser, SinglePage + added property CSVExport.NoQuotes that disables quotation marks in CSV export * updated demos \Demos\C#\MvcRazor,\Demos\C#\WCFWebService,\Demos\C#\WCFWebClient * updated japanese, greek resources - fixed bug with export in PDF/A - fixed bug in WebReport with 'Access to the path \FastReport\ is denied' - fixed bug with memory leak in PDF export - fixed bug with Gauge object in Word 2007 export - reduced memory consumption in WebReport - fixed bug with caching of report results by browser in WebReport ### FastReport .NET 2015.2 is here! URL: https://www.fast-report.com/news/fastreport-net-2015.2 Summary: FastReport .NET 2015.2 is here! FastReport .NET 2015.2 is here! We are glad to announce the release of the newer version of FastReport .NET. The main changes include improvement of WebReport and On-line Designer objects interaction , bug patch and rework of the current functionality . And not only that. Here's a full change list: [Core] * updated Japanese resources - fixed bug with opening frx/fpx files with Unicode signature in begin of file - fixed bug with CantFindObject exception in report reader in WebMode - fixed bug with saving empty Excel 2007 files - fixed RichTextQuality in PDF export [Designer] + added Preview button in File menu in Ribbon toolbar [WebReport] + added export in Prepared report * page breaks in export to Excel 2007 from WebReport now disabled by default - fixed bug with exception CantFindObject in WebReport - fixed bug with preview from designer in ASPX mode - fixed bug with designer position - fixed bug with report load in designer in ASPX mode [Service] + added report exporting methods in Service [On-line Report Designer] + added barcodes Aztec, Plessey, GS1-128/EAN-128 + added support of hierarchical data arrays with BusinessObjects + added Aliases for data sources + added copy/paste of TableObject and MatrixObject + added enable/disable of rows/columns in tabled objects + added MatrixObject + added more space between bands + band height reduced twice on mobile devices + cancel of creating object by ESC + added scale of report page with "ctrl + mousewheel" + added save of report on keys "ctrl + s" + added corners highlight of selected objects + added objects SimpleGauge, LinearGauge * changed panels with properties and events * improved work with TableObject * changed design of trees in Report Tree, data and in Expression Editor * improved of parse of report with error reporting * the icons are same as in desktop designer * added tab View change of settings of grid and units * changes in style of object creation * changed search algorithm of objects on page with selection - fixed bug with duplicate component/bands names - fixed bug with cell deletion in table object - fixed bug with deletion of child bands in last band of page - fixed bug with band resize to 0 - fixed bug with save of included objects in frx report - fixed bug in TableObject with adding of rows and columns - fixed bug in TableCell with RowSpan and ColSpan - fixed bug with table witdh and height - fixed bug with selecting of non valid fields - fixed bug with showing of messages when toolbar is hidden - fixed bug with moving of child cells of table beside a left side - fixed bug with adding of new object on the mobile devices - fixed bug with create object on scaled page - fixed bug with create object inside a cell of table - fixed bug with positioning of LineObject in Firefox ### FastReport .NET 2017.3 URL: https://www.fast-report.com/news/fastreport-net-2017.3 Summary: FastReport .NET 2017.3 FastReport .NET 2017.3 In the new version of FastReport .NET 2017.3 we added 2 new barcodes: Intelligent Mail Barcode operated by USPS and MaxiCode that carries freight information during transport. Also added ability to attach files to the PDF which allows creating e-invoices in ZUGFeRD format. And there’s now an example of using FastReport .Net with ASP.NET Web API framework.  All changes: [Core] + added Intelligent Mail (USPS) barcode + added MaxiCode barcode + added property Report.ReportInfo.Tag + added property Report.ReportInfo.SaveMode + added support functions with optional parameters * added thread-safe collections support for .net 4 [Designer] + added ability of multi-line editing of Report.ReportInfo.Description and Report.ReportInfo.Tag - fixed bug with wrong width of different lines of border [Exports] + added ability to embed any file in PDF export with methods: PDFExport.AddEmbeddedXML, PDFExport.AddEmbeddedFile - fixed creating blank page after a table in RTF and Word2007 exports - fixed bug with bands Exportable property - fixed appearance of dates in Excel2007 export - fixed bug with padding and height of text in PDF export - fixed bug with black boxes in exports [Extras] + added new example for working with ZUGFeRD and PDF/A-3b \Demos\C#\ZUGFeRD + added new example for Web API \Demos\C#\Web\WebApi - fixed bug with relative path to JSON file in JSON connector [WebReport] + added properties WebReport.RequestHeaders, WebReport.ResponseHeaders + added catching of exceptions on call of WebReport.DesignerSaveCallBack - fixed page margins in printing from browser - fixed bug with lines in HTML export and WebReport - fixed TTF exceptions processing for PDFExport [Online Designer] + added support of new property ReportInfo.Tag in Report object - fixed muli-level view of childs links - property Padding can contain only integer values ### FastReport .NET and jQuery URL: https://www.fast-report.com/blogs/fastreport-net-jquery The object WebReport from FastReport .NET use jQuery library. You already can use this library in your own project. To avoid duplication of boot scripts and styles jQuery to the client browser when working with markup Razor, you need to use the following lines in _Layout.cshtml :         @WebReportGlobals.ScriptsWOjQuery()         @WebReportGlobals.StylesWOjQuery() instead of the others , which include all jQuery files :         @WebReportGlobals.Scripts()         @WebReportGlobals.Styles() You need to set the property ExternalJquery = true ( default false) when you working with ASPX markup . Tags: .NET, .NET, FastReport, FastReport, MVC, MVC ### FastReport .NET and Visual Studio 2017 URL: https://www.fast-report.com/blogs/net-compatibility-visual-studio In this article, I would like to do a test of compatibility of FastReport .Net and the latest version of MS Visual Studio Enterprise 2017. In the function of the first test, I will create a simple application in WindowsForms. Then, I will add the Report component and launch a report in the designer. First of all, you need to add FastReport components into the Toolbox. To do this, open the Toolbox, and right-click on it. In the context menu select "Add Tab": I named the tab "FastReport". Now you need to add components to this tab. Right-click on the tab. Select the “choose items“ from the context menu: There will a window of components selection for the toolbox appear: Click the "Browse" button: Then, select the libraries FastReport.dll and FastReport.Web.dll from the folder "FastReports/FastReport.Net/Framework 4.0". FastReport.Net components have been added to the tool palette. Drag the Report component and two buttons to the form: Double-click on the first button, and add the following code: ``` private void button1_Click(object sender, EventArgs e) { report1.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); report1.Prepare(); report1.Show(); } ``` Here, we load a report into the Report object. Then, we build a report, and ,f inally, we display it. Now double-click the second button, and add the following code:        ``` private void EditReportBtn_Click(object sender, EventArgs e) { report1.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); report1.Design(); } ``` Also, load the report into Report object, and call the editor for this report. Now run the application and test it. First, click the first button. This way, we are getting our report in preview mode: If you click the second button, the report designer will be launched: So, we are convinced, that FastReport.Net reports are built and run in the designer in the new version of MS Visual Studio 2017. Now let us examine website reports. To do this, create an ASP.Net application, filled with examples. Open a Default.aspx Web page and witch to a visual editing mode:  Now, drag a WebReport component on a Web page from the toolbox:  I deleted unrequired content from this page and left only the title and the report object. In the upper right corner of the WebReport object there is a dropdown menu. Click it and select the Design Report. In the Report Designer open the desired report and close the designer. The report has already got into cache. Now run the Web application: Well, a web report can also work in VS 2017 without any problems. The article has increased our knowledge in the basic functions FastReport.Net, and all of them successfully work in the new version of Visual Studio. Summing up the results of the test in the article, it is possible to conclude, that there is a full compatibility of FastReport.Net 2017.1.18 and Microsoft Visual Studio 2017 RC Enterprise. Tags: .NET, .NET, Visual Studio, Visual Studio, FastReport, FastReport ### FastReport .NET bands URL: https://www.fast-report.com/blogs/fastreport-net-bands A report page in FastReport.Net must contain at least one band - a container for objects. But for one it might seem too complicated. Why don't we place objects directly on pages without additional containers? However, it is rather difficult to imagine how the system would work without using any bands. The containers are clearly divided according to their functionality and display order. Headings will always be at the top, data - in the middle, and the totals - at the bottom. We can rearrange the data anyhow in a band and this does not require creating special tables. In order to learn how to work in FastReport.Net, you need to study the bands. This is the fundamentals. So, in this article, we will consider what bands are presented in FR.Net. We will study their purpose, the order of output in the construction and their behavior. Here is a list of all available bands: Report title - is displayed once at the very beginning of a report, but it is possible to output it after the Page Title; Report footer - is displayed at the very end of a report, but before the foot of a page; The title of the page - is displayed at the beginning of each page; Page footer - is displayed at the end of each page; The title of the column - is displayed at the top of each column; Cellar column - is displayed at the end of each column; Data - is the most important band as it "knows" how to display all the data from the source. It means that it is displayed for each line of data in the source, which it is connected to. The "Data" band is displayed after all the header bands; Data header - is displayed once before the "Data" band, which it is attached to (there may be many "Data" bands and you can add header data for each); Data cellar - is displayed once immediately after the "Data" band, which it is attached to; Group header - appears after a page header or a column header, but before the "Data" band; Group cellar - is displayed after the "Data" band; A child - can be created for any band. It inherits the type of the parent band; Background - just a background for each page of the report. Let us take a close look at how the bands are built in the designer on the report page: In the given picture the report page looks like a layered pie. The data is output approximately in the middle of it. However, this is just a template. In a constructed report everything looks differently because many bands are displayed several times. It is essential to understand the order of them, that is, which band will be displayed next. In this case, there will be no questions when creating a report. With header bands everything is more or less clear. They are intended for displaying report headers and column headings of tables: The footer bands are used to output the total sum according to data, a number of lines or a page number. The most interesting band is the "Data" band. As it was mentioned earlier, it connects to the data source: It only displays data from the selected table. If you need to display data from several tables, you will have to create other "Data" bands. The given image shows that in addition to selecting the data source, sorting and filtering are available too. This is very convenient, and it eliminates the necessity to sort and filter the data when creating the source. In addition, the filtering condition can contain a parameter, the value of which we will pass from the dialog form or through the URL (for web reports). Now let us overview a usage of container-bands. We can print data from the table the following way: Or this way: In the first example, we have displayed a traditional list, whereas in the second one - we have compiled the fields into the employee's card. In both cases, it is just one data line. The band allows to place objects within itself freely. Let us consider the following simple list with date: As you can see, some of the data has been transferred to the other line, but the next line is displayed at the top. You can set the band property "Can grow" for the band: The same property is enabled for text objects, whose data is not displayed completely: Now the data is fully output. The band itself chooses the height, depending on the size of the objects, located inside. Objects have many other properties, which are responsible for displaying. In the context of the "Data" band I would like to talk about the "Child" band. Usually the "Chld" band is used in conjunction with the "Data" band. This link is used for reports like "Master - Detail". In his case, the associated tables are used: As it is seen in the picture, the main "Data" band has a subordinate "Data" band. Thus, the subordinate "Data" band is displayed every time after the main one. For each entry in the Categories table, the records of the Products table, corresponding to the key field, are displayed. This is how it looks when displaying: If you display the Products table not in the subordinate "Data" band, but in a separate one, you get the following picture: First, all the bands of the Categories table will be displayed, and after, all the bands of the Products table will be displayed too. Now a few words about the columns. The "Data" band can be set to display data on the columns. In this case, the "Column header" band and the "Column footer" band will be used. For example, let us set a number of columns "2" in the properties of the report page: Here is the result: The number of columns is unlimited. The report page has 2 more interesting properties: "Unlimited Width" and " Unlimited Height" of a report. Infinite width is relevant for growing breadths of matrixes. The matrixes can increase their height. So, we include both  of these properties and get a giant matrix: To see the data, you have to print it on a plotter. It appears, that the properties have been created exactly for plotter printing or printing in a large format. Let us examine the "Group header" band and the "Group footer" band. Usually they are used in pair. When you add the "Group header" bands, the basement is automatically added, and the "Data" band is located between them. As you understand from the name of bands, they form groups. To group the data, it is necessary to set the condition: In this case, the process of grouping will be conducted according to the first letter of the product name. A group cellar may contain a sum total for the data or the amount: The "background" band is used to display a background image, filling or a gradient. It is displayed on each page of your report. However, it is possible to configure the pages, for which it should be displayed: The height of the part of a page, which is to to be painted, is adjusted by stretching the band. In this article we have examined the main aspects of the useges of the bands in FastReport.Net. Tags: .NET, .NET, FastReport, FastReport, Filtering, Filtering ### FastReport .NET Core URL: https://www.fast-report.com/blogs/fastreport-net-core FastReport .NET 2017.4 now supports .NET Core, so users can utilize FastReport .NET in Windows, Linux and Docker containers. For using it under Linux one needs XServer, the "libgdiplus" and the "libx11-dev" libraries. The package includes a demo version, which allows to check whether FR.Net is working on your device. It can be found in the "\Demos\Core\FastReportCore.MVC" folder. FastReport .NET Core corresponds with .NET Standard 2.0. Now you can connect FastReport .NET Core using the NuGet package manager. To connect FastReport .NET via NuGet you need to: - Open the VisualStudio settings and go to the "NuGet Package Manager" -> "Package Sources"; - Add a new package, using the green plus button; - Enter the desired package name in the "Name" field; - In the "Source" field, select path to the FastReport repository (by default in C:\Program Files\FastReports\FastReport.Net\Nugets); - Click "Update", and then click "OK".  Now you can find and download FastReport .NET Core in NuGet. At the moment, there is no WebReport. Dialogs, charts (MsChart) and RTF (RichObject) are not supported, but all these things are planned to be established within a short time. There are no SQL connections, but the CSV and the XML connections are built in. If you want to use the SQL connection, you need to use the additional library and register the data from the application. There is also no visual designer, but a support to work with the online designer is planned to be provided. You can get a prepared report (*.fpx) from the report template (*.frx) or get documents (pdf, html, etc.). To start working you need 3 additional libraries from NuGet: a) System.Drawing.Common ; b) Microsoft.CodeAnalysis.CSharp; c) Microsoft.CodeAnalysis.VisualBasic. Tags: .NET, .NET, FastReport, FastReport, Core, Core, Libgdiplus, Libgdiplus ### FastReport .NET documentation URL: https://www.fast-report.com/news/update-documentation-net Summary: FastReport.NET documentation FastReport.NET documentation The full user documentation for FastReport.Net is now available in German . You can download it  here ! ### FastReport .NET documentation is now available in Turkish URL: https://www.fast-report.com/news/documentation-net-turkish Summary: We are happy to inform you that the FastReport .NET documentation is now available in Turkish! It will help you work with our report generator more comfortably in your native language. We are happy to inform you that the FastReport .NET documentation is now available in Turkish! It will help you work with our report generator more comfortably in your native language. We are happy to inform you that the FastReport .NET documentation is now available in Turkish! It will help you work with our report generator more comfortably in your native language. You can access the documentation here. We hope this update makes working with FastReport .NET easier and more convenient for you. ### FastReport .NET is one of the best Reporting, Analysis and Visualization tools URL: https://www.fast-report.com/news/readers-choice-award Summary: Visual Studio Magazine Announces 2022 Reader's Choice Award Winners! FastReport .NET received 3rd place according to the Visual Studio Magazine Announces. Visual Studio Magazine Announces 2022 Reader's Choice Award Winners! FastReport .NET received 3rd place according to the Visual Studio Magazine Announces. FastReport .NET won bronze in the Reader's Choice Awards by Visual Studio Magazine!  Our reporting engine for .NET received the 3rd place in the "Reporting, Analysis and Visualization" nomination. We are happy to share the stand with Devexpress and SAP Crystal Reports. Thank you for choosing us!  ### FastReport .NET on mobile devices URL: https://www.fast-report.com/blogs/net-mobile-devices Modern mobile technologies provide worldwide access to any information. FastReport .NET brings reports in your favorite tablet or phone, and helps you communicate with dialogs. Today we test preview of the reports FastReport .NET on some mobile devices with touch-oriented UI. We have created the web application to generate sample report of FastReport .NET together with MVC ASP .NET Framework. All screenshots are clickable. I show original screenshot of report from desktop application. WebReport class of FastReport .NET build a report and convert it to HTML. At the stage of building HTML we have a several limitations. All objects are converted to a tabular format that can have some distortion when displaying any overlapping objects. Also, some types of background fills are unavailable because of reducing of traffic. Toolbar of object WebReport specially developed for using with the touch screen. For example, we open a zoom menu on tapping on the magnifying glass icon and apply scale with tap on the zoom value. The toolbar supports the large buttons, which also help in the preview of the report. When you create a report, you should remember that some fonts may not be available on various mobile platforms. In particular, our test report uses the font Tahoma, which is missing in iOS. Let's go testing. The first device is tablet Asus Nexus 7 with the operating system Android and 7" screen. Asus Nexus 7, Google Chrome: Asus Nexus 7, Boat browser: Asus Nexus 7, Firefox: Asus Nexus 7, Firefox - report with dialog: Next item is tablet Apple Ipad 3 with 10" screen. Tahoma font is missing in iOS as you see. Report with dialog on iPad3: Finally, a few screenshots from the mobile phones. Apple Iphone 5: Sony Xperia Mini Pro: Conclusion: FastReport .NET supports displaying in mobile browsers with touch-oriented UI, but you should take into mind the features of mobile systems in the development of reports. In particular, you need to use a font that is present on all mobile platforms. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, MVC, MVC ### FastReport .NET packages and .NET 5.0 URL: https://www.fast-report.com/blogs/fastreport-net-packages-net-5.0 Summary: We tell you about the support .NET 5.0. on Windows OS in FastReport.NET.Demo packages , FastReport.NET , FastReport.NET.Pro . We tell you about the support .NET 5.0. on Windows OS in FastReport.NET.Demo packages , FastReport.NET , FastReport.NET.Pro . We tell you about the support .NET 5.0. on Windows OS in FastReport.NET.Demo packages , FastReport.NET , FastReport.NET.Pro . UPD: Applies to the versions of FastReport .NET before 2022.2. License packages are now available on our  NuGet server . With the release of FastReport .NET 2021.1 we’re happy to announce two important things: addition of the FastReport.NET package and the support of .NET 5.0. .NET5.0 support was added for FastReport.Core and FastReport.CoreWin (special version of FastReport .NET with UI for .NET Core3.1 and .NET 5.0 that’s built for OS Windows). Package FastReport.NET works only on OS Windows and is available in several editions: FastReport.NET.Demo - This package is available at nuget.org and in our official Trial installer, and it allows you to evaluate the product capabilities for various target frameworks on OS Windows. It has restrictions that are present in our other Demo edition products (5 page limit for exports, watermarked export pages, etc.). It includes FastReport .NET for .NET Framework 4.0 and higher, FastReport.CoreWin for .NET Core 3.1 and for .NET 5.0 and higher. FastReport.NET - This package is available in our official installer for licensed owners of the following editions: FastReport .NET WinForms and FastReport.Net Web. It includes FastReport .NET for .NET Framework 4.0 and higher. FastReport.NET.Pro - This package is available in our official installer for licensed owners of the following editions: FastReport.NET Professional and Enterprise. It includes FastReport .NET for .NET Framework 4.0 or higher, FastReport.CoreWin for .NET Core 3.1 and for .NET 5.0 and higher. We have listened to our clients’ feedback and decided not to add a -demo suffix for the Demo editions, because nuget treats packages with the suffix after a dash ‘-’ as prerelease packages, and a lot of people couldn’t find our product on nuget.org because of this. To have the Demo package displayed in the Visual Studio‘s search, you had to check the “Include prerelease” checkbox: In the close future we will fix this situation for the FastReport.Core-demo package and it will be called FastReport.Core.Demo. Tags: .NET, Visual Studio, FastReport, Core, C#, .NET5, NuGet ### FastReport .NET released! URL: https://www.fast-report.com/news/release-fastreport-net Summary: FastReport .NET released! FastReport .NET released! We are glad to announce a new product - FastReport.NET.  FastReport.NET is a full-featured reporting solution for developers who use Microsoft Visual Studio 2005 and 2008. FastReport.NET is written in C# and compatible with .NET Framework 2.0 and higher. ### FastReport .NET report types URL: https://www.fast-report.com/blogs/net-report-types In this article we are going to demonstrate the types of reports, that we can create in FastReport .NET. An inexperienced user of our report generator might think that the reports are only lists or grouped lists. However, the capabilities of the report generator are much wider than just displaying some lists of data. Due to the built-in script and dialog forms, reports can have logic. Charts and embedded maps allow you to transfer your reports from simple accounting to an information-cognitive area. Here is a list of report types: 1) Simple list; 2) Master-Detail; 3) Master - Master; 4) Report with grouping; 5) Label; 6) Multi-column report; 7) "Booklet" report; 8) Subreport report; 9) Inherited report; 10) Report with a chart; 11) Report with cards; 12) Matrix report; 13) Report with a dialogue form; 14) Report with the script; 15) Interactive report.  But first things first. So, the first type of report: 1)      Simple list. provides simple displaying of data from a database table in one list like a page in Excel. It can be only one table or data from key-linked tables, but they are displayed in one data band. For example: Or like this: In the example, we have just arranged the fields from the data source vertically. This type is the most common because it is simple and quick at creating reports. 2) When we need to output data from different tables, linked by a key, we can use the  Master-Detail type. Here, the data for each table is output in different Data bands. However, there is only one main band and there is its subordinate band. This means that for each record in the main band, all records ,corresponding to the key in the subordinate band, will be displayed. Using this way it is convenient to display, for example, categories of goods with lists of goods: 3)      Master - Master. In the previous example, we used two Data bands. One of which depended on the other one. A report like "Master - Master" also uses several Data bands, but they are not connected and do not depend on each other. In fact, they are several separate lists, which are displayed sequentially. 4)      Report with grouping. It is clear from the name of the type, that here we speak about grouping of data according to all  given conditions. For example, grouping by the first letter of the product name: As a result, we have a visual list with a division into groups. There and then, you can organize a report outline, where groups will be displayed. When selecting groups in the report outline, you will be moved to the corresponding group in the report: 5)      Report "Label".   It allows you to use the label templates. There is a set of built-in label templates from different manufacturers: You can also create your own template, in which you will specify the size of the label and the number of labels on the page: This way you can create labels of the right size. Let us take a look at the example: 6)      Multi-column report. This type of a report can be combined with any other type. Its essence is in splitting the data into columns, like on a newspaper page. You can specify the number of columns in the page settings. Another option is to adjust the number of columns in the properties of the Data band. This type of a report is for you if you display several columns on a page and you would like to use the rest of the empty space. 7)      Report type "Booklet". The essence of this type of reports is to provide your report with some presentability, namely, a title page, a table of contents and conclusion. Such a booklet can be printed and distributed in paper form as a finished document. This can be achieved by adding new pages to your report. You add the necessary pages and then build in the desired order by dragging tabs of the pages to the left at the bottom of the designer. This is how a multi-page "Booklet" type report looks like: 8)      Subreport. This type of reports allows to put a report into another one. That is, you put a "Subreport" object in the desired place in your report. This creates a new report page, on which you design a subreport. When building a report, where the object is placed, the embedded report will display a report, that you have constructed on another page. After that, the output of the main report items will continue. One may say: why should I make a separate report on the other page, if it can be done the same on the first page without a nested report? It is partly true. If a report is not complex, there is no point in dividing it into different pages indeed. The advantage of embedded reports is obvious, when creating complex, overloaded with a large number of report elements. After all, if you need to rearrange your complex report, it will require moving a large number of elements on the page. The process of formatting will be violated. This is all very time-consuming. Concerning an embedded report, you simply move the subreport object to the other location on the page and that is all. Also, there are no problems with formatting. Here is an example of a nested report: Pay attention to the white area. This table is derived from a nested report. Look at the report template: We can arbitrarily change the embedded report and at the same time it will always be displayed in the right place without violating the formatting. 9)      Inherited report. In the continuation of the topic with embedded reports, we will also examine the inherited ones. In this case, you have a base report in a separate file. Then you create the inherited from the base report and have the template already prepared. You just add new items. In this case, you can always change the base report, and in all inherited reports, its template will also change. This is the main advantage of the inherited reports. When can this be useful? For example, you create a series of reports for an enterprise. A report from the series contains a header with the name of the company and other data - this is a template, adopted for all documents of the enterprise. If the address of the company or phone, or any other parameter changes, you will need to make only one edit in the base template, not in each of the reports, created for the enterprise. D you agree, that it is convenient? How to make a base template?  Create a new report and decorate it in the style of an enterprise template. How to make an inherited report? Create a new report and select "Inherited report": You will be prompted to select the base report file on the local disk. 10)   Report with a chart . Maybe I should not consider this type of reports  a separate one because you can embed the chart in any of the previously discussed types. But you still should to pay much attention to the diagrams. Most of all, charts are placed in separate reports or on separate pages. FastReport offers an impressive set of chart types: Diagrams can be three-dimensional. You just need to mark the parameter when creating your series. 11)  Report with a map.  The same as charts, you can build maps into your reports. You load a map file into a Map object and you can view it in the report, using a mouse like Google maps: I would like to say, that you can move your map by dragging it with the mouse, and also zoom it in, using the scroll wheel. Such a report gives some kind of interactivity. A user interacts with a report to obtain the necessary information. In addition, you do not need to download maps as pictures, which will take up a lot of space. The interactive map is convenient and compact. 12)   Matrix report (summary). You may have encountered (cross-tabulated) tables in Excel. However, it is important o remind you what a cross table is. It is a table with two inputs, one of which is columns  and the second one is a row. At the intersection of a column and a row there is a cell with data. The simplest example is the multiplication table: A typical matrix. The same way, you can compose the data, for example, on sales: We deduce the sales amounts for each employee by years. In this format, it is very convenient and fast to analyse large data. Look at what the same data would look like in a simple list: Indeed, it is not convenient to examine such a list. How to deduce this amount of data for each employee? You should group it. All this causes inconvenience and consumes time for analysis. Thus, a matrix makes it possible to structure and summarize large amounts of data, which is a sort of simplification of OLAP. 13)   Report with the script. As you already understood, the examined reports in FastReport have a built-in script, that allows you to manage the report objects in the code fully. Each object, as it is supposed, has events in addition to properties. For example, using the BeforePrint event, you can convert data before displaying. After the AfterPrint event, you can automatically send the report by email: FastReport .NET allows to write a script in two languages C # and VB .NET. The data-processing tool in the report generator is extensive, but there are still situations when it is not enough. In such cases, it is better to apply the report script. Thus, the script allows us to: - manage the display of report objects (color, location, visibility, etc.); - convert data - perform complex calculations or transform data types; - manage the formation of some objects, such as matrix or table (add / delete columns and rows). For example, here is such a simple handler for the BeforePrint event for a text object, that allows it to be shifted with each subsequent displaying: ``` private void Text1_BeforePrint(object sender, EventArgs e) { Text1.Left = left; left += 30; } ``` 14) Report with a dialogue form . Reports of this type contain one or more dialog forms, that are displayed before the report is built. Thus, you can back up any data on the form and manage the report's behavior. For example, you can select some data to filter: And the drop-down lists are filled with data from the source. A fairly large set of controls is available for the dialog form. I think all your needs they will satisfy. Basically, dialogs are used for filtering or setting the value of report parameters. However, you can place controls on the form, and in the report script you can process the values of these elements and control the report's behavior: hide bands, sort data to open lists, etc. 14) Interactive report. This is a report, that allows a user in addition to view information and interact with it. For example, clicking on an item moves to the specified location in the report, or build a detailed report on the other page. Any of the presented reports can be interactive. You just need to add a hyperlink or create a report plan, which you can use to navigate through groups or specific values. For example, here is a list of categories with hyperlinks: Click on the hyperlink: Then, get a detailed report for this category. So, in this article we have examined the main 15 types of reports, that you can build with FastReport .NET. This set should be enough for all the events of life, and if not - soon there will be new ones. Tags: .NET, .NET, FastReport, FastReport ### FastReport .NET WCF - simple example URL: https://www.fast-report.com/news/simple-example-wcf-blog Summary: FastReport .NET WCF - simple example FastReport .NET WCF - simple example Today we review the simplest way to use the library FastReport.Service.dll as WCF service. This  example  does not require programming and is intended for testing of library and configuration file. To complete the task , we use  the program WcfSvcHost.exe, that comes with Visual Studio Read more... ### FastReport 2.54 VCL URL: https://www.fast-report.com/news/fastreport-vcl-2.54 Summary: FastReport 2.54 VCL FastReport 2.54 VCL - added Delphi 2005 support - bug fixes ### FastReport 3 beta testing URL: https://www.fast-report.com/news/fastreport-3-beta-test Summary: FastReport 3 beta testing FastReport 3 beta testing Welcome to beta testing of the FastReportT 3!  Rewritten class architecture.  Storing reports in XML format.  Full WYSIWYG (now for text objects too).  Text rotation 0..360 degrees.  Memo object supports simple html-tags (font color, b, i, u, sub, sup).  Styles.  Text flow.  URLs, Anchors  Dot matrix reports.  One script in the report (like an unit in the Delphi).  Multi-language architecture allows you to use many languages (Pascal, C++, Basic, Java).  Access to any object inside your application (in case you've allowed this). Standard libraries to access to base classes, controls and forms. Easily expandable library architecture.  Debugger  Improved Object Inspector.  Zooming.  Rulers, guides.  Wizard for base type reports.  Full Undo/Redo. ### FastReport 3 Enterprise Client/Server URL: https://www.fast-report.com/news/fastreport-vcl-3-enterprise Summary: Standalone server application (without the need of IIS, Apache or other web-server technologies) has a big performance, low response time, low use. Standalone server application (without the need of IIS, Apache or other web-server technologies) has a big performance, low response time, low use. - standalone server application (without the need of IIS, Apache or other web-server technologies) has a big performance, low response time, low use of system resources, in compare with solutions based on CGI technology; - run any reports on the server side, on client request, without direct connection of the client to the database server; - use of HyperText transfer protocol (HTTP, RFC 2068 [2]) allows you to use many of existing applications such as web-browsers (Internet Explorer, Netscape Navigator, Mozilla, Opera etc), proxy-servers, web-servers (Internet Information Server, Apache etc), together with FastReport 3 Enterprise without any additional requirements; - managing the connection logs, error logs, any additional system information, allows you to keep a statistics, quickly track down the bugs and unauthorized access attempts; - use of authentification and allow/deny IP lists allows you to restrict the access to the server; - you can use FastReport client components for interaction between your client application and the server. You can use any web-browser as well; - your reports may have a dialogue forms that will be used for entering some values before running a report; - supported formats of the prepared reports are: HTML, PDF, RTF, XML, XLS, JPEG, Text. ### FastReport 3 Enterprise Client/Server Demo URL: https://www.fast-report.com/news/fastreport-vcl-3-demo Summary: The server part (the FRServer.exe file) represents a powerful HTTP server with a capacity of report generation in HTML, PDF, RTF, XLS, XML, TXT. The server part (the FRServer.exe file) represents a powerful HTTP server with a capacity of report generation in HTML, PDF, RTF, XLS, XML, TXT. FastReport 3 Enterprise Demo contains compiled server and client programs. The server part (the FRServer.exe file) represents a powerfull HTTP server with a capacity of report generation in HTML, PDF, RTF, XLS, XML, TXT, JPEG formats, and also in the FastReport 3 (FP3) native report. The usage of any HTTP browser can be used as a client (Internet Explorer, Mozilla, Opera etc.). For query and displaying of files in the FastReport 3 (FP3) format it is necessary to use the Client Demo contained in the delivery package (the FRClient.exe file), built on the basis of the FastReport 3 Enterprise client components. Download demo now ### FastReport 3.01 URL: https://www.fast-report.com/news/fastreport-vcl-3.01 Summary: FastReport 3.01 FastReport 3.01 + added German, French, Ukrainian, Brazil, Hungarian resources + added TfrxReport.EnabledDatasets property + added TfrxCrossView.PlainCells property + added separate packages for DB and IBO + added separate FastScript packages for DB, BDE, IBX, ADO * changes in RTF and PDF exports - bug fixes ### FastReport 3.02 URL: https://www.fast-report.com/news/fastreport-vcl-3.02 Summary: FastReport 3.02 FastReport 3.02 + added Serbian resources + added DelphiFastZLib library instead of zlib standard unit to avoid   conflict between FR3 and JediVCL + added group/ungroup feature in the designer + added utility for quick recompiling FR packages * changes in the Chart object - require to rebuild your reports that contain    the Chart object! - bug fixes ### FastReport 3.03 URL: https://www.fast-report.com/news/fastreport-vcl-3.03 Summary: FastReport 3.03 FastReport 3.03 + added Czech, Turkish resources + added TfrxUserDataset.Fields, TfrxUserDataset.OnGetValue properties + edition 1.01 of the documentation (page numbers added) + added TfrxDataBand.KeepHeader property - bug fixes ### FastReport 3.04 URL: https://www.fast-report.com/news/fastreport-vcl-3.04 Summary: FastReport 3.04 FastReport 3.04 + added Taiwan, Italian, Slovene, Spanish, Catalon, Dutch resources + added "frxPBarcode.pas" unit for PSOFT BarcodeLibrary ( http://www.psoft.sk ) + added DayOf, MonthOf, YearOf functions + added "Multi-language wizard" for quick creation of the multi-language resource file + added TfrxReport.OldStyleProgress, OnProgressSTart, OnProgress, OnProgressStop properties - bug fixes ### FastReport 3.05 URL: https://www.fast-report.com/news/fastreport-vcl-3.05 Summary: FastReport 3.05 FastReport 3.05 - added TfrxReport.ShowProgress property  - bug fixes ### FastReport 3.07 URL: https://www.fast-report.com/news/fastreport-vcl-3.07 Summary: FastReport 3.07 FastReport 3.07 + added Delphi2005 packages + added TfrxReport.Modified property + added TfrxReport.EngineOptions.DestroyForms property + added Polish, Swedish, Romanian resources + added expressions support to the Cross-tab object * changes in aggregate functions call: <> symbols aren't needed anymore * changes in IIF function: now it works like macro + Forms support by TfrxReportClient + Report cache on server side + CGI wrapper for using with Apache/IIS (see cgi_readme.txt) - bug fixes ### FastReport 3.08 URL: https://www.fast-report.com/news/fastreport-vcl-3.08 Summary: FastReport 3.08 FastReport 3.08 + added TfrxMemoView.Clipped property + added TfrxReport.OnAfterPrintReport event + added baClient to Align property + added Danish, Chinese resources + now you can use national chars in the script identifier names + added TfrxPDFExport.PrintOptimized property + improved speed of the Excel export filter + added log rotate function in Client/Server version - bug fixes ### FastReport 3.09 URL: https://www.fast-report.com/news/fastreport-vcl-3.09 Summary: FastReport 3.09 FastReport 3.09 - improved HTML export filter - bug fixes ### FastReport 3.10 URL: https://www.fast-report.com/news/fastreport-vcl-3.10 Summary: FastReport 3.10 FastReport 3.10 - added Swiss, Portuguese, Latvian resources - added TfrxReport.OnEndDoc event - added TfrxReportServer.OnAfterBuildReport event - improved export filters - added shadows in HTML, PDF, XLS, XML, RTF exports - added page frames in HTML, PDF, XLS, XML exports - added backgrounds in HTML, PDF, XLS, XML exports - added resources for navigator in the HTML export filter - added TfrxXLSExport.AsText property - added outline in PDF export filter (TfrxPDFExport.Outline proper - added TfrxPDFExport.Author, TfrxPDFExport.Subject properties - added "Stream" property in all export filters - fixed the bug of the diagonal line export - fixed numbers format bug in XML export filter - fixed the bug of greek symbols export to PDF format - fixed the bug print of the report result after using the dialog form - fixed the bug of the multiple show the same dialog web form - report session bug fixes - fixed the bug of log rotate function properties - fixed the bug of the thick lines print on the second page - fixed the AV bug on the many pages export (more 50 pages) ### FastReport 3.11 URL: https://www.fast-report.com/news/fastreport-vcl-3.11 Summary: FastReport 3.11 FastReport 3.11 + added Greek resources + added HTML tags support in PDF export + added Hebrew, Turkish and Arabic languages in the PDF export filter + added property TfrxPDFExport.Background (default = False) + added properties TfrxRTFExport.Creator and TfrxPDFExport.Creator + improved quality of the PDF export filter + password protected reports is now working in client/server mode (IMPORTANT: Do not use this feature in one time with the server authentification) + verbose output of the server errors in the HTML mode - fixed name of the properties TfrxServerConnection.Proxy and TfrxServerConnection.ProxyPort (press 'ignore' button on load prompt in yours projects for autofix form components) - fixed clean of the report cache on TfrxReportServer.Stop method - fixed background draw in HTML export filter in server mode - many bug fixes ### FastReport 3.12 URL: https://www.fast-report.com/news/fastreport-vcl-3.12 Summary: FastReport 3.12 FastReport 3.12 + added TfrxReport.StoreInDFM property + added TfrxShapeView.Curve property + added TfrxReport.PreviewOptions.OutlineExpand property + added compatibility code in XLS export - TfrxXLSExport.FastExport property, set FastExport := False if you have OLE error with Excel + added TfrxXLSExport.PageBreaks property + improved XLS, PDF, HTML exports  - fixed URLs and anchors feature in HTML export - fixed bug with font widths in PDF export - fixed bug PrintOnParent in exports (Enterprise) + added TfrxServerConfig.ReportsList property + added 'getvariable' URL parameter for query of internal server variables + added internal server variables SERVER_REPORTS_LIST, SERVER_REPORTS_HTML + added function TfrxReportClient.GetServerVariable(const VariableName: String): String; + improved TfrxReportServer performance + added NT service demo (see project \Demos\ClientServer\Service) + added online documentation in the Server demo - fully rewritten Advanced Client demo (see project \Demos\ClientServer\Client\Advanced) - changed reports in Server demo (see project \Demos\ClientServer\Server) - changed html files in Server demo (see project \Demos\ClientServer\Server) - bug fixes ! Attention: reports with TfrxRichView (RTF) don't work in Server mode when server cache is on. ### FastReport 3.13 URL: https://www.fast-report.com/news/fastreport-vcl-3.13 Summary: FastReport 3.13 FastReport 3.13 + added "ExportNotPrintable" property in all export filters + added "Resolution", "SeparateFiles" properties in BMP, JPEG, TIFF export filters + improved TfrxHTTPClient RFC 2068 compatibility (when working with non-FastReport servers) - fixed Outline bug in PDF export filter - fixed RTL (Hebrew, Arabic language) bug in PDF export filter - fixed resolution bug in TIFF export filter - bug fixes ### FastReport 3.14 URL: https://www.fast-report.com/news/fastreport-vcl-3.14 Summary: FastReport 3.14 FastReport 3.14 + added FastQueryBuilder (button in SQL editor window) + added TfrxOverlay.PrintOnTop property + added TfrxDMPCommand component to print ESC-sequences. Use Command property to set sequence: DMPCommand1.Command := '#27#40' (alternate form '1B28') + added TfrxReport.OnRunDialogs script event. Use this event to handle report dialogs manually + added Description property to all report components * changed internal datasets behaviour, now they can be added to any report page without using dialogs * changed internal datasets architecture (common class TfrxCustomDatabase, QBuilder support) - fixed bug with brush styles - fixed bug in Report Server with fetch of report from the cache with equal variables - fixed bug in XML export filter with fkNumber format of the memo ### FastReport 3.15 URL: https://www.fast-report.com/news/fastreport-vcl-3.15 Summary: FastReport 3.15 FastReport 3.15 + added new wizards (db connection, table, query) + added FlowTo property for TfrxDMPMemoView + added Bulgarian resources + added FibPlus support (you should install Source\FIB\frxFIBx.dpk,  dclfrxFIBx.dpk packages manually) + added ability to composite prepared reports. Example: frxReport1.PrepareReport; frxReport2.PrepareReport; frxReport1.PreviewPages.AddFrom(frxReport2); frxReport1.ShowPreparedReport; + added UseFileCache, DefaultPath properties in all export filters + improved PDF, XLS export filters * changed resources structure * changed DBX components to work with bidirectional dataset - fixed bug with copies collation - fixed bug with shifting horizontal lines - fixed DMPLineView.Align = baWidth behaviour - fixed bug with TfrxDBLookupComboBox (incorrect work with field aliases) - fixed bug with build list of avialable reports on the FastReport Server ### FastReport 3.16 released URL: https://www.fast-report.com/news/fastreport-vcl-3.16 Summary: FastReport 3.16 released FastReport 3.16 released + added unicode support in TfrxMemoView + added GIF format export TfrxGifExport + added e-mail export (SMTP) TfrxMailExport + added new text export filter TfrxSimpleTextExport + added CSV export filter TfrxCSVExport + case sensitivity in C++Script + added X axis type option to chart object + added ability to use [] instead of <> (like in FR2.5) + [FQB] joins between fields of the compatible types + added TfrxDesigner default settings (font, paper, rtl, script language).  + added TfrxDMPExport.OnTranslate event * changed rules of export a rich-text objects - fixed bug in server with single "pagenav" (Page Navigator) parameter - fixed picture.url bug - fixed bug in PDF export with horizontal/vertical lines - [FQB] fixed 'Control has no parent window' error in Delphi 5 - fixed bug in crosstab (wrong row/column sizes) - fixed baClient for page objects - fixed memory leak in Server mode  - fixed TFMTBCDField bug (wrong sum calculation) - fixed bug with master-detail DBX ### FastReport 3.17 released URL: https://www.fast-report.com/news/fastreport-vcl-3.17 Summary: FastReport 3.17 released FastReport 3.17 released + added Farsi language resources + added pdf and e-mail export buttons in preview toolbar + added popup menu in Preview + added full screen mode in Preview (F11 hot-key) * improved PDF export filter * restricted some properties of HTML and image export by e-mail - [FQB] fixed for order by DESC of any field - fixed bug with blank DefaultPath property in all exports - fixed Null to OleStr bug - fixed D5/WideStrings bug - fixed bug with jscript/basicscript - fixed ibo bug (cannot assign blob to TWideStrings) - fixed picture bug (error if blob is not valid) - fixed Cut/Copy/Paste hotkey actions in Object Inspector - fixed bug with undo in password protected reports - fixed bug with list of password protected reports in server - fixed bug with Memo.Lines property - IBO fixes ### FastReport 3.17 Studio released URL: https://www.fast-report.com/news/fastreport-studio-3.17 Summary: FastReport 3.17 Studio released FastReport 3.17 Studio released + added the export image options command-line keys (/dpi=xx /quality=xx /mono /unite /crop ) + added emulation of the runtime mode in standalone designer (/runtime command-line key) + added GIF export + added Language selector in Designer (View menu) + added pdf and e-mail export buttons in preview toolbar + added right mouse button menu in Preview + added full screen mode in Preview (F11 hot-key) + added User Manual + added Programmer Manual + added Command-Line Manual + added IfrxView interface + added new demo reports with charts + added language resources support * changed the registry key of Connection aliases from HKCU to HKLM * rewrited Visual C++ demo * changed installer  - Fixed bug in Command-line export featutre - fixed bug with Designer windows - fixed event OnClickObject ### FastReport 3.18 released URL: https://www.fast-report.com/news/fastreport-3.18 Summary: FastReport 3.18 released FastReport 3.18 released * D2006 ready + added strikeout text support in HTML export + added char spacing support in PDF export + added support of BALTIC_CHARSET (windows-1257) in PDF export + added support TfrxShapeView diagonal lines in PDF export + added FRF import unit. To use it, simply include frx2xto30.pas into your "uses" list. - fixed inplace editing of the Text object - fixed bug with export to the monochrome TIFF format (error with the MS Paint and Photo Editor)  - fixed dbx components bug - fixed paper bins selection - fixed bugs in e-mail export (Lines and Signature properties,  bad attachment, bad address syntax with some smtp servers) - fixes of the export filters interface - fixed GIF export filter - fixed bug with xp style (av when closing expr editor) - fixed av when selecting sysmemo and memo - fixed the default export file name in the "Save Dialog" - fixed TfrxServerConfig.LoadFromFile ### FastReport 3.19 released URL: https://www.fast-report.com/news/fastreport-3.19 Summary: FastReport 3.19 released FastReport 3.19 released + added separate frxTee package for TeeChart + added CJK Font support in PDF export + added frxHiButtons.pas unit (hi-color button images). Just add to your uses list. + added "Classes" tab to DataTree + added TfrxBarcodeView.WideBarRatio property - multi-thread fixes - fixed bug with cross+subreport - fixed bug with CloseDatasource = True - fixed bug in old-style cross - fixed bug in XLS(OLE) export with extra long text line - fixed bug in PDF export with non-TrueType fonts - fixed memo.loadfromfile - fixed bug with installer - fixed print report title twice - fixed startnewpage+reprintonnewpage - fixed char spacing in PDF export - fixed baClient align - fixed dot-matrix (designer, engine) - fixed app icon bug - FS: multithread fix - preview fixes - frf importer fixes ### FastReport 3.20 released URL: https://www.fast-report.com/news/fastreport-3.20 Summary: FastReport 3.20 released FastReport 3.20 released + improved RTF export + added handling font.charset (set to DEFAULT_CHARSET if you want unicode) + added EmptyLines property in XLS and XML export  (if set to 'false' then all empty lines is eliminated, good for export without  page breaks for output a solid table) + added ParagraphGap support in PDF export + enhanced speed and reduced output file size of PDF export + update German resources + update Turkish resources + added TfrxReport.OnBeforeConnect event + added ADO, IBX support in frf importer unit + added CommandTimeout property to ADO query + added pbExportQuick item in TfrxPreviewButtons set  (PDF and E-mail export buttons in Preview) * AVG function now counts only non-Null values * RichView object is now WYSIWYG - [server] fixed bug with parameters in report refresh - fixed bug in RTF export with font style attributes - fixed bug with frames in PDF export - fixed paper size bug - fixed ParagraphGap in PDF export - fixed stack overflow error with report summary band - fixed error with dialog form - fixed big with TProgressBar property out of range on exports of blank page in HTML - fixed bug in PDF export with zero width/height of bitmap - [FS] fixed OLE Ecxeption message - fixed bug with checkbox object - fixed bug with datatree window - fixed error with chart datetime - fixed bug with inspector window in debug mode - fixed undo of password protected report - fixed some dataset problems - fixed ask save changes in designer - fixed PDF export (font color clNone looks as clBlack)  ### FastReport 3.21 released URL: https://www.fast-report.com/news/fastreport-3.21 Summary: FastReport 3.21 released FastReport 3.21 released + [server] added lot of properties in configuration file (config.xml) + [server] added CSV, BMP, GIF, TIFF output formats + [server] added caching of reports in memory * [server] changed format of configuration file (important! see details in server_changes.txt) * [server] property TfrxServer.Configuration is obsolete * [server] updated server/service demo * [server] modified log-writer, statistic, cache modules - [server] lot of minor fixes + added TfrxHTMLExport.UseGif property + added unicode support in HTML, "Rich Text" (RTF) and XML exports + added TfrxXLSExport.SuppressPageHeadersFooters and TfrxXLSExport.SuppressPageHeadersFooters properties; + added TfrxReport.OnPreview event + added TfrxReport.OnPrintPage event + [FQB] property fqbCore.UsingQuotes added for support of quoted field names + added Slovak language resources + added clipping in the preview + added TfrxPreview.BackColor, FrameColor properties + added printer fonts to fontname combobox + added transparency/backcolor to rich object + added TfrxDesigner.OnInsertObject Event * changes in the databand editor * "Pictures" checkbox changed to combobox (none/jpeg/bmp/gif) in HTML export dialog  * "Styles" checkbox changed to "Continuous" in XLS and XML export dialog * bcb2006 compatibility * update Danish resources * update Dutch resources  * update Brazilian resources - fixed bug with incorrect codepage detection for page navigator in HTML export - fixed bug with incorrect export of EAN barcodes (digits beyond of border were croped) - fixed incorrect page breaks in RTF export - fixed shift problem - fixed monochrome bitmaps stretching - fixed TfrxDateEditControl - fixed copying grouped objects - fixed vband&overlay error - fixed setting of printer parameters - fixed KeepFooter + aggregate functions - fixed TfrxADOTable.IndexFieldNames property - fixed ado query parameters - fixes in database/table/query wizard - fixed bug with font charset in RTF export - fixed preview painting bug - fixed bug with rich when no printers installed - fixed copies in dmp export - fixed rtf expression parser - fixed bug with mdi preview - fixed bug with RTL reading brackets in PDF export - fixed input chinese chars in dialog controls - fixed shift behavior - fixed bug with right align and non-zero charspacing in PDF export - fixed bug with underline in HTML export - fixed overlay+keeptogether bug - fixed bug with bcb5 (cannot use function with parameters) - fixed large font issues - fixed html tags ### FastReport 3.22 for Delphi released URL: https://www.fast-report.com/news/fastreport-3.22 Summary: FastReport 3.22 for Delphi released FastReport 3.22 for Delphi released + added full TeeChart Pro support
+ added property TfrxHTMLExport.Centered in HTML export
+ added "Continuous" checkbox in RTF export dialog
+ added TfrxRTFExport.SuppressPageHeadersFooters property
+ added TfrxCheckBox.UncheckStyle property
+ added property TfrxGroupFooter.HideIfSingleDataRecord
+ added text shift on non-zero char spacing in PDF export
+ added Croatian resources
* update the main demo (ADO support, added new reports)
* added the object name to the error message in some cases
* TfrxGradientView is not exported in HTML, RTF, XLS formats
* preserve object names when working with clipboard
* improved HTML, RTF exports
* improved XML, Excel exports (thanks for Bali)
* increased timeout in E-Mail export
* update Danish resources
* update Portuguese resources
  - fixed bug with empty page in HTML export
- fixed IIF bug
- fixed bug with "ShowProgress := False" in XLS export
- fixed bug in XML export
- fixed error with reportsummary band
- fixed memory leaks when script has errors
- fixed shift issues
- fixed brush style bsBDiagonal and bsFDiagonal in PDF export
- fixed bug with incorrect codepage of TfrxRichView in RTF export
- fixed bug with margins in PDF export
- fixed bug with blobfields in bds2006
- fixed bug with stretched images
- [server] fixed bug with reports cache
- [server] fixed bug with Idle time leak
- [server] minor bug fixes ### FastReport 3.23 for Delphi released URL: https://www.fast-report.com/news/fastreport-3.23 Summary: FastReport 3.23 for Delphi released FastReport 3.23 for Delphi released + added save to stream possibility in Jpeg, Gif, Tiff, Bmp exports + added new control for page headers/footers mode selection in RTF export dialog + added new property TfrxRTFExport.HeaderFooterMode  (you can select between hfText, hfPrint, hfNone - default is hfText) + [server] added property TfrxReportServer.WebServer + added property TfrxHTMLExport.EmptyLines * e-mail export now inherits the attachment file name from exports file name * update French resources * update Danish resources * update German resources - fixed bug in TIFF export (monochrome) - fixed bug in PDF export when Outline is empty and checked - fixed large font issues - some fixes for bar codes in PDF export - add-in components fixes (AV when open some projects) - fixed bug with preview (position of the page when resizing the window) - fixed bug with RichText objects intersection in RTF export - fixed bug with format of the float numbers in XLS export - fixed bug with export of barcodes with zoom more than two - fixed error when page number does not exist in page range in exports dialog - [server] fixed bug with ampersand in query parameters - fixed bug with XML export (XML Parsing Error) - fixed bug with HideIfSingleDataRecord ### FastReport 4 demo is available! URL: https://www.fast-report.com/news/fastreport-4-demo-is-available Summary: What's new in the FastReport 4? Report Designer, Report Preview, Print, Report Core. Download the compiled demo of FastReport 4 here: download What's new in the FastReport 4? Report Designer, Report Preview, Print, Report Core. Download the compiled demo of FastReport 4 here: download What's new in the FastReport 4? Report Designer : new XP-style icons the "Data" tab with all report datasets ability to draw diagrams in the "Data" tab code completion (Ctrl+Space) breakpoints watches report templates Report Preview : thumbnails Print : splitting a big page to several small pages printing several small pages on one big duplex handling from print dialogue Report Core : "endless page" mode images handling, increased speed the "Reset page numbers" mode for groups reports scripting (Rijndael algorithm) report inheritance drill-down groups frxGlobalVariables object "cross-tab" object enhancements line object can have arrows ### FastReport 4 released! URL: https://www.fast-report.com/news/release-fastreport-4 Summary: FastReport 4 released! FastReport 4 released! Dear friends! FastReport 4 for Delphi / C++Builder / BDS released! Report Designer: - new XP-style interface - the "Data" tab with all report datasets - ability to draw diagrams in the "Data" tab - code completion (Ctrl+Space) - breakpoints - watches - report templates - local guidelines (appears when you move or resize an object) - ability to work in non-modal mode, mdi child mode Report Preview: - thumbnails Print: - split a big page to several small pages - print several small pages on one big - print a page on a specified sheet (with scale) - duplex handling from print dialogue - print copy name on each printed copy (for example, "First copy", "Second copy") Report Core: - "endless page" mode - images handling, increased speed - the "Reset page numbers" mode for groups - reports crypting (Rijndael algorithm) - report inheritance (both file-based and dfm-based) - drill-down groups - frxGlobalVariables object - "cross-tab" object enhancements: - improved cells appearance - cross elements visible in the designer - fill corner (ShowCorner property) - side-by-side crosstabs (NextCross property) - join cells with the same value (JoinEqualCells property) - join the same string values in a cell (AllowDuplicates property) - ability to put an external object inside cross-tab - AddWidth, AddHeight properties to increase width&height of the cell - AutoSize property, ability to resize cells manually - line object can have arrows - added TfrxPictureView.FileLink property (can contain variable or a file name) - separate settings for each frame line (properties Frame.LeftLine, TopLine, RightLine, BottomLine can be set in the object inspector) - PNG images support (uncomment {$DEFINE PNG} in the frx.inc file) - Open Document Format for Office Applications (OASIS) exports, spreadsheet (ods) and text (odt) Enterprise components: - Users/Groups security support (see a demo application Demos\ClientServer\UserManager) - Templates support - Dynamically refresh of configuration, users/groups Let's try leader tool! ### FastReport 4.1 released URL: https://www.fast-report.com/news/fastreport-4.1 Summary: FastReport 4.1 released FastReport 4.1 released We wish you a Merry Christmas and Happy New Year! 1. FastReport 4.01 released What is new? ------------ + added ability to show designer inside panel (TfrxReport.DesignReportInPanel method). See new demo Demos\\EmbedDesigner + added TeeChart7 Std support + [server] added "User" parameter in TfrxReportServer.OnGetReport, TfrxReportServer.OnGetVariables and TfrxReportServer.OnAfterBuildReport events + added Cross.KeepTogether property + added TfrxReport.PreviewOptions.PagesInCache property - barcode fix (export w/o preview bug) - fixed bug in preview (AV with zoommode = zmWholePage) - fixed bug with outline + drilldown - fixed datasets in inherited report - [install] fixed bug with library path set up in BDS/Turbo C++ Builder installation - fixed pagefooter position if page.EndlessWidth is true - fixed shift bug - fixed design-time inheritance (folder issues) - fixed chm help file path - fixed embedded fonts in PDF - fixed preview buttons - fixed bug with syntax highlight - fixed bug with print scale mode - fixed bug with control.Hint - fixed edit preview page - fixed memory leak in cross-tab 2. Special Christmas Offer from Fast Reports. ============================================= Only two weeks. Only for upgrade FastReport 3 to 4 Standard, Professional and Enterprise. Use this links for ordering FastReport with discount: from FastReport 3 to 4 Standard: https://secure.shareit.com/shareit/cart.html?PRODUCT[300134419]=1&languageid=1¤cies=all&COUPON1=X-masGift from FastReport 3 to 4 Professional: https://secure.shareit.com/shareit/cart.html?PRODUCT[300134420]=1&languageid=1¤cies=all&COUPON1=X-masGift from FastReport 3 to 4  Enterprise: https://secure.shareit.com/shareit/cart.html?PRODUCT[300134421]=1&languageid=1¤cies=all&COUPON1=X-masGift 3. We have moved to new address: ================================ off. 502, Oborony str. 24 344082, Rostov-on-Don, Russia Phone: +7 863 2270740 Fax:   +7 863 2270736 ### FastReport 4.2 VCL released URL: https://www.fast-report.com/news/fastreport-4.2 Summary: FastReport 4.2 VCL released FastReport 4.2 VCL released + added support for CodeGear Delphi 2007 + added export of html tags in RTF format + improved split of the rich object + improved split of the memo object + added TfrxReportPage.ResetPageNumbers property + added support of underlines property in PDF export * export of the memos formatted as fkNumeric to float in ODS export - fixed bug keeptogether with aggregates - fixed bug with double-line draw in RTF export - fix multi-thread problem in PDF export - fixed bug with the shading of the paragraph in RTF export when external rich-text was inserted - fixed bug with unicode in xml/xls export - fixed bug in the crop of page in BMP, TIFF, Jpeg, Gif - "scale" printmode fixed - group & userdataset bugfix - fixed cross-tab pagination error - fixed bug with round brackets in PDF export - fixed bug with gray to black colors in RTF export - fixed outline with page.endlessheight - fixed SuppressRepeated & new page - fixed bug with long time export in text format - fixed bug with page range and outline in PDF export - fixed undo in code window - fixed error when call DesignReport twice - fixed unicode in the cross object - fixed designreportinpanel with dialog forms - fixed paste of DMPCommand object - fixed bug with the export of null images - fixed code completion bug - fixed column footer & report summary problem ### FastReport 4.3 released! URL: https://www.fast-report.com/news/fastreport-4.3 Summary: FastReport 4.3 released! FastReport 4.3 released! FastReport® VCL is an add-on component that allows your application to generate reports quickly and efficiently. FastReport® provides all the necessary tools to develop reports, including a visual report designer, a reporting core, and a preview window. It can be used in the Borland Delphi and Borland C++Builder environments. What is new in the version 4.3 --------------- + added support for C++Builder 2007 + added encryption in PDF export + added TeeChart Pro 8 support + added support of OEM code page in PDF export + added TfrxReport.CaseSensitiveExpressions property + added "OverwritePrompt" property in all export components + improved RTF export (WYSIWYG) + added support of thai and vietnamese charsets in PDF export + added support of arrows in PDF export * at inheritance of the report the script from the report of an ancestor is added to the current report (as comments) * some changes in PDF export core - fixed bug with number formats in Open Document Spreadsheet export - fixed bug when input text in number property(Object Inspector) and close Designer(without apply changes) - fixed bug in TfrxDBDataset with reCurrent - fixed bug with memory leak in export of empty outline in PDF format - line# fix (bug with subreports) - fixed bug with edit prepared report with rich object - fixed bug with shadows in PDF export - fixed bug with arrows in designer - fixed bug with margins in HTML, RTF, XLS, XML exports - fixed bug with arrows in exports - fixed bug with printers enumeration in designer (list index of bound) - fixed papersize bug in inherited reports ### FastReport 4.4 released! URL: https://www.fast-report.com/news/fastreport-4.4 Summary: FastReport 4.4 released! FastReport 4.4 released! What is new in the version 4.4 --------------- + added support for CodeGear RAD Studio 2007 + improved speed of PDF, HTML, RTF, XML, ODS, ODT exports + added TfrxReportPage.BackPictureVisible, BackPicturePrintable properties + added rtti for the TfrxCrossView.CellFunctions property + added properties TfrxPDFExport.Keywords, TfrxPDFExport.Producer, TfrxPDFExport.HideToolbar, TfrxPDFExport.HideMenubar, TfrxPDFExport.HideWindowUI, TfrxPDFExport.FitWindow, TfrxPDFExport.CenterWindow, TfrxPDFExport.PrintScaling + added ability recompile frxFIB packages in "recompile wizard" + added ability to set color property for all teechart series which support it + added, setting frame style for each frame line in style editor + added TfrxPreview.Locked property and TfrxPreview.DblClick event + added 'invalid password' exception when load report without crypt + added new parameter to InheritFromTemplate (by default = imDefault) imDefault - show Error dialog, imDelete - delete duplicates, imRename - rename duplicates + added property TfrxRTFExport.AutoSize (default is "False") for set vertical autosize in table cells * redesigned dialog window of PDF export * improved WYSIWYG in PDF export - fixed bug, the PageFooter band overlap the ReportSummary band when use EndlessHeight - fixed bug with lage paper height in preview - fixed bug with outline and encryption in PDF export - fixed bug with solid arrows in PDF export - fixed bug when print TfrxHeader on a new page if ReprintOnNewPage = true and KeepFooter = True - fixed bug when used AllowSplit and TfrxGroupHeader.KeepTogether - fixed page numbers when print dotMatrix report without dialog - fixed bug with EndlessHeight in multi-columns report - fixed font dialog in rich editor - [fs] fixed bug when create TWideStrings in script code - fixed bug with dialog form when set TfrxButtonControl.Default property to True - fixed twice duplicate name error in PreviewPages designer when copy - past object - fixed bug with Preview.Clear and ZmWholePage mode - fixed bug with using "outline" together "embedded fonts" options in PDF export - fixed multi-thread bug in PDF export - fixed bug with solid fill of transparent rectangle shape in PDF export - fixed bug with export OEM_CODEPAGE in RTF, Excel exports - fixed bug with vertical size of single page in RTF export - fixed bug with vertical arrows in PDF export - fixed memory leak with inherited reports ### FastReport 4.5 released! URL: https://www.fast-report.com/news/fastreport-4.5 Summary: FastReport 4.5 released! FastReport 4.5 released! Version 4.5 --------------- + added ConverterRB2FR.pas unit for converting reports from Report Builder to Fast Report + added ConverterQR2FR.pas unit for converting reports from QuickReport to FastReport + added support of multiple attachments in e-mail export (html with images as example) + added support of unicode (UTF-8) in e-mail export + added ability to change templates path in designer + added OnReportPrint script event + added PNG support in all version (start from Basic) + added TfrxDMPMemoView.TruncOutboundText property - truncate outbound text in matrix report when WordWrap=false + added new frames styles fsAltDot and fsSquare + added new event OnPreviewDblClick in all TfrxView components + added ability to call dialogs event after report run when set DestroyForms = false + added ability to change AllowExpressions and HideZeros properties in cross Cells (default=false) + added IgnoreDupParams property to DB components + added auto open dataset in TfrxDBLookupComboBox + added new property TfrxADOQuery.LockType + added define DB_CAT (frx.inc) for grouping DB components + added TfrxPictureView.HightQuality property(draw picture in preview with hight quality, but slow down drawing procedure) + [FRViewer] added comandline options "/print filename" and "/silent_print filename" + added unicode input support in RichEditor + added new define HOOK_WNDPROC_FOR_UNICODE (frx.inc) - set hook on GetMessage function for unicode input support in D4-D7/BCB4-BCB6 + added ability chose path to FIB packages in "Recompile Wizard" + added new function TfrxPreview.GetTopPosition, return a position on current preview page + added new hot-keys to Code Editor - Ctrl+Del delete the word before cursor, Ctrl+BackSpace delete the word after cursor(as in Delhi IDE)  + added "MDI Designer" example - all language resources moved to UTF8, XML - fixed bug with html tags [sup] and [sub] - fixed width calculation in TfrxMemoView when use HTML tags - fixed bug with suppressRepeated in Vertical bands - fixed bug when designer not restore scrollbars position after undo/redo - fixed visual bug in toolbars when use Windows Vista + XPManifest + Delphi 2006  - fixed bug in CalcHeight when use negative LineSpace - fixed bug in frx2xto30 when import query/table components, added import for TfrDBLookupControl component - fixed bug with Cross and TfrxHeader.ReprintOnNewPage = true - fixed  converting from unicode in TfrxMemoView when use non default charset - [fs] fixed bug with "in" operator - fixed bug with aggregate function SUM  - fixed bug when use unicode string with [TotalPages#] in TfrxMemoView - fixed bug with TSQLTimeStampField field type - fixed designer dock-panels("Object Inspector", "Report Tree", "Data Tree")  when use designer as MDI or use several non-modal designer windows - fixed bug with hide/show dock-panels("Object Inspector", "Report Tree", "Data Tree"), now it restore size after hiding - fixed bug in XML/XLS export - wrong encode numbers in memo after CR/LF - fiexd bug in RTF export  - fixed bug with undo/redo commands in previewPages designer - fixed bug with SuppressRepeated when use KeepTogether in group - fixed bug with SuppressRepeated on new page all events fired twice(use Engine.SecondScriptcall to determinate it)­ ### FastReport 4.6 VCL Documentation updated URL: https://www.fast-report.com/news/update-documentation-fastreport-vcl Summary: FastReport 4.6 VCL Documentation updated FastReport 4.6 VCL Documentation updated "Help file" - added description of new properties and methods. "Programmer's manual" - added several new chapters, added code example for BCB "User's Manual"  - a few  changes. ### FastReport 4.8 released! URL: https://www.fast-report.com/news/fastreport-vcl-4.8 Summary: FastReport 4.8 released! FastReport 4.8 released! ! + added support of Embarcadero Rad Studio 2010 (Delphi/C++Builder) ! + added TfrxMailExport.OnSendMail event  ! + [enterprise] added Windows Authentification mode ! + adedd checksum calculating for  2 5 interleaved barcode ! * [enterprise] improved CGI for IIS/Apache server ! * changed PDF export: added full unicode support, improved performance, decreased memory requirements   old PDF export engine saved in file frxExportPDF_old.pas + added TfrxDBDataset.BCDToCurrency property + added TfrxReportOptions.HiddenPassword property to set password silently from code + added TfrxADOConnection.OnAfterDisconnect event  + added TfrxDesigner.MemoParentFont property + added new TfrxDesignerRestriction: drDontEditReportScript and drDontEditInternalDatasets + added TfrxGroupHeader.ShowChildIfDrillDown property   + added confirmation reading for TfrxMailExport + added TimeOut field to TfrxMailExport form  + added ability to use keeping(KeepTogether/KeepChild/KeepHeader) in multi-column report + added ability to split big bands(biggest than page height) by default  - changed inheritance mechanism, correct inherits of linked objects (fixups) - fixed bug with Mirror Mrgins in RTF, HTML, XLS, XML, OpenOffice exports - fixed bug when cross tab cut the text in corner, when corner height greater than column height - improved WatchForm TListBox changet to TCheckListBox - improved AddFrom method - copy outline - Improved functional of vertical bands, shows memos placed on H-band which doesn't across VBand, also calculate expression inside it and call events (like in FR2) - Improved unsorted mode in crosstab(join same columns correctly) - Improved converter from Report Builder - Improved TfrxDesigner.OnInsertObject, should call when drag&drop field from data tree - improved DrillDownd mechanism, should work correct with master-detail-subtetail nesting  - fixed bug with DownThenAcross in Cross Tab - fixed several bugs under CodeGear RAD Studio (Delphi/C++Builder) 2009  - fixed bug with emf in ODT export - fixed bug with outline when build several composite reports in double pass mode - fixed bug when group doesn't fit on the whole page - fixed "Page" and "Line" variables inside vertical bands - fixed bug with using KeepHeader in some cases - fixed bug with displacement of subreport when use PrintOnParent property in some cases - fixed small memory leak in subreports - fixed problem with PageFooter and ReportSymmary when use PrintOnPreviousPage property - fixed bug when designer shows commented functions in object inspector - fixed bug when designer place function in commented text block - fixed bug when Engine try to split non-stretcheable view and gone to endless loop - fixed bug with HTML tags in memo when use shot text and WordWrap - [enterprise] fixed bug with variables lost on refresh/export - fixed bug whih PDF,ODT export in Delphi4 and CBuilder4 - fixed bug with some codepage which use two bytes for special symbols (Japanese ans Chinese codepages) - fixed bug when engine delete first space from text in split Memo - fixed bug in multi-column page when band overlap stretched PageHeader - fixed bug with using ReprintOnNewPage ### FastReport 5.6 with RAD Studio 10.2 Tokyo support URL: https://www.fast-report.com/news/fastreport-vcl-5.6 Summary: FastReport 5.6 is here with Embarcadero RAD Studio 10.2 Tokyo support. FastReport 5.6 is here with Embarcadero RAD Studio 10.2 Tokyo support. With support of new IDE new version brings few new features and lots of improvements. Also we're making FastReport 5 better not only for Delphi, but for Lazarus too. New version gives ability to build Lazarus application with GTK widgets. What else?  + Added Embarcadero RAD Studio 10.2 Tokyo support for x32 and x64 windows platforms + Added Sup, Sub tag support for TfrxHTMLExport + Added TfrxPDFExport.SaveOriginalImages property. True by default + Added GS1 support for Code128C, EAN128C barcodes + Added sorting of printers by name in the printer's list + Added Norwegian resources + Added TfrxFDTable support in the frxFDRTTI + Added #0..#31 chars support in the Code128A + Added TfrxBarcodeView.TestLine property + Added TfrxRichEditor form state storing + [Lazarus] Added support of GTK widget - Fixed frx2xto30.pas for XE2 and later - Increased PaperSizes count limit to 512 - [Lazarus] Fixed scrolling in designer - Fixed smMaxHeight in TfrxRichView - Fixed TfrxXLSXExport for file with 1000 worksheets - Fixed TfrxPreviewPages.ClearPageCache - Fixed TfrxIBXQuery.ExecSQL - Fixed new event insert if main procedure of the script have line with "// begin" - Fixed component's name after Drag&Drop from Data Tree for fields with Unicode characters - Fixed TfrxBarcodeView baCenter, baRight align - Fixed reprint on new page and group keeping bug - Fixed update parameters after loading for TfrxADOQuery - Fixed preview's toolbar for RAD Studio Berlin 10.1 Update 2 when VCL styles applied - Fixed TfrxReport.PrintOptions.Duplex usage - Fixed printing of PNG images - Fixed TfrxReport.ReportOptions.Author in the DOCX, PPTX and XLSX exports - Fixed vsExport usage for export filters - Fixed export of non-alphanumeric chars (<, >, &) inside HTMLTags in the ODF export - [FastScript] Fixed Format function - Fixed HTMLTags in the TfrxMemoView - Fixed calculation of hyperlink expressions - Fixed image size in the DOCX export - Fixed MSI barcode - Fixed exporting of objects' hyperlinks to encrypted PDF - Fixed export to continuous XLSX for reports with many pictures - Fixed export of frames with width < 1 to HTML - Fixed export of empty pages to XLSX - Fixed band's with barcodes stretching - Fixed KeepChild behavior for TfrxReportTitle child bands - Fixed custom number format in the ODF export - [Lazarus] Fixed printer selection in the print dialog - Fixed export of hyperlinks with hkPageNumber kind when page number greater than pages count - Fixed component's name after Drag&Drop from Data Tree for some cases - Fixed "Divizion by zero" error with pmSplit print mode - Fixed PrintOnSheeet in the Print Dialog for some cases - [Lazarus] Fixed default printer in the print dialog - Fixed export images to BIFF8 for x64 - [Lazarus] Fixed printer selection before print properties dialog - Fixed RAD Studio 10.1 Berlin size of dialog page issue in the designer - Fixed exporting of numbers with '%' in the format string (like #,##0.###%) in the BIFF8 export - [Enterprise] Fixed "Report not found" error message - Fixed "Print to file" option for GDI reports - Fixed export to PDF with embedded fonts and empty memos - Fixed export to PDF for HAlign = haBlock (GapX used now) - Fixed font's embedding for protected PDF if EmbedFontsIfProtected = False and EmbeddedFonts = True - Fixed exporting of TfrxShapeView to XLSX and DOCX exports - Fixed exporting of Unicode characters in the memos with HTML tags to DOCX for non-Unicode IDE - Fixed TfrxPreviewButtons in the frxClassRTTI - Fixed parent for objects for some cases - Fixed font's name in the ODF export ### FastReport Avalonia is now included in Ultimate .NET URL: https://www.fast-report.com/news/avalonia-ultimate-net Summary: Now part of the Ultimate .NET includes a new cross-platform library for generating reports on macOS, Linux and Windows. Now part of the Ultimate .NET includes a new cross-platform library for generating reports on macOS, Linux and Windows. We have expanded the list of components available for developing your business projects. Now, the subscription to the Ultimate Edition .NET has become even more advantageous! The edition includes a new cross-platform library for generating reports and documents with the ability to print output files on macOS, Linux, and Windows, supporting Avalonia UI, .NET 6, and higher. At the same time, the subscription price has not changed. FastReport Ultimate .NET is a cost-effective solution for creating projects on all modern .NET platforms, including ASP.NET, Blazor, WASM, WPF, WinForms, Avalonia UI, Mono, and others. With your team, you can work both in the desktop designer and directly from the browser. The Ultimate edition also includes components for data visualization, specifically business graphics with a set of charts and OLAP products for fast processing of large data sets. Owners of the existing Ultimate .NET subscription can now test FastReport Avalonia for free in their personal account . ### FastReport Cloud URL: https://www.fast-report.com/products/cloud Summary: Cloud SaaS service for building reports and generating documents Cloud SaaS service for building reports and generating documents FastReport Cloud - a set of cloud services for reliable data storage, convenient creation of reports, and their export to various formats FastReport Cloud Cloud SaaS service for building reports and generating documents Buy Try for free Documentation ## FastReport Cloud — a set of cloud services for storing reports and templates. Set up automatic data export, connect your team for convenient collaboration from anywhere in the world, and forget about the need to develop your application. Built-in report designer Report templates can be created and edited on any platform, even from a mobile device. Safety All the benefits of cloud-based file creation and storage with reliable protection. We have collected all the mechanisms for safe operation: secure login, digital signature, access control, and personal data protection. Cloud solution The entire infrastructure is located in the cloud; you just need to connect to FastReport Cloud from your application or open it in a browser from any device. Anytime. Anywhere. And you will have access to all the power of creating reports and documents. Manage templates and reports FastReport Cloud allows you to store templates and reports in a virtual file system. All necessary operations with files are available: downloading, copying, renaming, deleting, and moving. Collaboration You can add multiple users to a workspace and everyone will be able to access the workspace: templates, reports, data sources, and other resources. Permission system A flexible permission system allows you to set different levels of access for team or group members. While one group of users can create new reports in the designer, another group can build and print PDF reports from templates. Connect our solution to your system in a couple of clicks How to Create a PDF Report in FastReport Cloud Recently, we launched the FastReport Cloud service, which allows you to create, store, and export reports directly from the cloud storage. In this article, we will look at an example of exporting a report to PDF using FastReport Cloud. In this article, we will look at an example of exporting a report to PDF format using FastReport Cloud, a SaaS service for storing, creating, and exporting documents. Publisher — the Ideal Solution for Small and Medium-Sized Businesses The FastReport product line for creating, storing, and transmitting documents has been expanded with a new development. Since May 2025, it includes products such as Cloud, Corporate Server, and Publisher. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. Cloud Services for Business: Advantages and Opportunities In recent years, cloud technologies have become an integral part of business. Companies of various sizes and industries are increasingly turning to cloud services to enhance the efficiency, flexibility, and security of their operations. In this article, we will explore the main cloud services, their benefits, and their impact on business. In this article, we will explore the main cloud services, their benefits, and their impact on business. Any other questions? Contact the manager ### FastReport Cloud and FastReport Corporate Server comparison table URL: https://www.fast-report.com/cloud-and-corporate-server-comparison-table Summary: Table with differences between FastReport Cloud and FastReport Corporate Server Table with differences between FastReport Cloud and FastReport Corporate Server Features FastReport Cloud FastReport Corporate Server Resources Shared resources by subscription plan x - Dedicated server - x Deployment Public Cloud x - Hybrid Cloud x x Private Cloud - x OEM Cloud - x Private Internet cluster - x Local Intranet cluster - x CRM/ERP integration - x Kubernetes infrastructure integration - x OpenShift infrastructure integration - x Services FastReport Engine x x User management x x Scheduler x x External database access x x Local network database access - x Administration access - x Cluster management access - x Cluster monitoring (Grafana, Zabbix) - x Data backups - x Security Teamwork with reports and documents x x User groups x x User audit x x Open ID auth x x Two-Factor Authentication (2FA) x x Custom Authentication (LDAP, etc) - x Logs - x Application Integration REST API x x .NET C# x x Java x x JavaScript x x Python x x C++ x x Golang x x Support Helpdesk support x x Dedicated support - x Deployment support - x Integration support - x Recovery support - x Update and migration support - x ### FastReport COM/ActiveX from C# applications on x64 URL: https://www.fast-report.com/blogs/calling-fastreport-com-activex Summary: Simple solution: It is necessary to set 32-bit platform in project options. Here is an example (note: platform target is x86): Simple solution: It is necessary to set 32-bit platform in project options. Here is an example (note: platform target is x86): Simple solution: It is necessary to set 32-bit platform in project options. Here is an example (note: platform target is x86): Calling "FastReport COM/ActiveX" from C# applications on 64-bit platforms. Simple solution : It is necessary to set 32-bit platform in project options. Here is an example (note: platform target is  x86 ): Perfect solution : Download demo version of FastReport.NET. Use this tool for conversion FR3 templates to FRX temaplates If you have VCL version, then you can use following tip: How to convert fr3 to frx. Finally, you should manually create data source objects, and assign them to report objects. Why second solution is perfect? Because your will get fully managed solution without additional COM wrappers - FastReport Studio is a 32-bit COM server, which called from a 64-bit application that is not good for performance. In addition, most of the attractive features of managed code can not be used when working through COM technology. In other words - if your choice is a managed application, it is better to use reporting tools based on managed code - you will save a lot of time and nerves. Tags: C# ### FastReport Comparison URL: https://www.fast-report.com/fast-report-comparison Summary: Here you can compare Fast Reports report generator tools for various languages and IDEs Here you can compare Fast Reports report generator tools for various languages and IDEs Here you can compare Fast Reports report generator tools for various languages and IDEs, various platforms and operating systems. Let's compare cross-platform report generators, their functionality and relative advantages. The table covers desktop reporting, web-reporting (independent as well as with different server support), databases, multi-platform reporting, export filters and conversion from other report generators. This table will help in selecting the right reporting tool for your projects. Feature FastReport FMX FastReport VCL FastReport .NET FastReport WPF FastReport Avalonia FastReport Mono FastReport Open Source Frameworks VCL - x - - - - - LCL - x - - - - - FMX x - - - - - - .NET Framework 4.6.2-4.8.1 - - x x x x x ASP.NET - - x x - x - ASP.NET MVC - - x x - x - ASP.NET MVC Core - - x x - - x .NET Core 2.0-3.1 - - - - - - x .NET 5 - - x - - - x .NET 6, .NET 7, .NET 8 - - x x x - x Blazor Server - - x x - - - Blazor WebAssembly (WASM) - - x x - - - Mono - - - - - x - IDE Embarcadero RAD Studio 2010 - x - - - - - Embarcadero RAD Studio XE - x - - - - - Embarcadero RAD Studio XE2-XE8 - x - - - - - Embarcadero RAD Studio 10 Seattle - x - - - - - Embarcadero RAD Studio 10.1 Berlin - x - - - - - Embarcadero RAD Studio 10.2 Tokyo - x - - - - - Embarcadero RAD Studio 10.3 Rio - x - - - - - Embarcadero RAD Studio 10.4 Sydney x x - - - - - Embarcadero RAD Studio 11 Alexandria x x - - - - - Embarcadero RAD Studio 12.1 Athens x x - - - - - Embarcadero Delphi Prism - - x x - x - Lazarus - x - - - - - Microsoft Visual Studio - - x x x x x MonoDevelop - - - - - x - Visual Studio Code - - x x x x x JetBrains Rider - - x x x x x Operating System Microsoft Windows x x x x x x x Apple macOS x - x x x x x Linux x x x x x x x Graphic core requirements GDI - x - - - - - GDI+ x - x x x - x D2D x - - - - - - Quarz x - - - - - - GTK - x - - - - - libgdiplus - - x x x x x SkiaSharp - - x x x - - Report engine Bands x x x x x x x Code based x x x x x x x  XML report templates x x x x x x x Report script languages Pascal Script x x - - - - - C++ Script x x - - - - - J Script x x - - - - - VB Script x x - - - - - C# - - x x x x x VB.NET - - x x x x x Report script engine FastScript x x - - - - - CodeDOM - - x x x x - Roslyn - - x x x - x Data Base support ClickHouse - - x x x x x Elastic Search - - x x x x x Couchbase - - x x x x x CSV - - x x x x x Firebird x x x x x x x Google BigQuery - - x x x - - IBM DB2 - x x x x - - JSON - x x x x x x MongoDB - - x x x x x MS Access x x x x x - - MS SQL x x x x x x x MySQL x x x x x x x NosDB - - x x x - - ODBC x x x x x - - OLE DB x x x x x - - Oracle x x x x x x x PostgreSQL - x x x x x x RavenDB - - x x x x x Sharepoint - - x x x - - SqlAnywhere - - x x x - - SqlCe - - x x x - - SQLite - x x x x x x VistaDB - - x x x - -  XML x x x x x x x Internal application datasets x x x x x x x Custom connections x x x x x x x Reporting features Dialogue forms x x x x x x - Report inheritance x x x x x x x Master-detail-subdetail x x x x x x x Drill-downs x x x x x x x Groupping x x x x x x x Sorting x x x x x x x Headers and Footers x x x x x x x URLs and hrefs x x x x x x x HTML tags in text object x x x x x x x Unlimited page sizes x x x x x x x Preview component x x x x x x - Design-time visual report designer x x x x x - - Run-time visual report designer x x x x x x - High DPI support - x x x x - - Visual SQL Builder - x x x x - - Localization languages 32 33 29 29  29 29 - Bundled applications Designer - - x x x - x Viewer x x x x x - x Printing Print to different printer trays - x x x x x - Dot-matrix printer support - x x x - - - Advanced printing modes x x x x x x - Report objects Text x x x x x x x Shape x x x x x x x Picture x x x x x x x SVG - - x x x x x Sub-report x x x x x x x System text x x x x x x x Chart x x x x x x - Barcode x x x x x x x 2D barcode x x x x x x x Map - x x x x x - Zip code - x x x x x x Cellular - x x x x x x OLE - x - - - - - Rich Text - x x x x x - Gradient x x x x x x x Cross-tab (Matrix) x x x x x x x Advanced Matrix (AdvMatrix) - - x x x x - Table - x x x x x x Container - - x x x - - Gauge x x x x x x x Checkbox x x x x x x x Sparkline - - x x x x - HTML - x x x x x x Digital signature - x x x x x - Web-reporting Integrated HTTP server - x - - - - - CGI - x - - - - - ISAPI - x - - - - - ASP .NET - - x x - x - MVC - - x x - x x Web API - - x x - - x WCF - - x - - - - Support of Online Designer - - x x x x x Export in formats PDF x x x x x x PDFSimple PDF/A - x x x x x - PDF/X - - x x x x - Images Jpeg/PNG/BMP/GIF/TIFF/EMF x x x x x x x SVG - x x x x x - Rich Text x x x x x x - Word OOXML (docx) - x x x x x - PowerPoint OOXML (pptx) - x x x x x - HTML x x x x x x x HTML5 (layered) - x x x x x x MHT (web archive) - - x x x - - Microsoft XPS - - x x x x - Excel OLE - x - - - - - Excel XML x x x x x x - Excel binary (biff8 xls) - x x x x x - Excel OOXML (xlsx) - x x x x x - PostScript - x x x x x - PPML - x x x x x - LaTeX - - x x x x - DXF - - x x - - - ZPL - x x x x x - JSON - - x x x x - Comma separated values (CSV) x x x x x x - DBF (table) - x x x x x - Plain Text x x x x x x - Open Document Speadsheet (OpenOffice) x x x x x x - Open Document Text (OpenOffice) x x x x x x -  XAML - - x x x x - Transports Email - x x x x x - FTP - x x x x x - DropBox - x x x x x - Box - x x x x x - GoogleDrive - x x x x x - OneDrive - x x x x x - Convertors from Quick Report - x - - - - - Report Builder - x - - - - - Rave Reports - x - - - - - List&Label - - x x x x - DevExpress - - x x x x - Microsoft Reporting Services (RDL, RDLC) - - x x x x - Crystal Reports - - x x x - - StimulSoft - - x x x x - Jasper Library - - x x x x - FastReport/FreeReport VCL 2.* - x - - - - - FastReport .NET - x - x x - - FastReport VCL - - In plans - - - - Distribution Windows Installation file x x x x x - - ZIP archive - - - - - x x NuGet - - x x x x x DEB - - - - - x - RPM - - - - - x - GitHub - - - - - - x Full sources x x x x x x x Support Online helpdesk x x x x x x - Online chat x x x x x x - E-mail x x x x x x - GitHub Issues - - - - - - x Phone x x x x x x - - Free Download - ### FastReport components help in fighting against COVID-19 URL: https://www.fast-report.com/blogs/fastreport-helps-fighting-covid19 Summary: FastReport .NET became a part of software solution that helps to fight against COVID-19 in Italy FastReport .NET became a part of software solution that helps to fight against COVID-19 in Italy FastReport .NET became a part of software solution that helps to fight against COVID-19 in Italy For decades, the FastReport and FastCube libraries have been helping to organize fast reporting and powerful multidimensional analytics in various applications and industries. Particularly in Medicine. Dozens of development companies from all over the world (China, Africa, USA, Europe) responded to our offer to get a library for developments in medical science for free . Today we want to tell you about only one of these cases – from our clients – Ascom UMS, Italy. Ascom is a global provider of healthcare solutions. The company is especially known for its software packages in the field of intensive care and resuscitation. Italy became one of the first EU countries to fall under the powerful wave of the new virus. We are proud that our colleagues, IT specialists from Ascom, have also come out to fight a new challenge for all mankind! Indeed, to successfully fight the virus it is necessary to comprehensively understand what we are facing. As Nicola Franchi (the R&D manager from the Italian division of Ascom) notes, FastReport.Net with .net Core support came in handy here. See for yourself: Ascom has created a remote patient surveillance tool. Continuous monitoring aim is to reduce complications so that healthcare providers spend less time on administrative work and better provide medical care. To fight the COVID-19 pandemic, Ascom has developed a package within the Digistat Suite called Wearable Monitor. It is used to monitor patients undergoing treatment at home and allows you to notice changes in the patient’s condition in the early stages. Each patient receives a set of wearable devices that continually sends data to the app so that doctors in healthcare facilities can instantly identify the deterioration caused by the coronavirus. The devices are able to measure not only heart rate, temperature and physical activity, but also the rhythm of respiration and saturation - the level of oxygen in the blood. The latter are critical in surveillance of the condition of patients with coronavirus. Digistat Suite is a solution that collects statistics from connected sensors for further analytics and detecting abnormal readings for decision making. The main processing and storage of medical information occur under the control of .NET Core. The output of the resulting reports and documents, their delivery and saving in various formats take place in FastReport .NET. Nicola Franchi, Ascom UMS “We found it very easy to integrate FastReport .NET in our .NET Core project, thanks to the delivery package and the clarity of API. Even if .NET Core is a quite new technology, FastReport .NET performs well and we were able to provide to clinicians the reports they need with small development effort” Picture 1: Agreement that the patient signs upon the wearable devices delivery. Picture 2: Summary table of all current patients, their addresses and current vitals Picture 3: History of the patient and all his parameters We bow our knee to these people, helping all of us. We will be able to defeat the COVID-19 pandemic with the joint efforts of professionals from all industries! Tags: FastReport ### FastReport Corporate Server URL: https://www.fast-report.com/products/corporate-server Summary: A scalable dedicated server for generating and storing documents A scalable dedicated server for generating and storing documents FastReport Corporate Server consists of a set of cloud services for managing documents and generating reports in various formats. FastReport Corporate Server A scalable dedicated server for generating and storing documents Request a callback Documentation ## FastReport Corporate Server is designed for storing, managing, creating, and exporting reports and documents. The server provides a high level of security and the ability to integrate with other corporate systems. Online designer Report templates can be created and edited on any platform, even from a mobile device. Private cloud The entire infrastructure is located in the client's circuit. Flexible management of the document and report creation taking into account the company's security policy. Sharing Templates, reports, and other files can be shared via a link. The person will have access via a link to read or edit the file through Online Designer. Collaboration You can add multiple users to a workspace, and everyone will be able to access the workspace: templates, reports, data sources, and other resources. Manage templates and reports Store templates and reports in a virtual file system. All common file operations are available: downloading, copying, renaming, and transferring. Permission system A flexible permission system allows you to set different levels of access for team or group members. While one group of users can create new reports in the designer, another group can build and print PDF reports from templates. Publisher — an ideal solution for small and medium businesses Request a callback Connect our solution to your system in a couple of clicks How to Create a PDF Report in FastReport Cloud Recently, we launched the FastReport Cloud service, which allows you to create, store, and export reports directly from the cloud storage. In this article, we will look at an example of exporting a report to PDF using FastReport Cloud. In this article, we will look at an example of exporting a report to PDF format using FastReport Cloud, a SaaS service for storing, creating, and exporting documents. Publisher — the Ideal Solution for Small and Medium-Sized Businesses The FastReport product line for creating, storing, and transmitting documents has been expanded with a new development. Since May 2025, it includes products such as Cloud, Corporate Server, and Publisher. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. Cloud Services for Business: Advantages and Opportunities In recent years, cloud technologies have become an integral part of business. Companies of various sizes and industries are increasingly turning to cloud services to enhance the efficiency, flexibility, and security of their operations. In this article, we will explore the main cloud services, their benefits, and their impact on business. In this article, we will explore the main cloud services, their benefits, and their impact on business. Any other questions? Contact the manager ### FastReport Desktop URL: https://www.fast-report.com/products/desktop Summary: A report and document generator for Windows and Linux. Connect to a database, Excel, CSV, or JSON file, create a template in the visual editor—and generate hundreds of documents manually or on a schedule. Save them as PDFs or Excel files, print them, or send them automatically to recipients. A report and document generator for Windows and Linux. Connect to a database, Excel, CSV, or JSON file, create a template in the visual editor—and generate hundreds of documents manually or on a schedule. Save them as PDFs or Excel files, print them, or send them automatically to recipients. A standalone Low-code solution for automatic generation and distribution of reports from databases with export to any format. FastReport Desktop A report and document generator for Windows and Linux. Connect to a database, Excel, CSV, or JSON file, create a template in the visual editor—and generate hundreds of documents manually or on a schedule. Save them as PDFs or Excel files, print them, or send them automatically to recipients. Buy Try for free Documentation Low-code solution FastReport Desktop requires no programming skills. Create templates and generate documents without involving developers. Create documents of any complexity Add tables, images, charts, formulas, barcodes, maps, and interactive elements—without having to manually format each document. Customize the template yourself Update the details, structure, filters, or design without modifying the source system or waiting for a developer. Use existing data Connect to MS SQL, PostgreSQL, Oracle, MySQL, MongoDB, SQLite, Excel files, CSV, JSON, and other data sources. Seamless Migration from Other Solutions Our report generator instantly converts your reports from List&Label, DevExpress, Microsoft Reporting Services/SSRS (RDL, RDLC), Crystal Reports, StimulSoft, and Jasper Library into the FastReport format. Your data stays with you The program runs on a computer or within your company's infrastructure on Windows and Linux. Your data remains within your company and is not transferred to external services. How to Export a Report from FastReport .NET to PostScript FastReport .NET supports exporting reports to many popular formats, such as PDF, Excel, Word, and others. However, professional printing, plotters, and specialized printing equipment often require the PostScript (.ps) format. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. How to configure Content Security Policy for FastReport .NET WEB reports Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions of FastReport .NET WEB, the architecture of the client-side has been significantly reworked, which simplifies compliance with a strict CSP without losing report functionality. In this article, we will examine how to properly configure CSP for FastReport reports and take into account typical risks. Learn how to configure Content Security Policy for FastReport .NET WEB reports: an overview of CSP directives and values, changes in the FastReport architecture, typical bypass scenarios, and ways to protect against them. How to Configure a Report with Business Objects in Code and the FastReport .NET Designer FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects (Category → Products). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects in FastReport .NET. Any other questions? Contact the manager ### FastReport Desktop 2021.1 URL: https://www.fast-report.com/news/fastreport-desktop-2021.1 Summary: FastReport Desktop 2021.1 FastReport Desktop 2021.1 In the new version of FastReport Desktop we have added support for high-resolution screens in the designer and preview of the prepared reports. We also added new exports DXF, XODT, XODS, PDF/A-1a, PDF/A-2u. Added new Visual Studio-styled icons. You may switch between icon packs in the "View/Options/User Interface" window (or, "File/Options/User Interface" if you use ribbon UI): The new icons are well suited for hiDPI screens.  There are also new barcodes: Swiss QR Code, ITF-14, Deutsche Post Identcode, Deutsche Post Leitcode, Japanese PostNet: Added ability for the Text object to display DB filed names in a simplified form when designing a report. You can activate this option in the "View/Options/Objects appearance" window. This option is off by default. When you turn it on the Text object with a single DB field will display the field name part only, with no datasource name: Added ability to set up each cell in the Matrix object's corner area. To do this use the cell's context menu and its commands "Split cell", "Merge cells": Added ability to connect to ElasticSearch. Connection is available in data wizard and from code. Significantly improved and redesigned connection to the CSV data source. VisibleExpression, PrintableExpression and ExportableExpression properties appeared. You can use them to adjust the values of the Visible, Printable and Exportable properties depending on some condition: Full list of changes:  [Engine] + added connection to ElasticSearch + added new barcodes: Japanese PostNet, ITF-14, Deutsche Post Leitcode, SberBank QR, Swiss QR Code + added CountDistinct aggregate function (report totals and Matrix object totals) + added support of TLS 1.2 + added new 2 types of UncheckedSymbol for CheckBox + added ability to load XML data source by URL + added functions of converting numbers to words for Polish, Indian, Persian, Ukranian language + added rupee symbol for Indian currency + added the Report.Prepare (int pagesLimit) method, which allows to prepare a limited number of pages + added ability to align barcodes + added property PictureObject.ImageSourceExpression that allows to set expression containing source of image + added possibility to use expression in brackets in VisibleExpression, PrintableExpression and ExportableExpression properties + added the PictureObject.ImageFormat property, which allows to select the image storage format + added property MatrixObject.PrintIfEmpty, which allows displaying the matrix even if it is empty + added property Page.LastPageSource, which allows to configure the printer tray for printing the last page of the report + added VisibleExpression, PrintableExpression, and ExportableExpression properties + added property Report.Tag + added "AutoEncode" property for DataMatrix Barcode. By default, if true, it encodes the &1; as a symbol of FNC1. If false, the character is encoded as is. + added "OnScriptCompile" event that called when report's script compiles + added new TextQuality: SingleBitPerPixel and SingleBitPerPixelGridFit + added an ability to split table rows + added RUB, BYN and BBYN currencies to ToWordsRu function + added an ability to change decimal digits for Number, Currency and Percent formats when UseLocale property is true + added property "SplitRows" for MatrixObject. By default, its value is False and in this case rows with the same vaues are joined. If True - rows are split (like TableObject) * optimized copying streams in some cases * optimized and unified converter RichText to report objects * optimized work of VisibleExpression, PrintableExpression and ExportableExpression properties for bands * improved algorithm of converting RTF to report objects > these properties allow to set the value of the Visible, Printable, and Exportable properties, depending on the fulfillment of the specified condition - fixed a bug with incorrect tab width when TextObject.TextRenderType = TextRenderType.HtmlTextRenderer - fixed a bug with SubreportObject on a page footer band which caused StackOverflow exception - fixed a bug with Dock and Anchor properties of objects inside table/matrix cells - fixed a bug leading to System.ArgumentException when drawing PictureObject located outside the band - fixed a bug with incorrect work of right anchor (Anchor = AnchorStyles.Right) when page has unlimited width - fixed a bug with replacing a custom font with a default font when preparing a report - fixed a bug with vertical alignment when converting RTF (by default, now Top instead of Center) - fixed a bug with converting RTF tables to report objects - fixed a bug with page sizes could reset after preview - fixed a bug with printing a RichText object on large Windows scaling was happening incorrectly - fixed a bug leading to System.ArgumentOutOfRangeException in Substring functions - fixed a bug leading to System.ArgumentException when drawing PictureObject with some images - fixed a bug when tables were not displayed when connecting to Advantage Database via ODBC - fixed a bug where RichText went outside the page - fixed a bug with recompiling the report script that interacted with ChildBand - fixed a bug with incomplete copying of the matrix when copying the report page - fixed bugs when importing DevExpress reports - fixed bugs when importing RDL reports - fixed a bug when a band with the FillUnusedSpace property enabled was not displayed again, although there is enough free space - fixed bugs when importing List and Labels reports - fixed a bug where the AutoSize property for SvgObject did not work correctly - fixed a bug with TextObject.AutoShirnk=FontSize when TextObject's size is very small - fixed a bug with incorrect TotalPages variable value when it used in VisibleExpression - fixed a bug with converting RichText when RichObject.Text is null - fixed a bug with web response stream reader when connecting to remote JSON - fixed a bug while compiling the report with some expressions in the properties VisibleExpression, PrintableExpression and ExportableExpression - fixed a bug with incorrect checksum calculation in Deutsche Post Identcode barcode - fixed a bug where the designer crashed when the "Start new page" property is enabled for the page header child band - fixed a bug where the value of an expression was displayed by the text of this expression - fixed incorrect drawing of ITF-14 barcode - fixed a bug with transparency of RichObject - fixed a bug with text object visibility when Highlight.Visible parameter is enabled - fixed a bug with work of property PrintableExpression - fixed a bug with connection to PostgreSQL 12 and newer - fixed a bug when shifting SubReport to a new page didn't work correctly - fixed a bug when the data footer break away from the data when property "keep with data" is enabled - fixed generation of barcode GS1-128 - fixed incorrect value of Total, if it refers to another Total - fixed a bug where the table was not transferred correctly - fixed a bug with parsing xml with hexidecimal values, e.g. "To create it: " - fixed bug with trying to convert DBNull in empty string when ConvertNulls is disabled - fixed a bug when PageFooter with PrintOn=LastPage causes to print it on penultimate page [Designer] + added HiDPI support + new icons added. Use the designer's "View|Options|User interface" dialog to switch between icon packs. + added simplified display of DB field names in the designer + added collapse all/expand all button and search field for Report tree and Data tree + improved the behavior of the page panel + added ability to copy data source + added import of DevExpress reports saved in XML format + added the ability to add text and pictures by dragging and dropping them from the browser + added the ability to edit the number of rows and columns of the table by dragging the mouse + added loading of RTF texts, tables and styles when converting DevExpress file + added possibility to load CSV files via URL + added backlighting of the band that the selected element will located on when dragging is completed + added an ability to open subreport page by double-clicking on its object + added an ability to change fonts for Code Tab, Text Editor and Expression Editor + added an ability to replace pictures with drag & drop + added an ability to open report file by drag & dropping + added an ability to scroll the report horizontally while holding down the Shift key + added ability to drag & drop picture in format png, jpeg, jpg, gif, ico, bmp, tif, tiff, emf, wmf and text files in format txt, rtf + added ability to paste picture and text on page from clipboard + added ability to create new report page using: "+" button on the pages panel, double-click on empty space on the pages panel, "Ctrl+N" shortcut * when changing the window, the context menu now closes * now during autosave the selected item from the properties window is not reset * changed focus order of elements when clicking "tab" on a tab with creating swiss QR - fixed a bug leading to the crash of the report designer with an incorrect table in the data source. - fixed a bug with index of bounds in SQLBuilder in Designer - fixed a bug where the dialog page did not open if it had a GridControl  - fixed bugs in Right to Left mode - fixed a bug when rescaling the dialog form - fixed a bug with adding a barcode, leading to creation of a barcode with the wrong type - fixed a bug when dragging from functions created a NUD and an empty TextObject - fixed a bug when the RichTextBoxControl was not rendered correctly in the dialog workspace - fixed scaling issues in the WelcomeForm and Wizard windows - fixed a bug with copying an object, when an object with the same name was created - fixed a bug with empty database name after reloading the report - fixed a bug when double click to arrow buttons on report tab creates a new report page - fixed a bug where switching properties to alphabetical order did not work - fixed a bug with loading page size when converting DevExpress file - fixed a bug, when empty string in Datamatrix barcode causes exception - fixed a bug where the gauge window had the wrong width - fixed a bug where drag&drop to the matrix didn't work - fixed a bug leading to System.FormatException when opening DevExpress files - fixed a bug "Count cannot be less than zero." when opening DevExpress files - fixed a bug with moving objects in the report tree while holding down the Ctrl key - fixed a bug with drop down menu of select color button - fixed a bug when changing parameters after adding a line caused exception - fixed a bug with creating the Intelligent Mail barcode - fixed a bug with JSON-connection in Connection Wizard - fixed a bug with incorrect drawing of horizontal guides - fixed a bug when the width of objects was reset after closing Preview with enabled right anchor - fixed a bug when trying to set an incorrect RowSpan value to a MatrixObject cell - fixed a bug with dropping color, width and style in Border editor - fixed a bug with resizing PolyLineObject/PolygonObject, when it's copied with Ctrl+Drag - fixed a bug with inactive context menu "Size Mode" for SVG object - fixed a bug when subreport cannot be deleted when page linked to it was deleted before - fixed a bug when the buttons in the "Panel" in the "View" tab did not match the "Visible" property of the corresponding windows  [Preview] + added "About" button in toolbar of preview window + added an ability to scroll the report horizontally while holding down the Shift key + added exports menu editor > new editor is available in user interface options; exports can now be removed from exports menu * data source menu in Text Editor is now hidden in Preview * "Delete Page" button now disabled in Preview when only one page generated - fixed a bug with saving prepared reports containing converted RichObject - fixed a bug where the percentage of scale in Preview could be displayed incorrectly - fixed a bug leading to System.ObjectDisposedException when re-preparing the report - fixed a bug where the report could only be saved in the Box, regardless of the cloud storage selected in the menu   [Exports] + added exports to DXF, XODT, XODS, PDF/A-1a, PDF/A-2u + added support of ODF 1.2 in export to ODT/ODS + added option when export to Word 2007 "Do not add section breaks on page breaks". By default, both page breaks and section breaks are added. + added property ReportPage.ExportAlias, which allows to set the page name when exporting to Excel 2007 + added ability to split pages in export to XML + added support for Padding property in Word2007 export * now, in Excel 2007 export for sheets without pictures, files with a description of pictures and relations to them are not created * optimized saving of embedded fonts in PDF-export. File size has decreased significantly. - fixed page-break in Html export (PageBreaks property) - fixed SVG export with "Multiply export" parameter - fixed SVG export bug on hidpi monitor - fixed the names of files saved in the zip archive - fixed tab symbols width when export RichObject - fixed XPS export bug where documents exported on Linux would not open on Windows - fixed bugs with incorrect work of Anchor and Dock properties when exporting pages with unlimited width - fixed a bug in Excel 2007 export of text objects with enabled HtmlParagraph render type. Disable WYSIWYG export option to  export text instead of images. - fixed a bug of export to ODF when the document did not open in MyOffice - fixed a bug with closing cell with RichText when exporting to RTF - fixed a bug when exporting objects with rendering mode HtmlParagraph  - fixed a bug with exporting line with arrow cap in layered export to Word 2007 - fixed a bug with exporting line with arrow cap in export to PowerPoint 2007 - fixed saving report to Box - fixed saving report to OneDrive - fixed saving report to Google Drive - fixed a bug leading to System.OutOfMemoryException when exporting to PDF - fixed a bug with creation of incorrect file when exporting to Excel 2007 with big amount of pages and page breaks option - fixed a bug where export to image did not take into account the transparent background of the report - fixed a bug leading to System.NullReferenceException when exporting to Excel 2007 - fixed validation errors in export to ODT/ODS - fixed a bug in ODT-export when the file did not open correctly in Word 2019 - fixed a bug with incorrect line position when exporting to Word 2007 - fixed a bug when exporting to Excel 2007 in the "Seamless table" mode leading to table breaks, incorrect merging cells and incorrect exporting of images - fixed a bug where links with Russian letters did not work in PDF export - fixed a bug where the dates of creation and editing of the document did not match the equivalents in the metadata in PDF/A-1a export - fixed a bug while exporting to Excel 97 causes exception "Huge SAT not implemented" - fixed a bug with exporting texts containing ampersand '&' in Excel 2007 export - fixed a bug while exporting MapObject to PowerPoint - fixed a bug with saving default theme in export to Excel 2007 - fixed a bug with exporting gradient fills with owner or user password in export to PDF - fixed a bug with encryption of digital signature in PDF-export when protecting a document with a password - fixed a bug with paragraph offset in export to OpenOffice Writer - fixed a bug with exporting strings containing only spaces in DXF export - fixed a bug in PDF export, leading to disappearance of spaces when there are tabs in the report - fixed a bug with exporting page footers when export to Excel 2007 in seamless table mode - fixed a bug with exporting "\" character in Excel 2007 export - fixed a bug with incorrect indents in export to OpenOffice Writer - fixed a bug with incorrect size of picture in export to RTF - fixed a bug with page breaks in export to OpenOffice Writer - fixed a bug with paragraph offset in export to OpenOffice Writer - fixed a bug with text justify in exports to OpenOffice Writer and OpenOffice Spreadsheet - fixed a bug in Excel export (BIFF8) - fixed a bug with printing of layered Html export, when the report contains pages with landscape orientation - fixed a bug where exporting to EMF called an exception - fixed display of objects with negative height/width for layered Html-export - fixed bugs when exporting a multi-page report in XML - fixed a bug when PDF export generated incorrect file when EmbeddingFonts and InteraciveForms properties equal True - fixed view of background on BarcodeObject at Pdf and Html export - fixed bugs when displaying Shape, Barcode, Polygon etc. with fill (or background) in all exports with table layout ### FastReport Desktop release - our product for reporting automation URL: https://www.fast-report.com/news/release-fastreport-desktop Summary: Release of a new autonomous Low-code solution for creating and automated generation of reports for business - FastReport Desktop. Release of a new autonomous Low-code solution for creating and automated generation of reports for business - FastReport Desktop. Our stand-alone Low-code solution will help you to automate the generation and transmission of reports from multiple databases (and even several at the same time). Set up export of reports and send them to databases in a couple of clicks! Buying this product you’ll get: Visual designer for creating and editing reports. Builder in the form of a console utility for building and processing reports. GUI configurator for creating builder tasks. A convenient scheduler for completing tasks on a schedule. Viewer for displaying and printing ready-made reports. In the Standard edition, these utilities have to be manually connected to your project. In the Professional edition, we did it for you. A common interface of utilities and a report manager will help you set up business processes much faster. FastReport Desktop  will be an excellent replacement for the previous FastReport for DBA solution. Existing FastReport for DBA license will be changed to FastReport Desktop Professional Single at no additional cost. All clients will retain their remaining days on previously purchased licenses. If you have any further questions, please, email us at  support@fast-report.com . ### FastReport Embarcadero Edition URL: https://www.fast-report.com/fastreport-embarcadero-edition Summary: Get FastReport VCL Embarcadero Edition for free Get FastReport VCL Embarcadero Edition for free FastReport VCL - is an add-on component that allows your application to generate reports quickly and efficiently. FastReport provides all the necessary tools to develop reports, including a visual report designer, a reporting core, and a preview window. It can be used in the Delphi, C++Builder and RAD Studio environments. FastReport Embarcadero Edition is available only to registered users of: Embarcadero® Delphi XE2, Embarcadero ® C++Builder XE2, Embarcadero® Delphi XE3, Embarcadero ® C++Builder XE3, Embarcadero® Delphi XE4, Embarcadero ® C++Builder XE4 Embarcadero® Delphi XE5, Embarcadero ® C++Builder XE5, Embarcadero® Delphi XE6, Embarcadero ® C++Builder XE6, Embarcadero® Delphi XE7, Embarcadero ® C++Builder XE7, Embarcadero® Delphi XE8 and Embarcadero ® C++Builder XE8, Embarcadero® Delphi 10 Seattle, Embarcadero ® C++Builder 10 Seattle, Embarcadero® Delphi 10.1 Berlin, Embarcadero ® C++Builder 10.1 Berlin, Embarcadero® Delphi 10.2 Tokyo and Embarcadero ® C++Builder 10.2 Tokyo environments, Embarcadero® Delphi 10.2 Tokyo and Embarcadero ® C++Builder 10.2 Tokyo environments (Community Edition), Embarcadero® RAD Studio 10.3 Rio,  Embarcadero® RAD Studio 10.4 Sydney,  Embarcadero® RAD Studio 11.2 Alexandria, Embarcadero® RAD Studio 12 Athens  (provided by Embarcadero GetIT).  You can download FastReport VCL Embarcadero Edition  from the following link Compare FastReport Embarcadero Edition to other editions to see all the benefits. ### FastReport FMX 1.1 released! URL: https://www.fast-report.com/news/fastreport-fmx-1.1 Summary: FastReport FMX 1.1 released! FastReport FMX 1.1 released! Report generator for Embarcadero FireMonkey IDE.  + Added support of Embarcadero RAD Studio XE4 (iOS not supported) + Added support of FireMonkey FM3 + Added support of internal datasets: IBX, DBX, ADO (Win) + Added new internal dataset TfrxClientDataset (allow to load XML tables from the report) + Added linear barcodes component (2_5_interleaved, 2_5_industrial, 2_5_matrix, Code39, Code39 Extended, Code128, Code93, Code93 Extended, MSI, PostNet, Codebar, EAN8, EAN13, UPC_A, UPC_E0, UPC_E1, UPC Supp2, UPC Supp5, EAN128) + Added Hint system in the report designer, preview and the report + Added 2D barcodes: PDF417, DataMatrix + Added TfrxDBLookupComboBox control - for compatibility with FR4VCL reports - Fixed error when TfrxPreview wasn't available in the component palette - Fixed some printing problems in XE3 - Fixed error with toolbar buttons icons in the report designer - Fixed AV in some report editors - Fixed errors in some dialog form components - Fixed Font height rounding when zooming report - Fixed error when trying to set Color property from the report script code FastReportFMX customers can upgrade to new version for free. FastReport VCL customers can buy via cpanel with 50% discount. What's New in RAD Studio XE4 - Multi-device, true native app development - Develop apps for iPhone and iPad - iOS user interface controls - Rapid prototyping - IBLite and SQLite iOS database support - Multi-tier client support for DataSnap, web services and enterprise databases - Access more databases, on more devices, more easily with FireDAC - FireMonkey FM3 Application Platform. More information on the Embarcadero website . ### FastReport FMX commerce beta launched URL: https://www.fast-report.com/news/commercial-beta-fastreport-fmx Summary: FastReport FMX commerce beta launched FastReport FMX commerce beta launched Dear Fiends , We are pleased to inform you of the release for sales of FastReport FMX beta. All purchasers of FastReport FMX beta will be updated to the final FastReport FMX release. Use it , test it and e mail us with comments. Multi - platform r eport g enerator for Apple Mac OS X and Microsoft Windows . Compatible with Embarcadero RAD Studio XE2 (FMX library). Report generator FastReport FMX is the first multi - platform solution for including Business Intelligence into software based on the Embarcadero FireMonkey IDE (Delphi for MS Windows and Apple Mac OS X). PS: Existing customer s can get a 50% discount on FastReport FMX . ### FastReport FMX Demo Update URL: https://www.fast-report.com/news/fastreport-fmx-demo-update Summary: We have updated the demo of our cross-platform report generator for FireMonkey. Now the report designer is available both on Windows and on MAC OS X! We have updated the demo of our cross-platform report generator for FireMonkey. Now the report designer is available both on Windows and on MAC OS X! We have updated the demo of our cross-platform report generator for  FireMonkey . Now the report designer is available both on  MS Windows  and on  MAC OS X ! Take a part in the beta-testing: download it and evaluate it.  Download here: OSX demo, Win32 demo.  Your opinion is important to us!  You can see screenshots here.  The C ommercial C omponents set will be coming soon. Keep monitoring our news! ### FastReport FMX for Apple macOS X URL: https://www.fast-report.com/news/release-fastreport-fmx Summary: FastReport FMX for Apple macOS X FastReport FMX for Apple macOS X Fast Reports anno u nces the first professional report generator for Apple macOS X - FastReport FMX.  It is a reporting tool for the Fire Monkey environment ( packaged in Embarcadero Technologies Delphi XE2 which supports Apple macOS X and MS Windows).  A d emo version is available for download on the Fast Reports web site. Fast Reports plans to open sales of the full version in May 2012. Download links: OSX demo, Win32 demo ### FastReport FMX with XE3 support released! URL: https://www.fast-report.com/news/fastreport-fmx-1.0 Summary: FastReport FMX with XE3 support released! FastReport FMX with XE3 support released! FastReport FMX now supports FireMonkey 2 (Embarcadero RAD Studio XE3, Delphi XE3) as well as the previous version of FireMonkey (Embarcadero RAD Studio XE2, Delphi XE2).  W e have fixed a se ries of bugs and improved the speed and stability of reporting on Windows and on Mac OS X. For example – the bug with setting up FastReport VCL and FastReport FMX in the same IDE. You also need to download the current build of FastReport VCL from your customer panel.  All users of FastReport FMX beta can download the release for free and all users of FastReport VCL can purchase it with a discount via their customer panel . ### FastReport for DBA 2021.1 URL: https://www.fast-report.com/news/fastreport-dba-2021.2 Summary: FastReport for DBA 2021.1 FastReport for DBA 2021.1 In the new version of FastReport for DBA we have added support for high-resolution screens in the designer and preview of the prepared reports. We also added new exports DXF, XODT, XODS, PDF/A-1a, PDF/A-2u. Added new Visual Studio-styled icons. You may switch between icon packs in the "View/Options/User Interface" window (or, "File/Options/User Interface" if you use ribbon UI): The new icons are well suited for hiDPI screens.  There are also new barcodes: Swiss QR Code, ITF-14, Deutsche Post Identcode, Deutsche Post Leitcode, Japanese PostNet: Added ability for the Text object to display DB filed names in a simplified form when designing a report. You can activate this option in the "View/Options/Objects appearance" window. This option is off by default. When you turn it on the Text object with a single DB field will display the field name part only, with no datasource name: Added ability to set up each cell in the Matrix object's corner area. To do this use the cell's context menu and its commands "Split cell", "Merge cells": Added ability to connect to ElasticSearch. Connection is available in data wizard and from code. Significantly improved and redesigned connection to the CSV data source. VisibleExpression, PrintableExpression and ExportableExpression properties appeared. You can use them to adjust the values of the Visible, Printable and Exportable properties depending on some condition: Full list of changes:  [Engine] + added connection to ElasticSearch + added new barcodes: Japanese PostNet, ITF-14, Deutsche Post Leitcode, Swiss QR Code + added CountDistinct aggregate function (report totals and Matrix object totals) + added support of TLS 1.2 + added new 2 types of UncheckedSymbol for CheckBox + added ability to load XML data source by URL + added functions of converting numbers to words for Polish, Indian, Persian, Ukranian language + added rupee symbol for Indian currency + added the Report.Prepare (int pagesLimit) method, which allows to prepare a limited number of pages + added ability to align barcodes + added property PictureObject.ImageSourceExpression that allows to set expression containing source of image + added possibility to use expression in brackets in VisibleExpression, PrintableExpression and ExportableExpression properties + added the PictureObject.ImageFormat property, which allows to select the image storage format + added property MatrixObject.PrintIfEmpty, which allows displaying the matrix even if it is empty + added property Page.LastPageSource, which allows to configure the printer tray for printing the last page of the report + added VisibleExpression, PrintableExpression, and ExportableExpression properties + added property Report.Tag + added "AutoEncode" property for DataMatrix Barcode. By default, if true, it encodes the &1; as a symbol of FNC1. If false, the character is encoded as is. + added "OnScriptCompile" event that called when report's script compiles + added new TextQuality: SingleBitPerPixel and SingleBitPerPixelGridFit + added an ability to split table rows + added RUB, BYN and BBYN currencies to ToWordsRu function + added an ability to change decimal digits for Number, Currency and Percent formats when UseLocale property is true + added property "SplitRows" for MatrixObject. By default, its value is False and in this case rows with the same vaues are joined. If True - rows are split (like TableObject) * optimized copying streams in some cases * optimized and unified converter RichText to report objects * optimized work of VisibleExpression, PrintableExpression and ExportableExpression properties for bands * improved algorithm of converting RTF to report objects > these properties allow to set the value of the Visible, Printable, and Exportable properties, depending on the fulfillment of the specified condition - fixed a bug with incorrect tab width when TextObject.TextRenderType = TextRenderType.HtmlTextRenderer - fixed a bug with SubreportObject on a page footer band which caused StackOverflow exception - fixed a bug with Dock and Anchor properties of objects inside table/matrix cells - fixed a bug leading to System.ArgumentException when drawing PictureObject located outside the band - fixed a bug with incorrect work of right anchor (Anchor = AnchorStyles.Right) when page has unlimited width - fixed a bug with replacing a custom font with a default font when preparing a report - fixed a bug with vertical alignment when converting RTF (by default, now Top instead of Center) - fixed a bug with converting RTF tables to report objects - fixed a bug with page sizes could reset after preview - fixed a bug with printing a RichText object on large Windows scaling was happening incorrectly - fixed a bug leading to System.ArgumentOutOfRangeException in Substring functions - fixed a bug leading to System.ArgumentException when drawing PictureObject with some images - fixed a bug when tables were not displayed when connecting to Advantage Database via ODBC - fixed a bug where RichText went outside the page - fixed a bug with recompiling the report script that interacted with ChildBand - fixed a bug with incomplete copying of the matrix when copying the report page - fixed bugs when importing DevExpress reports - fixed bugs when importing RDL reports - fixed a bug when a band with the FillUnusedSpace property enabled was not displayed again, although there is enough free space - fixed bugs when importing List and Labels reports - fixed a bug where the AutoSize property for SvgObject did not work correctly - fixed a bug with TextObject.AutoShirnk=FontSize when TextObject's size is very small - fixed a bug with incorrect TotalPages variable value when it used in VisibleExpression - fixed a bug with converting RichText when RichObject.Text is null - fixed a bug with web response stream reader when connecting to remote JSON - fixed a bug while compiling the report with some expressions in the properties VisibleExpression, PrintableExpression and ExportableExpression - fixed a bug with incorrect checksum calculation in Deutsche Post Identcode barcode - fixed a bug where the designer crashed when the "Start new page" property is enabled for the page header child band - fixed a bug where the value of an expression was displayed by the text of this expression - fixed incorrect drawing of ITF-14 barcode - fixed a bug with transparency of RichObject - fixed a bug with text object visibility when Highlight.Visible parameter is enabled - fixed a bug with work of property PrintableExpression - fixed a bug with connection to PostgreSQL 12 and newer - fixed a bug when shifting SubReport to a new page didn't work correctly - fixed a bug when the data footer break away from the data when property "keep with data" is enabled - fixed generation of barcode GS1-128 - fixed incorrect value of Total, if it refers to another Total - fixed a bug where the table was not transferred correctly - fixed a bug with parsing xml with hexidecimal values, e.g. "To create it: " - fixed bug with trying to convert DBNull in empty string when ConvertNulls is disabled - fixed a bug when PageFooter with PrintOn=LastPage causes to print it on penultimate page [Designer] + added HiDPI support + new icons added. Use the designer's "View|Options|User interface" dialog to switch between icon packs. + added simplified display of DB field names in the designer + added collapse all/expand all button and search field for Report tree and Data tree + improved the behavior of the page panel + added ability to copy data source + added import of DevExpress reports saved in XML format + added the ability to add text and pictures by dragging and dropping them from the browser + added the ability to edit the number of rows and columns of the table by dragging the mouse + added loading of RTF texts, tables and styles when converting DevExpress file + added possibility to load CSV files via URL + added backlighting of the band that the selected element will located on when dragging is completed + added an ability to open subreport page by double-clicking on its object + added an ability to change fonts for Code Tab, Text Editor and Expression Editor + added an ability to replace pictures with drag & drop + added an ability to open report file by drag & dropping + added an ability to scroll the report horizontally while holding down the Shift key + added ability to drag & drop picture in format png, jpeg, jpg, gif, ico, bmp, tif, tiff, emf, wmf and text files in format txt, rtf + added ability to paste picture and text on page from clipboard + added ability to create new report page using: "+" button on the pages panel, double-click on empty space on the pages panel, "Ctrl+N" shortcut * when changing the window, the context menu now closes * now during autosave the selected item from the properties window is not reset * changed focus order of elements when clicking "tab" on a tab with creating swiss QR - fixed a bug leading to the crash of the report designer with an incorrect table in the data source. - fixed a bug with index of bounds in SQLBuilder in Designer - fixed a bug where the dialog page did not open if it had a GridControl  - fixed bugs in Right to Left mode - fixed a bug when rescaling the dialog form - fixed a bug with adding a barcode, leading to creation of a barcode with the wrong type - fixed a bug when dragging from functions created a NUD and an empty TextObject - fixed a bug when the RichTextBoxControl was not rendered correctly in the dialog workspace - fixed scaling issues in the WelcomeForm and Wizard windows - fixed a bug with copying an object, when an object with the same name was created - fixed a bug with empty database name after reloading the report - fixed a bug when double click to arrow buttons on report tab creates a new report page - fixed a bug where switching properties to alphabetical order did not work - fixed a bug with loading page size when converting DevExpress file - fixed a bug, when empty string in Datamatrix barcode causes exception - fixed a bug where the gauge window had the wrong width - fixed a bug where drag&drop to the matrix didn't work - fixed a bug leading to System.FormatException when opening DevExpress files - fixed a bug "Count cannot be less than zero." when opening DevExpress files - fixed a bug with moving objects in the report tree while holding down the Ctrl key - fixed a bug with drop down menu of select color button - fixed a bug when changing parameters after adding a line caused exception - fixed a bug with creating the Intelligent Mail barcode - fixed a bug with JSON-connection in Connection Wizard - fixed a bug with incorrect drawing of horizontal guides - fixed a bug when the width of objects was reset after closing Preview with enabled right anchor - fixed a bug when trying to set an incorrect RowSpan value to a MatrixObject cell - fixed a bug with dropping color, width and style in Border editor - fixed a bug with resizing PolyLineObject/PolygonObject, when it's copied with Ctrl+Drag - fixed a bug with inactive context menu "Size Mode" for SVG object - fixed a bug when subreport cannot be deleted when page linked to it was deleted before - fixed a bug when the buttons in the "Panel" in the "View" tab did not match the "Visible" property of the corresponding windows  [Preview] + added "About" button in toolbar of preview window + added an ability to scroll the report horizontally while holding down the Shift key + added exports menu editor > new editor is available in user interface options; exports can now be removed from exports menu * data source menu in Text Editor is now hidden in Preview * "Delete Page" button now disabled in Preview when only one page generated - fixed a bug with saving prepared reports containing converted RichObject - fixed a bug where the percentage of scale in Preview could be displayed incorrectly - fixed a bug leading to System.ObjectDisposedException when re-preparing the report - fixed a bug where the report could only be saved in the Box, regardless of the cloud storage selected in the menu   [Exports] + added exports to DXF, XODT, XODS, PDF/A-1a, PDF/A-2u + added support of ODF 1.2 in export to ODT/ODS + added option when export to Word 2007 "Do not add section breaks on page breaks". By default, both page breaks and section breaks are added. + added property ReportPage.ExportAlias, which allows to set the page name when exporting to Excel 2007 + added ability to split pages in export to XML + added support for Padding property in Word2007 export * now, in Excel 2007 export for sheets without pictures, files with a description of pictures and relations to them are not created * optimized saving of embedded fonts in PDF-export. File size has decreased significantly. - fixed page-break in Html export (PageBreaks property) - fixed SVG export with "Multiply export" parameter - fixed SVG export bug on hidpi monitor - fixed the names of files saved in the zip archive - fixed tab symbols width when export RichObject - fixed XPS export bug where documents exported on Linux would not open on Windows - fixed bugs with incorrect work of Anchor and Dock properties when exporting pages with unlimited width - fixed a bug in Excel 2007 export of text objects with enabled HtmlParagraph render type. Disable WYSIWYG export option to  export text instead of images. - fixed a bug of export to ODF when the document did not open in MyOffice - fixed a bug with closing cell with RichText when exporting to RTF - fixed a bug when exporting objects with rendering mode HtmlParagraph  - fixed a bug with exporting line with arrow cap in layered export to Word 2007 - fixed a bug with exporting line with arrow cap in export to PowerPoint 2007 - fixed saving report to Box - fixed saving report to OneDrive - fixed saving report to Google Drive - fixed a bug leading to System.OutOfMemoryException when exporting to PDF - fixed a bug with creation of incorrect file when exporting to Excel 2007 with big amount of pages and page breaks option - fixed a bug where export to image did not take into account the transparent background of the report - fixed a bug leading to System.NullReferenceException when exporting to Excel 2007 - fixed validation errors in export to ODT/ODS - fixed a bug in ODT-export when the file did not open correctly in Word 2019 - fixed a bug with incorrect line position when exporting to Word 2007 - fixed a bug when exporting to Excel 2007 in the "Seamless table" mode leading to table breaks, incorrect merging cells and incorrect exporting of images - fixed a bug where links with Russian letters did not work in PDF export - fixed a bug where the dates of creation and editing of the document did not match the equivalents in the metadata in PDF/A-1a export - fixed a bug while exporting to Excel 97 causes exception "Huge SAT not implemented" - fixed a bug with exporting texts containing ampersand '&' in Excel 2007 export - fixed a bug while exporting MapObject to PowerPoint - fixed a bug with saving default theme in export to Excel 2007 - fixed a bug with exporting gradient fills with owner or user password in export to PDF - fixed a bug with encryption of digital signature in PDF-export when protecting a document with a password - fixed a bug with paragraph offset in export to OpenOffice Writer - fixed a bug with exporting strings containing only spaces in DXF export - fixed a bug in PDF export, leading to disappearance of spaces when there are tabs in the report - fixed a bug with exporting page footers when export to Excel 2007 in seamless table mode - fixed a bug with exporting "\" character in Excel 2007 export - fixed a bug with incorrect indents in export to OpenOffice Writer - fixed a bug with incorrect size of picture in export to RTF - fixed a bug with page breaks in export to OpenOffice Writer - fixed a bug with paragraph offset in export to OpenOffice Writer - fixed a bug with text justify in exports to OpenOffice Writer and OpenOffice Spreadsheet - fixed a bug in Excel export (BIFF8) - fixed a bug with printing of layered Html export, when the report contains pages with landscape orientation - fixed a bug where exporting to EMF called an exception - fixed display of objects with negative height/width for layered Html-export - fixed bugs when exporting a multi-page report in XML - fixed a bug when PDF export generated incorrect file when EmbeddingFonts and InteraciveForms properties equal True - fixed view of background on BarcodeObject at Pdf and Html export - fixed bugs when displaying Shape, Barcode, Polygon etc. with fill (or background) in all exports with table layout ### FastReport for Lazarus is now available on Linux! URL: https://www.fast-report.com/news/trial-lazarus-linux-academic Summary: Update of editions for FastReport VCL and FastReport for Lazarus with the installer on Linux via DEB or RPM. Update of editions for FastReport VCL and FastReport for Lazarus with the installer on Linux via DEB or RPM. If you are making business software that has to be cross-platform or just run on Linux systems or native operating systems (among which there is also Linux), you will eventually need to create and output electronic documents for printing or export to some format (PDF, office, HTML, etc.). And FastReport VCL will come to the rescue with all of this. There is now a trial version of FastReport for Lazarus which will help you become familiar with all functions of the product before getting the full version. Previously, we could only issue compiled demo projects. A comparison of editions for Lazarus is available here. FastReport VCL for Lazarus has now become an independent cross-platform solution. Registered users can now install FastReport for Lazarus directly on Linux using DEB or RPM.  Read more about installation in this article . ### FastReport goes Open Source URL: https://www.fast-report.com/news/fastreport-goes-open-source Summary: FastReport goes Open Source FastReport goes Open Source We are very pleased to announce the launch of our Open Source project - Fast Report Open Source. We are hoping to develop a friendly community of .Net Core developers who will share our eagerness to create fast, powerful and convenient reporting tool for Windows, Windows Server, Linux and MacOS.  We also encourage you to be a part of the global reporting team! Join us on GitHub:  github.com/FastReports/FastReport ### FastReport goes printless* URL: https://www.fast-report.com/news/april-fool-2017 Summary: FastReport goes printless* FastReport goes printless* The newest report generator FastReport Desktop Green Edition has a disabled Print option.  Therefore you will never have to deal with empty paper trays, "Low ink" indicators and shredders again. It's a real thing! Check out our infomercial and never return to printing again!  *Happy April Fools' ### FastReport is discontinuing support for older Delphi versions URL: https://www.fast-report.com/blogs/discontinuing-support-older-delphi Summary: With the latest release of FastReport VCL 2023.2, older versions of Delphi are no longer supported. We explain in detail why. With the latest release of FastReport VCL 2023.2, older versions of Delphi are no longer supported. We explain in detail why. With the latest release of FastReport VCL 2023.2, older versions of Delphi are no longer supported. We explain in detail why. We no longer support older versions of Delphi with the latest release. We will tell you why. Even though we have been using Delphi since 1995, it is evolving and has undeniable advantages in the work of programmers. FastReport products for Delphi do not stand still as well, and we try to offer developers new and more modern features with each release. Important update: FastReport VCL no longer supports Delphi versions below 2010. We'll explain why. You may be wondering: why update Delphi, and what are the advantages of newer versions? The main ones are many new features that boost productivity in high-end application development. In this article, we will try to talk about the main changes in Delphi since version 7 and answer questions about the end of support for Delphi's old versions. 1. What versions are no longer supported in the FastReport VCL product? Borland Delphi 7 Borland Delphi 8 Borland Delphi 2005 Borland Delphi 2006 CodeGear Delphi 2007 Delphi 2009 Guaranteed support for FastReport VCL 2023.2 is available only starting with Delphi 2010 . 2. Why are we deprecating older versions of Delphi below 2010, and what is the deterrent to development for this deprecation? An important stage in the VCL development of report generators was the end of support for obsolete non-Unicode versions. It will help us work more intensively on improvements in FastReport and introduce more modern features with each release. Since the release of 2023.1 FastReport VCL supports Delphi versions starting with 2010. Several factors influenced this decision: Lack of native Unicode support in older versions, which imposes various restrictions on localization and working with strings and text; The need to support a lot of functions that become unnecessary when using new Delphi versions; There are no Generics and anonymous methods, which impose additional costs for human resources to support functions that could be implemented easier on standard IDE modules; It is not possible to use new VCL components, the independent implementation of which increases the development time. Their performance management also requires resources; 3. What is the advantage of moving to Delphi versions above 2010, and what technologies will we be able to use? Namespaces for multiple modules, the for... in...do loop, the inline directive for functions, and other code optimizations In Delphi, the compiler allows procedures and functions to have an inline directive, which improves performance. When a procedure or function meets certain conditions, the compiler inserts code at the exact point of invocation instead of generating a regular call. The inlining method can optimize performance and generate code that runs faster but at the cost of increasing code size. In this case, the binary generated by the compiler will be larger. The inline directives, like other directives, are used to declare and define functions and procedures. Fast code refactoring  Code refactoring is restructuring and modifying existing code without changing its functionality. Refactoring can speed up, simplify, and improve the performance and readability of application code. The refactoring service in Delphi analyzes and performs code redistribution operations. The service also displays changes in preview mode and the refactoring panel at the bottom of the code editor. Refactoring candidates appear as tree nodes that you can open to view additional items to be refactored. Warnings and errors are also displayed on this panel. You can access the refactoring service through the context and main menu. Unit Testing  New versions of Delphi include the open-source DUnit testing framework for creating and running automated tests. This framework facilitates test creation for application classes and methods. When used with refactoring, this feature can improve the stability of your application. Thanks to the timely launch of tests with changes in the project source code, you can find and fix errors in the early development stages. End-to-end support for Unicode at the language, library, and development environment levels Unicode is a standard that allows you to get a computer representation and work with any writing system. - The Unicode Standard: Version 5.0. 5. ed. Addison-Wesley Professional, 2006. 1472p A large number of character sets in different languages, such as Asian variants, can be represented using Unicode. The most common encodings are UTF (Unicode Transform Format) and UCS (Universal Character Set). See for more information on Unicode:  https://en.wikipedia.org/wiki/Unicode . One of the important changes in new versions of Delphi is that string types are now based on UNICODE. Data types such as AnsiString and WideString based on the ANSI standard and beyond are still workable given the size of strings in bytes. List of changes for Unicode support: String now means UnicodeString, not AnsiString Char now means WideChar (2 bytes, not 1), which is a UTF-16 character PChar means PWideChar AnsiString stands for the "old" String type No change: AnsiString WideString AnsiChar, PAnsiChar Short string contains AnsiChar elements The implicit conversion continues to work The active code page controls the mode (ANSI or Unicode), and ANSI strings are still supported. Operations that do not depend on character size: String concatenation Standard functions for working with strings. For example, Length, Copy, Pos, etc. Operators. For example , , CompareStr(), CompareText(), etc. FillChar() Windows API Many companies distribute their applications and/or exchange information with countries where Unicode support is critical. Generics "Generic" is a term for a generic type. It refers to using the language syntax for predefining data types in certain container types, such as arrays or collections. Generics allow you to write generic code that works with a specific data type, i.e., with a class or class method. You can also specify the type during runtime. Support for Generics has been introduced since Delphi 2009. Delphi RTL includes out-of-the-box implementations of collections (defined in the "Generics.Collections" module): TList TQueue TStack TDictionary TObjectList TObjectQueue TObjectDictionary TThreadedQueue Anonymous Methods An anonymous method is a procedure or function that does not have a name associated with it. Anonymous methods are parts of code that can be associated with variables or used as parameters for other methods. In addition, anonymous methods can use variables in the context in which they are defined. Declaring and using anonymous methods does not require complex syntax. The syntax is similar to closures in other programming languages. New VCL components (Custom Hints, Ribbon Controls, etc.) Direct-2D support  Direct2D API—program interface designed to interact with GDI, GDI+, and Direct3D. Direct2D redirects all drawing operations to the GPU (Graphic Processing Unit) instead of the CPU. It gives more resources to the application. Starting from Microsoft Windows 7, the ability to use Direct2D was added: API for hardware-accelerated 2D graphics output, allowing for improved performance when displaying 2D objects, bitmaps, and text. New versions of Delphi have Direct2D support at the IDE level. IDE Insight, Source Code Formatter, Search taskbar A new IDE Insight service has been added that allows you to enter a name and select project options and developer preferences from a list of suitable options. IDE Insight input fields include options for commands, files, components, and projects, among many categories. The Delphi environment offers code formatting according to templates by default. Also, IDEs now offer a fully customizable code formatting service activated by enabling CTRL+D. It ensures that the modules are formatted according to the predefined settings. Moreover, you can format all the modules included in the project using the project manager. Background compilation  In Delphi 2010, compilation can be done in the background. Thus, you can run the compilation process in a separate or parallel thread and continue working in the IDE while the project is being compiled. For example, during compilation, you can edit files and set or change breakpoints. Extended RTTI Run-time type identification (RTTI) provides information about objects, allowing them to interact within the application. The Delphi IDE is another good RTTI use case when using the object inspector, code editor, and modeling tools. Other programming languages have evolved to change the way we program, and Java and .NET applications demonstrate these innovations perfectly because modern programming languages offer new levels of dynamic interaction. Delphi 2010, thanks to Delphi's broad RTTI support for Win32, now has all the power of .NET and Java. The new RTTI system (RTTI.pas) is fully object-oriented and allows you to create and implement more dynamic interactions between objects. Operator overloading In new versions of Delphi, you can overload certain functions or "operators" in records. The names of the operand functions correspond to the symbolic representation in the source code. Class Helpers A "helper" is a type of class that introduces additional methods and properties by associating them with another class. These methods and properties can be used in the context of an associated (or derived) class. Class helpers are a way to extend a class without inheriting it. The "helper" class introduces additional scope only when the compiler finally determines the identifier name. Strict Private and Strict Protected Newer versions of Delphi have two options that control the visibility of class attributes: strict private and strict protected. Strict private: class attributes are visible only within the class in which they are declared. These attributes are invisible from methods declared in the same module or from those not being part of the class. Strict protected: Specifies that class attributes are accessible to descendants. Breakpoints in threads, "freeze/unfreeze" threads New memory manager and new RTL features Some RTL features have been improved to increase performance. The new FASTMM memory manager for Win32 applications allows Delphi 2006 applications to perform better and detect memory leaks by declaring ReportMemoryLikeonShudown := True anywhere in your code. Starting with Delphi 2006, in addition to detecting memory leaks, the speed of applications has also improved significantly. Classes for object-oriented I/O in files and directories Starting with Delphi 2010, a new IOUtils module has been added that includes three static classes: TDirectory, TPath, and TFile. In turn, these classes expose several static methods useful for I/O tasks. Most methods are feature and signature compatible with the .NET System.IO.Directory, System.IO.Path, and System.IO.File classes. 4. What should users do if they want FastReport VCL with Delphi 7-2009 (will it be possible to download FastReport VCL up to the 2023.2 version. Where and how to download it if available)? You can get the latest version of FastReport VCL with the Delphi 7-2009 support upon technical support request. 5. What is the technical support for FastReport VCL with Delphi 7-2009 (will it be unavailable, or will it be paid, will there be a transitional period)? As we no longer guarantee functionality in IDE versions below Delphi 2010, we discontinue technical support for issues related to these versions. Critical bugs resulting in the total failure of FastReport VCL with Delphi 7-2009 support can be fixed upon request at the developer's discretion. Rejection of outdated versions of Delphi 7-Delphi 2009 will allow us to redistribute the resources of the development team for more efficient development, reduce the time to implement new functions and devote more time to finding faults in FastReport VCL, which in turn will lead to more stable work of the software product. Our goal is to create a powerful and fast report generator for all developers, and we are sure this step will make our product even better. Tags: VCL, FastReport, Delphi ### FastReport is included now into the developer solution – Firebird.IBPhoenix URL: https://www.fast-report.com/news/firebird-IBPhoenix Summary: FastReport is included now into the developer solution – Firebird.IBPhoenix FastReport is included now into the developer solution – Firebird.IBPhoenix We are happy to inform our users that FastReport is included now into the developer solution for one of the most popular open-source databases – Firebird (www.firebirdsql.org). IBPhoenix (www.ibphoenix.com), the main company behind Firebird development, released Firebird Developer Pack 2007, which contains all necessary tools for development applications with Firebird, and as important part includes FastReport Standard Firebird Edition. Using Firebird Developer Pack 2007 and FastReport, Firebird developers now can easily create fast, robust and affordable reporting and business intelligence solutions. ### FastReport License Agreement: Translation from Legalese into Human URL: https://www.fast-report.com/blogs/licensing-explanation Summary: A plain-language explanation of the key restrictions in the FastReport license agreement, along with an invitation to discuss custom usage and partnership opportunities. A plain-language explanation of the key restrictions in the FastReport license agreement, along with an invitation to discuss custom usage and partnership opportunities. A plain-language explanation of the key restrictions in the FastReport license agreement, along with an invitation to discuss custom usage and partnership opportunities. Not long ago, at a seminar following a presentation, I received a great question about our new license agreement: "We’ve been using your libraries and components for generating reports for many years, but in 2024 you changed the terms to stricter ones. Do you want all our money?" Well, no, of course not! We want much more! :) But seriously — let’s figure it out together: https://www.fast-report.com/license/license-agreement-delphi 3. LICENSEE OBLIGATIONS; WARRANTIES; AND PROHIBITED CONDUCT 3.1 Prohibited Conduct. The Licensee shall not: (c) publish or otherwise make the Software available to any third party, or copy, lease, distribute, transfer, or reprint the Software or any part of it, except as explicitly stated in this Agreement and allowed by the purchased License; (d) change the names of files in the Software; (e) remove any references to the intellectual property or copyright of Fast Reports; (f) include the Software in a development environment, framework, report generator, or ERP, CRM, BPM, or ECM system without prior written permission from Fast Reports; (g) create a Solution that does not differ significantly from the Software, or whose main functionality is largely based on the functionality of the Software; (h) develop and/or distribute stand-alone report generators based on the Software; (i) develop and/or distribute a Solution (free, shareware, commercial, or otherwise) that directly or indirectly competes with the Software; (j) use the Source Code of the Software to create any software or product (free, shareware, commercial, or otherwise) that directly or indirectly competes with Fast Reports’ Software; (k) directly or indirectly disclose the Source Code or any solutions discovered through use of the Software to any party involved in the creation of software that directly or indirectly competes with Fast Reports’ Software; (l) distribute the Source Code of the Software; (m) hack, reverse engineer, translate, or decompile the Software, or use its Source Code and/or other components to create other programs or applications (including, but not limited to, freeware, shareware, or commercial software) that directly or indirectly compete with or replicate the functionality of the Software, without prior written permission from Fast Reports; (n) disclose the Source Code, Object Code, program code, or other parts of the Software, or methods of implementing its functionality, to any person involved in creating other programs or applications that directly or indirectly compete with or replicate the functionality of the Software, without prior written permission from Fast Reports. What does this actually mean? Let me try to translate it from legalese into plain human language. 1. Regular, specialized products do not require any additional licensing, even if they use an independent visual report designer. 2. You may not distribute our source code (which is obvious). And what isn't allowed? 3. You can’t create report generators. We’ve clearly specified this in item (h), as well as in (i) — “products that compete with ours,” and (g) — “products whose main functionality is based on ours.” Here’s a particularly important point. I originally formulated it for our lawyers as: “a product that itself produces products or artifacts containing report generators.” The lawyers rewrote it as: 4. Including the Software in a development environment, framework, report generator, or ERP/CRM/BPM/ECM system (item f). Why? Because systems like ERP, CRM, BPM, and ECM are often highly configurable, essentially development platforms or tools. Was this clause present in the previous license agreement? Yes, it was — practically in the same wording. Do our competitors have similar clauses? Yes, we’ve specifically researched the EULAs of our respected competitors. One way or another, such restrictions are always there. Does this mean “it's impossible to use and completely prohibited unless we talk to you”? No! If something seems impossible, but you really want to do it, you can always discuss it and come to an agreement. Think of this as an invitation to a new level of cooperation ! We already have many OEM partners around the world using FastReport in their development environments, in CRM/ERP systems, and even in their own report generators for other platforms. In fact, with Embarcadero, we have a very similar partnership: we provide licenses for distribution within their development tools! :) We even have a dedicated department to handle these kinds of requests. They’re not "sharks" — they’re kind and attentive colleagues. If you have specific needs or want to extend the functionality of the Software, we’re always open to discussion. We're ready to explore collaboration opportunities. And in any case, you can always write to me directly. Sincerely, Michael Philippenko Tags: FastReport, License Agreement ### FastReport Mono URL: https://www.fast-report.com/blogs/fastreport-mono You've probably heard that our team is working on porting the FastReport.NET to the Mono platform - we told this at our conference, held last year in Rostov-on-Don. Then followed a long silence, and now we are ready to show where do we go. The main feature of this demo is that it can work in Windows as well as in Linux. In order to run it under Windows, simply unzip the archive to any directory and run Demo.exe. Running the demo under Linux is somewhat more complicated. To get started, make sure you have installed the necessary libraries. The easiest way to install of development environment MonoDevelop with required libraries. To properly generate reports that contain built-in scripts, you need to install an additional package "mono-gmcs". This demo assumes that the font files are stored in the /usr/share/fonts/truetype directory. This is true for all modern versions of Linux. You should set an environment variable (FONTDIR) when the font files are located in another directory. Use following command: export FONTDIR = /my/fonts/path where /my/fonts/path is the path to the font directory. An interesting effect is observed when testing FastReport.Momo on MacOS X - a very long launching. However, after the launch of the FastReport.Momo it very quickly generates reports. Do not forget to set the font's path under MacOS X using an FONTDIR environment variable. Otherwise many exports will wont work. Notices, bugreports, and issues can be left on this blog, or send to the support@fast-report.com. Tags: MacOS, Mono, FastReport ### FastReport Mono 2013 released URL: https://www.fast-report.com/news/fastreport-mono-2013.1 Summary: FastReport.Mono 2013 released FastReport.Mono 2013 released What's news in our crossplatform reporting tool? Use the opportunity to publish reports on the web - version FastReport.Mono 2013 allows to use the report generator conjunctly with  the Apache web server. You'll find the example of WEB reporting in the folder "Demos/C#/Web". Do not limit yourself by using only the classic bar codes. In version FastReport.Mono 2013 added support of two-dimensional bar  code - QR-code. Using the QR-code allows to increase up to 100 times the amount of encoded information over traditional barcodes. - added WEB reporting server - improved look of navigator of generated HTML documents - added "Data Only" property to Xlsx export (Excel 2007 and later version) - added new barcode - QR-code - improved look of RichText object - fixed bug in BusinessObjects data source - improved logic of bands placement - optimization of two-pass report generation - added CC field to the E-mail client - added WYSIWYG  property to Excel 2007 export - memory optimization of big blob data - many minor fixes ### FastReport Mono 2016.2 released: overview of new features URL: https://www.fast-report.com/news/fastreport-mono-2016.2 Summary: What's new in FastReport Mono 2016.2? New build of FastReport Mono allows to use report generator on Linux in standalone mode without X Window System. What's new in FastReport Mono 2016.2? New build of FastReport Mono allows to use report generator on Linux in standalone mode without X Window System. What's new in FastReport Mono 2016.2? ✔ New build of FastReport Mono allows to use report generator on Linux in standalone mode without X Window System ✔ Improved quality of PDF export - fixed calculation of font metrics ✔ Speed up embedding fonts in PDF and XPS documents + added message window to script editor - fixed date format * improved PDF export + added < BR > html tag - fixed width of space and missing characters in PDF export - fixed crash on run in console mode (withut X Window Server) under Linux. Just add single line into your code: Utils.Config.DisableUIEvents = true; - fixed bug with Two-Pass single page ### FastReport Mono 2018 released: overview of new features URL: https://www.fast-report.com/news/fastreport-mono-2018 Summary: In the latest version of FastReport Mono we significantly renewed and improved WebReport - added support of interactivity and Online Designer. New exports into JSON, LaTeX. Added support of Maps and new data source - CSV. In the latest version of FastReport Mono we significantly renewed and improved WebReport - added support of interactivity and Online Designer. New exports into JSON, LaTeX. Added support of Maps and new data source - CSV. In the latest version of FastReport Mono we significantly renewed and improved WebReport - added support of interactivity and Online Designer. New exports into JSON, LaTeX. Added support of Maps and new data source - CSV. Version 2018 --------------------------------------------------- + added support Online Designer in WebReport + added outline (TOC) of report in WebReport + added property WebReport.DesignerConfig for storing custom configuration of Online Designer + added properties WebReport.RequestHeaders, WebReport.ResponseHeaders + added catching of exceptions on call of WebReport.DesignerSaveCallBack + added ToolbarBackgroundStyle.None (you can use WebReport.ToolbarColor instead bitmap from style) + added properties WebReport.UnlimitedWidth, WebReport.UnlimitedHeight for enable Unlimited size for all report pages (default: false - use report settings) + added property WebReport.Dialogs for enable or disable all report dialogs (default: true - enabled) + added property WebReport.ShowBackButton to display the "Back" button (return to previous report in the tabbed report) + added property WebReport.LogFile to log the errors in WebReport, may be combined with WebReport.Debug + added property WebReport.EnableMargins to use page margins in the output (default: false) + added support of Page.Fill in WebReport + added support of WebReport background color - WebReport.BackColor (default value: White) + added hyperlinks on bookmarks functionality (works only with Layers = true) + added hyperlinks on page number functionality (works only with Layers = true) + added click event handler functionality (works only with Layers = true) + added detailed reports - hyperlinks on hidden report page or report file (works only with Layers = true) + added new property WebReport.ShowTabCloseButton (default value: false) + added new property WebReport.TabPosition (default value: TabPosition.InsideToolbar) + added new example for Single Page Application \Demos\C#\Web\SPADemo + added new enum member TabPosition.Hidden for hidding tabs from toolbar + added properties Left, Top, Width, Height in CustomDrawEventArgs (can be used in WebReport.CustomDraw) + added showing Print Dialog in print in PDF + added properties WebReport.DocxRowHeightIs, WebReport.PdfShowPrintDialog + added function WebReport.PrintInPdf(bool ShowPrintDialog) for setup showing the Print Dialog in PDF + added event for rendering the custom objects in Web or overriding rendering of standard objects (WebReport.CustomDraw), works only with enabled WebReport.Layer + added support of layered HTML in WebReport (WebReport.Layers) with better WYSIWYG + added property WebReport.RefreshTimeout (time for report refresh in seconds, 0 - refresh disabled), this property may be useful for Dashboard functionality + added autosave report templates in designer + added abilty to save prepared reports into cloud storage + added export to JSON fomat + added export to LaTeX format + improved export to SVG format + improved export to graphics bitmap formats + improved Gauge object + added Map object + added new shapes + added new data source CSV format - fix PostgreSQL issue + added experimental implementation of RichText object + data access objects has been ported from FR.NET + added support of OTF files with CFF fonts (OTTO fonts) - fix font weight (!!! you should manually delete previous font.list file - ~/.local/share/FastReport/font.list or C:\Users\YourFolder\Local Settings\FastReport\font.list) - fix command line build under Linux and OSX (xbuild instead of mdtool) - fix clipping area in preview window under Linux and OSX - fixed path to TrueType fonts - fixed horizontal justify for "space before new line" case ### FastReport Mono How to run demo.exe under MacOS X URL: https://www.fast-report.com/news/fastreport-mono-macos-blog Summary: We are often asked: "You have the professional multi-platform report generator for MONO - FastReport.Mono. We are often asked: "You have the professional multi-platform report generator for MONO - FastReport.Mono. FastReport Mono - How to run demo.exe under MacOS X We are often ask ed : "You have the professional multi-platform report generator for MONO - FastReport Mono. Great! But how we can run the report demo under Apple MacOS X? ” Our developer Alex Mandrykin answers this in our  blog . ### FastReport Mono released URL: https://www.fast-report.com/news/release-fastreport-mono Summary: We are pleased to announce a new product - FastReport.Mono. FastReport.Mono is a multi-platform reporting solution. We are pleased to announce a new product - FastReport.Mono. FastReport.Mono is a multi-platform reporting solution. We are pleased to announce a new product - FastReport Mono. FastReport Mono is a multi - platform reporting solution. It can be used with Windows, Linux, Mac OS X and any operating system that supports Xamarin Mono. ### FastReport Mono. What is it? What for is it? URL: https://www.fast-report.com/blogs/what-is-mono Summary: Learn how to use Mono in reporting. Find more useful tips and articles in our blog. Learn how to use Mono in reporting. Find more useful tips and articles in our blog. Learn how to use Mono in reporting. Find more useful tips and articles in our blog. Mono is an open source development platform based on the .NET Framework, allowing developers to create cross-platform applications. The implementation of Mono .NET is based on the ECMA standards for C # and Common Language Infrastructure. Initially, Mono was developed by Novell, then it was developed by Xamarin, and now by Microsoft. The Mono project has an active and enthusiastic community. Mono includes both developer tools and the infrastructure needed to run .NET client and server applications. The Mono platform consists of several components: The C # compiler supports C # standard 1.0, 2.0, 3.0, 4.0, 5.0 and 6.0 (ECMA). Mono Runtime is the ECMA Common Language Infrastructure (CLI) framework. The runtime is provided by the Just-in-Time (JIT) compiler, the Ahead-of-Time compiler (AOT), the library loader, garbage collector, and so on. The .NET Framework class library. The Mono platform provides the implementation of libraries WinForms, ADO.Net, ASP.Net and others. Mono Class Library - Many classes have been created with additional functionality specifically for Mono, which go beyond the base class library provided by Microsoft. Despite the prejudiced attitude of developers to the Mono platform, many well-known companies use it. For example: • Novell uses Mono for client and server applications; • Unity Technologies uses Mono in the Unity 3D computer game simulation tool. This makes it possible to create cross-platform video games; • Artisteer uses Mono to transfer its web designer to another platform. Starting with version 2.2, you can run your software with Mono. Since there are not so many cross-platform generators, but really good ones can be counted on fingers, FastReports decided to create a report generator for Mono. Moreover, there is a ready-made popular report generator FastReport.Net, on the basis of which FastReport.Mono has been created. It appeared in 2013, and at that time it repeated the functionality of FastReport.Net. For now, however, there are differences between them. To be honest, FastReport.Net has made great progress. Nevertheless, FastReport.Mono remains a strong competitor in its niche. Moreover, personally I do not know other report generators under the Mono framework with such rich functionality. What does FastReport.Mono offer? • User-friendly and functional report designer; • Connection to any database, and not only. Even text files can be data sources, not to mention XML and JSON; • Presence of built-in report script. That gives the report huge opportunities. After all, you can use the Mono libraries directly in the report, to produce data transformations, and also work with report objects; • Web reports, based on ASP.Net; Let's take a closer look. With FastReport.Mono you can work in different operating systems. Well, of course, Mono is a cross-platform framework. Therefore, there are available systems: Windows, MacOs, the Linux family. To work with Mono, and accordingly with FastReport.Mono, the following development environments are suitable: Microsoft Visual Studio (under Windows), MonoDevelop (Windows, MacOs, Linux) and Embarcadero Delphi Prism (Windows, MacOs, Linux). Programming languages for working with FR.Mono: C #, VB.Net, Oxygene (Embarcadero Delphi Prism). The language of the built-in report script: C #, VB.Net. Everything is the same as in FastReport.Net. The data sources available by default are XML, CSV. And to connect to databases, you need to use the data source of the user application, or external connectors that are installed in the system. Interesting features of the report generator: • dialog forms - before displaying a report, you can display a form with controls. In this way, the report user can set the report display options. For example, filter the required values; • report inheritance - the ability to use the report as an initial template for others. This is convenient when you make many similar reports. In addition, changes to the base report will be displayed in all inherited reports. This can be attributed to the pluses as well. After all, you do not need to change a large number of reports if you need to edit the base template; • Preview report component - allows you to view the report and do its export, send email, and manage viewing by displaying a report plan, navigate between pages; • The report designer can be called separately as a standalone program, can be called up during the development of the user application, and during the execution of the user application. The latter option is very interesting. In fact, you embed the designer in your program and give the user the ability to edit the reports themselves. • Advanced print mode - another thoughtful tool. Print settings are very rich. Web reports are implemented through ASP.Net and ASP.Net MVC. What can I say -  it is a modern and popular approach. The list of possible export reports is quite large: Acrobat PDF; Images Jpeg/PNG/BMP/GIF/TIFF; RichText; Word OOXML (docx); PowerPoint OOXML (pptx); HTML; MHT (web archive); Microsoft XPS; Excel OLE; Excel XML; Excel binary (xls); Excel OOXML (xlsx); Comma separated values (CSV); DBF (table); Open Document Speadsheet (OpenOffice); Open Document Text (OpenOffice); Email; PostScript; Json; LaTex; FTP; Text File / Matrix Printer; Clouds (DropBox); Clouds (Box); Clouds (FastReport Cloud); Clouds (GoogleDrive); Clouds (OneDrive). Pay attention, the last elements of the list - Clouds – are essentially saving the report to cloud services. The format of the report file is frx, the same as in FastReport.Net. Yes, in fact, the reports are compatible between FR.Net and FR.Mono. Developers, choosing a logo for FastReport.Mono, showed wit. Judge for yourself. Here is the logo of the Mono platform: But the logo FastReport.Mono: In conclusion, I want to note that the transfer of FastReport.Net to the Mono platform was a strategically correct decision. Tags: .NET, MacOS, Mono, FastReport, C# ### FastReport Online Designer 2021.4.5 URL: https://www.fast-report.com/news/fastreport-online-designer Summary: FastReport Online Designer update release 2021.4.5. FastReport Online Designer update release 2021.4.5. New objects We have added a new object "Radial counter": This object allows you to visualize values. This counter has several types: Circle Semicircle Quadrant We have added a new object "Container": This object allows you to group other objects. We have added a new object "Digital Signature": This object is a signature field during PDF export. By clicking it in Acrobat Reader, you can attach your certificate. Note: Make sure the IsDigitalSignEnable property in PDFExport is set to true. We have added new shapes - pentagon, hexagon, heptagon, octagon: New opportunities Now you can set the angle of inclination of a text object. This can be done using the top control: Or using the Angle property: We have added the ability to set a different host for the backend To set a different host, you need to set the configuration in FastReport Online Designer Builder: After that, the compiled version of the designer will make requests to the specified host. It is also possible to set the host by adding the hostAPI property to the window before loading the designer: window.hostAPI = 'https://myawesomehost.com/'. We have added the ability to use your fonts Previously, you could not add your fonts in the designer. Now you can specify the address of the font server where the designer will receive them. To do this, you need to set the configuration in FastReport Online Designer Builder: After that, the designer will contact the specified address to get a new font, while sending family GET parameters (the family of the requested font) and report_id (the identifier of the current report template). Full list of changes FastReport Online Designer 2021.4.5 ---------------------------- + RadialGauge object was added; + Container object added; + DigitalSignature object was added; + the ability to set the rotation angle for the TextObject was added; + the ability to specify a different host for the designer backend was added; + new figures: pentagon, hexagon, heptagon, octagon; + the ability to set the address where the designer is going to receive fonts; - the autosize for some barcodes was fixed; - re-selection of the data source for the date band was fixed; - color selection for some browsers was fixed; - the display of some figures during report preparation was fixed; - the display of some barcodes was fixed; - incorrect size of Landscape pages when calling a preview from Online Designer was fixed; - loading fonts was fixed; - object insertion was fixed; * bundle size was optimized. ### FastReport products support the latest version of RAD Studio — 13.1 Florence URL: https://www.fast-report.com/news/fastreport-florence-13-1 Summary: Starting from version 2026.1.7, FastReport products for Delphi support the most up-to-date version of the development environment — RAD Studio 13.1. Starting from version 2026.1.7, FastReport products for Delphi support the most up-to-date version of the development environment — RAD Studio 13.1. Starting from version 2026.1.7, FastReport products for Delphi support the most up-to-date version of the development environment — RAD Studio 13.1. And in April, FastReport 2026.2 will be released with even more updates! Why is support for RAD Studio 13.1 Florence important? Developers have enhanced support for new platforms, improved stability, and increased IDE performance. But the key change is the introduction of Windows on ARM support in Delphi. Delphi now includes a native ARM compiler (Arm64EC). Applications can run directly on ARM-based devices without Intel emulation. This makes them faster and more stable, without unnecessary layers. However, FastReport VCL doesn't support the Arm64EC platform. At the same time, little to no code changes are required. The same projects can be compiled for Win32, Win64, and ARM. Essentially, this adds another platform while keeping the development process familiar. As a result, this update doesn’t disrupt existing workflows — it extends them. You can simply take an existing project, rebuild it for the new architecture, and get a more modern and high-performance application. You can purchase the latest version of FastReport for Delphi here . ### FastReport Publisher URL: https://www.fast-report.com/products/publisher Summary: A full-featured document generator for small and medium-sized businesses within their infrastructure. A full-featured document generator for small and medium-sized businesses within their infrastructure. A ready-made solution for creating, storing, and distributing reports through a graphical interface and via API, with database connectivity. FastReport Publisher A full-featured document generator for small and medium-sized businesses within their infrastructure. Buy for $1,990 Try for free Documentation On-premise solution The Publisher is fully deployed within your infrastructure - in a data center or on local servers. This is convenient, secure, and critically important for companies working with personal or commercial data. Simple installation The solution is delivered as containers and can be easily deployed in Docker. The package also includes an Installation Wizard for quick setup with Docker Compose. Members-only access Each user has their own profile, login, and access level. This ensures that your data is only available to authorized people. Your fonts — your style Upload TTF files and design report templates in line with your corporate identity. Don’t limit yourself to standard Arial or Times New Roman. Printing — fast and easy Print documents directly from your browser or export them to PDF. No extra steps required, works even from mobile devices. Multiple data sources Publisher connects to many sources: ClickHouse, CSV, Firebird, JSON, MongoDB, MS SQL, MySQL, Oracle, PostgreSQL, XML, and more. Just set up the connection and pull the necessary data into your reports. Works with any programming language How to Transition from FastReport Publisher to the Corporate Server We have already reviewed the differences between Publisher, Corporate Server, and Cloud in the previous article. In this material, we will discuss the reasons for replacing Publisher with the Corporate Server along with a migration plan. In this material, we will discuss the reasons for replacing Publisher with the Corporate Server along with a migration plan. Publisher — the Ideal Solution for Small and Medium-Sized Businesses The FastReport product line for creating, storing, and transmitting documents has been expanded with a new development. Since May 2025, it includes products such as Cloud, Corporate Server, and Publisher. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. Any other questions? Contact the manager ### FastReport Publisher - FAQ URL: https://www.fast-report.com/faqs/publisher Summary: Learn how to use the full-featured FastReport Publisher document generator in the infrastructure of small and medium-sized businesses. Learn how to use the full-featured FastReport Publisher document generator in the infrastructure of small and medium-sized businesses. Do I need to have programming experience to use FastReport Publisher? **No, you don’t.** Publisher is a low-code solution. Thanks to the User Panel, Administrator Panel, and visual Online Designer, reports can be created without knowledge of programming languages. Advanced functionality with APIs and scripts is available for developers. What report formats are supported? **More than 30 formats:** PDF, Word, Excel, PowerPoint, HTML, OpenOffice, XPS, SVG, LaTeX, JSON, CSV, and even ZPL and DXF. Choose the appropriate format when exporting—everything is already built-in. Can I install Publisher on my company’s internal network without Internet access? **Yes.** FastReport Publisher supports self-hosted installation: deploy it on your server in a closed network. Are my data sources supported? Most likely — yes. Publisher works with ClickHouse, MongoDB, MS SQL, MySQL, PostgreSQL, Oracle, CSV, JSON, XML, and others. If your source is not there—write to us, we will add it. How are users authenticated? Each user has a profile. Authorization via login/password is supported. There is also a built-in system of roles and access rights. If you need to connect external OAuth providers, consider using the Corporate Server. Can I create a report in the browser from my phone? Yes. The online designer is adapted for mobile devices. You can open, edit, and even export reports directly from your phone or tablet. Are company fonts supported? Upload your TTF files and use them in templates. This allows you to maintain your brand identity in every document. How does document delivery work? You can automatically send reports to email, to a folder via FTP, to Webhook or external clouds. If you need integration with your CRM, use the API. Is FastReport VCL supported? Yes. You can save reports from FastReport VCL directly to Publisher and download them back. How many users are supported? 15 users are supported by default. Configuring rights and roles allows you to flexibly scale the system to a larger number of employees. Contact us to connect additional users. Is there technical support? **Yes, of course.** We provide technical support through a ticket system. You can also get advice on implementation and custom integration. What if I need several workspaces (for departments/branches)? The system has the ability to create **isolated workspaces**. If you need more than is provided by default, write to us, we will extend the limit. Is it necessary to involve a DevOps specialist to install FastReport Publisher? If your organization has such specialists, then it will be a plus: changing the configuration, setting up CI/CD or switching to the senior solution—FastReport Corporate Server will be easy and fast. But in any case, the Publisher delivery includes an Installation Wizard, with which you can easily configure everything in a few clicks. What operating systems are supported? All OSs that support Docker: Windows, Linux (Debian, Ubuntu), macOS, and others. We have docker images based on both Debian. Also, a convenient “Installation Wizard” is available for Windows, with which even the least sophisticated user can install FastReport Publisher. What are the minimum system requirements? FastReport Publisher will run on almost any modern laptop, PC, or server with the following parameters: **Hardware:** - Processor: 2x1.80 GHz (x86_64) - RAM: 8 GB - Storage: 20 GB of disk space, it is recommended to take into account additional space for logs, cache and temporary report files **Software:** - Docker Engine: 19.03.0 or later - docker-compose: v2.12.2 or later What file formats are used to save templates and reports? By default, the formats of the FastReport .NET report generator are used: for templates—*.frx, for finished reports—*.fpx. It is also possible to store documents in FastReport VCL format—*.fr3 and *.fp3. What examples of Publisher implementation are you aware of? With the help of Publisher, you can solve a wide range of tasks: from standard tasks of the company’s document flow, printing utility bills to printing tickets for ballet, test results, and personalized gift packaging. And thanks to a convenient file system and the function of sending to mail and file storage, documents will easily find their client. ### FastReport Server 1.0 URL: https://www.fast-report.com/news/fastreport-server-1.0 Summary: FastReport Server 1.0 FastReport Server 1.0 New to the FastReport product suite, FastReport Server is a powerful enterprise reporting solution for creating and delivering reports. FastReport Server serves as the foundation of a broader Business Intelligence (BI) strategy by providing the most requested pieces of information reliably and securely - via the web or embedded in enterprise applications. FastReport Server includes a collection of reporting services that addresses all steps in the reporting process: data access and report design, report delivery and management, integration and standalone deployment. FastReport Server is the ideal small-scale report-delivery solution for small to medium size businesses. ### FastReport Server 2.0 released URL: https://www.fast-report.com/news/fastreport-server-2.0 Summary: FastReport Server 2.0 released FastReport Server 2.0 released All registered users of FastReport Server now get one license of FastReport Studio Business Edition.  You can get this license in Customer User Panel. Demo version of FastReport Studio is included in each install package of Server. * changed kernel to FastReport 4 + added configurations values refresh in run-time  + added reports list refresh in run-time + added templates support ("templates" folder), note: all template files have UTF8 encoding + added start in tray (command line: "start frxservice /tray", service should be stopped) + added Open Document Format support, export in Open Office files *.ods and *.odt + added scheduler feature in Server Configurator + added print to network printers from browser (see config.xml "AllowPrint", set to "no" by default), note: experimental feature + improved speed and stability - bug fixes ### FastReport Server 2.1 released! URL: https://www.fast-report.com/news/fastreport-server-2.1 Summary: FastReport Server 2.1 released! FastReport Server 2.1 released! + Added Windows Authentification mode * Improved CGI for IIS/Apache server * Advanced log information on errors * Stability improvements * Speed improvements - Bug fixes ### FastReport Server 2.2 released! URL: https://www.fast-report.com/news/fastreport-server-2.2 Summary: FastReport Server 2.2 released! FastReport Server 2.2 released! + added variables "AUTHLOGIN" and "AUTHGROUP" inside the any report   + now any report file can be matched with any (one and more) group, these reports are accessible only in matched groups + now you can set-up cache delays for each report file (reports.xml) + added new properties editor for reports in Configuration utility (see Reports tab) + added property "Xml" - "SplitType" in server configuration - allow to select split on pages type between none/pages/printonprev/rowscount + added property "Xml" - "SplitRowsCount" in server configuration - sets the count of rows for "rowscount" split type + added property "Xml" - "Extension" in server configuration - allow select between ".xml" and ".xls" extension for output file + added property "Html" - "URLTarget" in server configuration - allow select the target attribute for report URLs + added property "ReportsFile" - path to file with reports to groups associations and cache delays  + added property "ReportsListRenewTimeout" in server configuration + added property "ConfigRenewTimeout" in server configuration + added property "MimeType" for each output format in server configuration  + added property "BrowserPrint" in server configuration - allow printing by browser, added new template nav_print_browser.html + added dynamic file name generation of resulting formats (report_name_date_time) + added Windows x64 support (in WOW mode) * SERVER_REPORTS_LIST and SERVER_REPORTS_HTML variables (list of available reports) depend from user group (for internal authentification) * changed PDF export: added full Unicode support, improved performance, decreased memory requirements - fixed bug in garbage collector (Session Manager) - fixed bug with designer executable crash - fixed bug with variables lost on refresh/export ### FastReport Server 2.3 released! URL: https://www.fast-report.com/news/fastreport-server-2.3 Summary: FastReport Server 2.3 released! FastReport Server 2.3 released! v2.3  ==============  + added "scripts" folder for additional units ("uses" directive in report script)  + added logs for scheduler (add info in scheduler.log)  + added property "Reports" - "Scripts" in server configuration - set the path for "uses" directive in report script  + added property "Http" - "MaxSession" in server configuration - set the limit of maximum session threads, set 0 for unlimit  + added property "Reports" - "MaxReports" in server configuration - set the limit of maximum report threads, set 0 for unlimit  + added property "Logs" - "SchedulerLog" in server configuration - set the scheduler log file name  + added property "Scheduler" - "Active" in server configuration - enable of scheduler  + added property "Scheduler" - "Debug" in server configuration - enable writing of debug info in scheduler log  + added property "Scheduler" - "StudioPath" in server configuration - set the path to FastReport Studio, leave blank for default  * used FastReport 4.10 core  - fixed bug with MIME types in http header (content-type)  - fixed bug with default configuration (with missed config.xml)  - fixed bug with error pages  - fixed bug with "Export Setup" button in editor of scheduled task in configuration utility ### FastReport server in development URL: https://www.fast-report.com/news/fastreport-server-test Summary: FastReport server in development FastReport server in development Welcome to test our FastReport server. Now available on-line test version of the server. ### FastReport Studio 3.16 beta URL: https://www.fast-report.com/news/fastreport-studio-3.16 Summary: FastReport Studio 3.16 beta FastReport Studio 3.16 beta FastReport Studio is solution for developers who use following products in their work: Microsoft(R): Microsoft Visual Studio, Microsoft Access, Microsoft Excell, Microsoft FoxPro, and also Oracle PowerBuilder etc. FastReport Studio includes independent report designer, development means and also great number of demo reports and source texts of samples. Added User Manual, Programmer Manual, Command-Line Manual. Added Unicode support and wizards for even simpler and more comfortable automatic report generating and also built-in visual SQL-query builder for databases are worth mentioning. ### FastReport Studio 3.19 URL: https://www.fast-report.com/news/fastreport-studio-3.19-release Summary: FastReport Studio 3.19 FastReport Studio 3.19 + added new Delphi for .NET demo + added new C# demo: Report client for FastReport Server + added new C# demo: Picture - shows how to use IfrxPictureView interface + added new interface IfrxPictureView + improved interface (new buttons, splash and startup window) + added scheduler service (you can schedule your report and receive it by e-mail) + added configuration utility + added context help in designer (F1 key) + added method LoadPreparedReportFromStream(IStream *) to TfrxPreviewX + added method SavePreparedReportToStream(IStream *) to TfrxReport + added new interface:  IfrxDataBand * fixed C++ demos: variable demo, callback demo * updated C++ thread_test demo * updated C# DataSetDemo: added FrxDataSet class * updated C++ DynamicReport demo * updated: Method CreateReportObject() of IfrxReport interface has been changed in accordance to new requirements * updated Visual FoxPro demo * updated C# DataSetDemo: added FrxDataView class + sorting example ### FastReport Studio 3.20 URL: https://www.fast-report.com/news/fastreport-studio-3.20 Summary: FastReport Studio 3.20 FastReport Studio 3.20 + added interface IfrxFont. + added IfrxFrame interface + added IfrxDisplayFormat interface + added method ResetDataSet into IfrxDataBand interface + added support of NET streams  + fixed OnSaveReport event (added SaveAs argument) + added IfrxShapeView interface + added C# example of OnLoadreport and OnSaveReport events. + added OnLoadreport and onSaveReport events to IfrxDesignerEvents interface + added IfrxPage interface and GetPage enumerator for IfrxReport + improved RTF export + enhanced speed and reduced output file size of PDF export + added ParagraphGap support in PDF export + update German resources + update Turkish resources * AVG function now counts only non-Null values * RichView object is now WYSIWYG * lot of fixes and small updates * fixed IfrxMemmoView interface (added lot of properties - align, color, and etc) * modified OnSaveReport event of TfrxDesigner * property EnableLoadSaveEvents of IfrxDesigner interface splitted to EnableLoadEvent and EnableSaveEvent * updated C++ demo Variable (added lot of comments and emo report changed) * updated C# DataSetDemo example - fixed bug in AddVariable method of TfrxReport interface - fixed bug in RTF export with font style attributes - fixed bug with frames in PDF export - fixed paper size bug - fixed ParagraphGap in PDF export - fixed stack overflow error with report summary band - fixed error with dialog form - fixed big with TProgressBar property out of range on exports of blank page in HTML - fixed bug in PDF export with zero width/height of bitmap - fixed bug with checkbox object - fixed bug with datatree window - fixed error with chart datetime - fixed bug with inspector window in debug mode - fixed undo of password protected report - fixed some dataset problems - fixed ask save changes in designer - fixed PDF export (font color clNone looks as clBlack)  ### FastReport Studio 3.21 released URL: https://www.fast-report.com/news/fastreport-studio-3.21 Summary: FastReport Studio 3.21 released FastReport Studio 3.21 released + added new VB6 demos: Pictures,UserDataset and Dynamic report. + added IPersistPropertyBag interface to TfrxPreviewX ActiveX object + added Delphi for .NET example - keep reports in database + added IfrxRichView interface + added new Delphi for .NET demos (DataSetDemo and StreamExample) + added unicode support in HTML, "Rich Text" (RTF) and XML exports + added clipping in the preview + added printer fonts to fontname combobox + added transparency/backcolor to rich object * initial support of VB6 events  * modified C# Pictures example: Now it shows pictures from a demo table. * modified C# StreamExample: Now it demonstrates how to keep reports on database server. * added streaming methods to IfrxPictureView interface * changes in the databand editor * "Pictures" checkbox changed to combobox (none/jpeg/bmp/gif) in HTML export dialog  * "Styles" checkbox changed to "Continuous" in XLS and XML export dialog * update Danish resources * update Dutch resources  * update Brazilian resources - fixed C++ ActiveX demo - fixed method SelectDataset of IfrxReport. - fixed 'Size' property of the .NET Stream warapper - fixed IfrxReport::SelectDataset method. Corrected behaviour for deselection (Selected = false). - fixed IfrxComponent::FindObject method. It does not throw exception anymore in .NET environment - fixed ADO DataBase property of ADO Query and ADO Table. Now it can be set to zero. - fixed bug with incorrect codepage detection for page navigator in HTML export - fixed bug with incorrect export of EAN barcodes (digits beyond of border were croped) - fixed incorrect page breaks in RTF export - fixed shift problem - fixed monochrome bitmaps stretching - fixed copying grouped objects - fixed vband&overlay error - fixed setting of printer parameters - fixed KeepFooter + aggregate functions - fixed ado query parameters - fixes in database/table/query wizard - fixed bug with font charset in RTF export - fixed preview painting bug - fixed bug with rich when no printers installed - fixed copies in dmp export - fixed rtf expression parser - fixed bug with RTL reading brackets in PDF export - fixed input chinese chars in dialog controls - fixed shift behavior - fixed bug with right align and non-zero charspacing in PDF export - fixed bug with underline in HTML export - fixed overlay+keeptogether bug - fixed large font issues - fixed html tags ### FastReport Studio 3.22b released! URL: https://www.fast-report.com/news/fastreport-studio-3.22 Summary: FastReport Studio 3.22b released! FastReport Studio 3.22b released! Changes in FastReport Studio 3.22 * updated documentation + added new control for page headers/footers mode selection in RTF export dialog + added Frame, ShiftMode, and Align proprty to IfrxView interface + added IfrxSubreport interface + added IfrxHeader interface + added IfrxFooter interface + added IfrxMasterData interface + added IfrxDetailData interface + added IfrxSubdetail interface + added IfrxDataBand4 interface + added IfrxDataBand5 interface + added IfrxDataBand6 interface + added IfrxPageHeader interface + added IfrxPageFooter interface + added IfrxColumnHeader interface + added IfrxColumnFooter interface + added IfrxGroupHeader interface + added IfrxGroupFooter interface + added IfrxChild interface + added IfrxOverlay interface + added VB6 demo which shows how to use FindObject method, TfrxADODatabase and TfrxADOQuery objects + added IfrxStretcheable interface + added C# demo for Master/Detail relations for ADO objects + added IfrxChartAxis interface + added new types of TeeChart series + added new C# example: MailExportDemo. This example demonstrates how to use TfrxGzipCompressor and SendMail method of IfxrBuiltinExports interface. + added TfrxGzipCompressor object. + added timeout property to TfrxADOQuery + added timeout properties to TfrxADOConnection + added new C++ TeeChart demo + added new C# TeeChart demo + added new VC++ Crosstabs demo * updated CreateReportObject and CreateReportObjectEx methods of IfrxReport interface * IfrxReport->IfrxPrintOptins->PageNumbers sets the range of pages for print and export * updated TeeChart to version 7. * e-mail export now inherits the attachment file name from exports file name * update Danish resources * update German resources * preserve object names when working with clipboard * improved HTML, RTF exports * improved XML, Excel exports (thanks for Bali) * increased timeout in E-Mail export * update Danish resources * update Portuguese resources - fixed bug with export of barcodes with zoom more than two - fixed error when page number does not exist in page range in exports dialog - fixed bug with XML export (XML Parsing Error) - fixed bug with HideIfSingleDataRecord - fixed bug with empty page in HTML export - fixed IIF bug - fixed bug in XML export - fixed error with reportsummary band - fixed memory leaks when script has errors - fixed shift issues - fixed brush style bsBDiagonal and bsFDiagonal in PDF export - fixed bug with incorrect codepage of TfrxRichView in RTF export - fixed bug with margins in PDF export - fixed bug with stretched images ### FastReport Studio 3.23 released! URL: https://www.fast-report.com/news/fastreport-studio-3.23 Summary: FastReport Studio 3.23 released! FastReport Studio 3.23 released! Changes in FastReport Studio 3.23 - fixed bug with styles and numbers format in the XML export - fixed bug with continuous mode in the XML export - fixed bug with character height in PDF export - fixed aggregare error (comma in the field name) * update Portuguese resources - fixed compatibility with TLargeIntField - fixed bug with DefaultPath in XLS export+ added Charset property to IfrxFont interface + added OldStyleProgress property to IfrxReport interface + added new VB6 example of using ActiveX previews * ActiveX implemetation fixes  - fixed bug with RichText objects intersection in RTF export + added IfrxCustomCrossView, IfrxCrossView, IfrxDBCrossView interfaces ! renamed elements of frxSeriesSortOrder enumeration due to naming conflict: soNone -> so_None, soAscending -> so_Ascending, soDescending -> so_Descending ### FastReport Studio 4.5 released! URL: https://www.fast-report.com/news/fastreport-studio-4.5 Summary: FastReport Studio 4.5 released! FastReport Studio 4.5 released! + added activation + added support of multiple attachments in e-mail export (html with images as example) + added support of unicode (UTF-8) in e-mail export + added ability to change templates path in designer + added OnReportPrint script event + added TfrxDMPMemoView.TruncOutboundText property - truncate outbound text in matrix report when WordWrap=false + added new frames styles fsAltDot and fsSquare + added new event OnPreviewDblClick in all TfrxView components + added ability to change AllowExpressions and HideZeros properties in cross Cells (default=false) + added IgnoreDupParams property to DB components + added auto open dataset in TfrxDBLookupComboBox + added new property TfrxADOQuery.LockType + added TfrxPictureView.HightQuality property(draw picture in preview with hight quality, but slow down drawing procedure) + added unicode input support in RichEditor + added new function TfrxPreview.GetTopPosition, return a position on current preview page + added new hot-keys to Code Editor - Ctrl+Del delete the word before cursor, Ctrl+BackSpace delete the word after cursor(as in Delhi IDE)  - all language resources moved to UTF8, XML - fixed bug with html tags [sup] and [sub] - fixed width calculation in TfrxMemoView when use HTML tags - fixed bug with suppressRepeated in Vertical bands - fixed bug when designer not restore scrollbars position after undo/redo - fixed bug in CalcHeight when use negative LineSpace - fixed bug with Cross and TfrxHeader.ReprintOnNewPage = true - fixed  converting from unicode in TfrxMemoView when use non default charset - [fs] fixed bug with "in" operator - fixed bug with aggregate function SUM  - fixed bug when use unicode string with [TotalPages#] in TfrxMemoView - fixed bug with TSQLTimeStampField field type - fixed bug in XML/XLS export - wrong encode numbers in memo after CR/LF - fiexd bug in RTF export  - fixed bug with undo/redo commands in previewPages designer - fixed bug with SuppressRepeated when use KeepTogether in group ### FastReport Studio 4.6 released! URL: https://www.fast-report.com/news/fastreport-studio-4.6 Summary: FastReport Studio 4.6 released! FastReport Studio 4.6 released! + added IfrxCheckBoxView interface + added encryption for password protected reports. Please, backup your password protected reports prior to use this version. + added property 'Visible' to IfrxComponent interface + added method SetGlobalVariable to IfrxReport interface + added StrikeOut property to IfrxFont interface + added support of Enhanced Metafile (EMF) images in Rich Text (RTF), Open Office (ODS), Excel (XLS) exports + added tag, the text concluded in tag is not broken by WordWrap, it move entirely  + added ability to move band without objects (Alt + Move) + added ability to output pages in the preview from right to left ("many pages" mode), for RTL languages(PreviewOptions.RTLPreview)  + added new property Hint for all printed objects, hints at the dialog objects now shows in StatusBar  + added new property TfrxReportPage.PageCount like TfrxDataBand.RowCount + added sort by name to data tree + added TfrxStyles class in script rtti + changes in the Chart editor: ability to change the name of the series, ability to move created series, other small changes  + [fs] fixed type casting from variant(string) to integer/float - changes in report inherit: FR get relative path from current loaded report(old reports based on application path works too) - fixed bug in CrossTab when set charset different from DEFAULT_CHARSET - fixed bug in RTF export with some TfrxRichView objects - fixed bug when print on landscape orientation with custom paper size - fixed bug when use network path for parent report - fixed bug with Band.Allowslit = True and ColumnFooter - fixed bug with drawing subreport on stretched band - fixed bug with embedded fonts in PDF export - fixed bug with long ReportTitle + Header + MaterData.KeepHeader = true - fixed bug with RTL in PDF export - fixed bug with SubReport in multi column page - fixed bug with Subreport.PrintOnParent = true in inherited report - fixed bug with the addition of datasets by inheritance report  - fixed bug with width calculation when use HTML tags in memo  - fixed flicking in preview when use OnClickObject event - fixed free space calculation when use PrintOnPreviousPage - fixed preview bug with winXP themes and in last update - fixed subreports  inherit - Thumbnail and Outline shows at right side for RTL languages  - [fs] fixed bug with late binding ### FastReport Studio 4.7 released! URL: https://www.fast-report.com/news/fastreport-studio-4.7 Summary: FastReport Studio 4.7 released! FastReport Studio 4.7 released! FastReport Studio 4.7 released! • Added new demonstration program for Sybase PowerBuilder • Improved DrillDownd mechanism, should work correct with master-detail-subtetail nesting • Extened functionality of Vertical Bands • Extended interface of TfrxADOQuery object - added ability to dynamically set Master/Detail relation between SQL queries and dynamically set parameters of SQL queries. • Extended interface of TfrxReport object. • Extended functionality of build-in FastScript language. • Improved export abilites. • Improved compability with scripting languages like VB Script. • Fixed several demo programms. • Extended functionality of TfrxLineView object - now you can dynamically create LineView object and control its properties by external application. • Extended functionality of TfrxADOTable object - added new properties for access to table header - field names, field types and field size. • Fixed bug in vertical bands • Fixed small memory leak in subreports • Fixed minor bugs in Object Inspector and extended functionality of Objct Inspector • Fixed bug when Engine try to split non-stretcheable view and gone to endless loop • Fixed bug with HTML tags in memo when use shot text and WordWrap • Fixed MailExport and extended its diagnostic messages. FastReport Studio – is a “win32” report generator for software developers and business users.  Our customers can order FastReport Studio with discount. ### FastReport Studio 4.8 released! URL: https://www.fast-report.com/news/fastreport-studio-4.8 Summary: FastReport Studio 4.8 released! FastReport Studio 4.8 released! + added ability to split big bands(biggest than page height) by default  + added ability to use keeping(KeepTogether/KeepChild/KeepHeader) in multi-column report + added BDE engine + added DBX engine + added confirmation reading for TfrxMailExport + added new enumerations drDontEditReportScript and drDontEditInternalDatasets to TfrxDesignerRestriction + added new TfrxDesignerRestriction: drDontEditReportScript and drDontEditInternalDatasets + added PrnOutFileName property to printer options + added RTF 4.1 support for TfrxRichText object + added TfrxDesigner.MemoParentFont property + added TfrxGroupHeader.ShowChildIfDrillDown property   + added TfrxPrintOptions.PrnOutFileName property to set ability to print to file + added TfrxReportOptions.HiddenPassword property to set password silently from code + added TimeOut field to TfrxMailExport form  + added checksum calculating for  2 5 interleaved barcode * changed PDF export: added full unicode support, improved performance, decreased memory requirements - changed inheritance mechanism, correct inherits of linked objects (fixups) - fixed "Page" and "Line" variables inside vertical bands - fixed ActiveForm  ActiveX object - fixed bug in multi-column page when band overlap stretched PageHeader - fixed bug when cross tab cut the text in corner, when corner height greater than column height - fixed bug when designer place function in commented text block - fixed bug when designer shows commented functions in object inspector - fixed bug when engine delete first space from text in split Memo - fixed bug when Engine try to split non-stretcheable view and gone to endless loop - fixed bug when group doesn't fit on the whole page - fixed bug with displacement of subreport when use PrintOnParent property in some cases - fixed bug with DownThenAcross in Cross Tab - fixed bug with emf in ODT export - fixed bug with HTML tags in memo when use shot text and WordWrap - fixed bug with Mirror Mrgins in RTF, HTML, XLS, XML, OpenOffice exports - fixed bug with outline when build several composite reports in double pass mode - fixed bug with some codepage which use two bytes for special symbols (Japanese ans Chinese codepages) - fixed bug with using KeepHeader in some cases - fixed bug with using ReprintOnNewPage - fixed designer restrictions constants - fixed problem with PageFooter and ReportSymmary when use PrintOnPreviousPage property - fixed small memory leak in subreports - improved AddFrom method - copy outline - improved DrillDownd mechanism, should work correct with master-detail-subtetail nesting  - improved functional of vertical bands, shows memos placed on H-band which doesn't across VBand, also calculate expression inside it and call events (like in FR2) - improved script compilation - improved unsorted mode in crosstab(join same columns correctly) - improved WatchForm TListBox changet to TCheckListBox ### FastReport Supports .NET 10: New Opportunities for Business Development URL: https://www.fast-report.com/news/support-net-10 Summary: A new release has been launched, offering full support for the .NET 10 platform within the FastReport .NET reporting engine and libraries Business Graphics, FastCube, FastScript. A new release has been launched, offering full support for the .NET 10 platform within the FastReport .NET reporting engine and libraries Business Graphics, FastCube, FastScript. Our team is pleased to announce a significant milestone in the product’s evolution: a new release has been launched, offering full support for the .NET 10 platform within the FastReport .NET reporting engine. This update enables you to utilize the latest framework capabilities when creating complex reports and expand the functionality of your solutions. Among the key .NET 10 innovations that are especially valuable for business projects are: 1. Improved JIT compiler performance — reduced application startup and execution time, which is critical for high-load systems. 2. Enhanced asynchronous programming capabilities — simplified handling of long-running operations (data queries, report exports) without blocking the user interface. 3. Updated JSON API — faster serialization and deserialization of data commonly used in integrations with enterprise systems. 4. Increased security through new vulnerability protection mechanisms, which are essential when processing confidential business information. Integration of .NET 10 in FastReport .NET provides direct access to these features during report creation. You can now: Build reports using asynchronous data sources; Optimize generation speed thanks to improved JIT performance; Easily integrate reports into microservice architectures with JSON-based data exchange. Support for .NET 10 has also been added to the Business Graphics .NET data visualization library, the FastCube .NET C# library for real-time analytical processing, and FastScript .NET — a cross-platform library for executing complex C# scripts in environments without code generation. At Fast Reports, we consistently adhere to the principle of promptly and efficiently adopting new technologies. Our goal is to provide developers with tools that enable them to create modern, high-performance, and secure business solutions. Support for .NET 10 is another step in this direction, confirming our commitment to innovation and market needs. ### FastReport VCL URL: https://www.fast-report.com/products/fast-report-vcl Summary: VCL-component set for generating reports and documents for Delphi, C++Builder, RAD Studio and Lazarus VCL-component set for generating reports and documents for Delphi, C++Builder, RAD Studio and Lazarus VCL-component set for generating reports and documents for Delphi, C++Builder, RAD Studio and Lazarus FastReport VCL VCL-component set for generating reports and documents for Delphi, C++Builder, RAD Studio and Lazarus Download the demo Online demo Documentation Reports outside of templates Create labels, price tags, geo-reports with maps, infographics, along with traditional tabular and multi-level hierarchical reports. The "Text" object can show one or more lines of text. It can contain text mixed with expressions and database fields, supports simple HTML tags (b,i,u,strike,sub,sup,font color). All types of text alignment, text rotation at any angle, filling, framing are supported. The "Table" object provides the convenience of creating and editing tabular reports. A large selection of supported barcodes PDF417, DataMatrix, Aztec, MaxiCode and many others. Support for geographical maps of OSM and ESRI formats, as well as GPX routes. Indicators for data visualization. Shape, Diagram, Line, Table, Rich Text, "Checkbox", Image, Gradient, OLE Object, Pivot Table, etc. Links to page objects inside and outside the report. Building multiple reports in one preview window. The preview allows you to generate, print or export the received report to one of the many formats and send it by e-mail. The user can edit data and change some properties of objects in the preview without the report designer! Print. FastReport offers a wide range of printing options: cutting large pages into small ones, printing several small pages on a large one, printing with scaling. Support for matrix printers. FastReport XML (yes, FastReport stores reports in true XML format - you can be sure of the safety of your data!). Sending the report by email via SMTP/MAPI. Export to many formats PDF, HTML, HTML5, SVG, RTF, XLS, XML, BMP, JPEG, TIFF, E-mail, CSV, TXT, GIF, ODS, ODT, Excel (98, 2000, XP). Many of these formats are government and business standards for document management. Export complex objects such as RichText, Chart, Maps to vector primitives. Data Security Protect your templates and reports with strong data encryption. Adapt all source codes to your solutions. We place great importance on the protection of your data. Source code. Professional and Enterprise Editions of the product include all the source code for FastReport. This is very beneficial for companies that want to adapt the product to their own special needs. Avoid ‘rogue’ components and be in full control of all your software code, giving you absolute security! Reports only have access to data specified by your application and data can be made read-only. Encrypted templates and reports (by Rijndael-like algorithm). Data can be protected by a secure document password. Be confident in the security and confidentiality of your reports! Flexibility and interactivity Connect your own objects, export filters, functions, database engines without problems using the open FastReport architecture. Built-in script shell that supports 4 languages: PascalScript, C++ Script, BasicScript, and JScript. Interactive forms, drill-down (drop) reports, call another report with detailed information from the preview window with one mouse click. Flexible and open architecture. If FastReport doesn’t do enough for you, you can enhance it by creating and connecting your own objects (export filters, functions, and database engines) to your reports. Inheritance of report templates. Reports can be independent of your application, so the application does not require recompilation when a user requires changes in a report. Storage of documents Save and upload report templates and prepared reports to different file repositories. I/O transport filters allow you to save and load report templates and prepared reports to different file storages, as well as save exported files. The following remote storage is supported: Email, FTP, DropBox, Skydrive, Box.com , Google Drive. Easy integration with any data FastReport VCL supports connection to many popular databases and third-party libraries, such as: ADO, BDE, DBX, IBX, FIBPlus, FireDAC and others. FastReport supports many libraries for database access: FireDAC, ADO, BDE, DBX, IBX, and FIBPlus, so providing access to practically all databases, including Oracle and many third-party libraries. Data generated within your application. Passing out of both static and dynamic records. Internationality Work comfortably in any language of the world and even in several languages at the same time! FastReport VCL supports more than 32 localization languages. UNICODE. Reports can use any language in the world, and even multiple languages simultaneously, maintaining true internationality! The FastReport interface is localized in dozens of languages. The file format allows reports to be translated at a local level. Documentation and help files are available in English, German, Polish. Learn more Learn more Client-Server components Learn more Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. The article provides a detailed overview of the watermark functionality in FastReport VCL — covering both the visual interface and programmatic methods using Delphi code and report scripts. Any other questions? Contact the manager ### FastReport VCL - FAQ URL: https://www.fast-report.com/faqs/fastreport-vcl Summary: Learn all about FastReport VCL, its functionalities, and how to optimize your reporting solutions. Learn all about FastReport VCL, its functionalities, and how to optimize your reporting solutions. Do you provide technical support for FastReport VCL? Yes, for customers with an active subscription Is there a paid enhancement to the FastReport VCL functionality? Yes, on a contractual basis. Do I need to attach a FastReport VCL license file to my product under development? Registration of a single software license gives you the right to write and compile your own application programs that use the software contained in the Product. All copies of the software that you write and distribute must indicate the Licensor's copyright. You can find more information in the license agreement. Please explain in detail what is the difference between the main types of licensing? Basically, our products have three types of licensing: Single License for one seat (for one developer). Team License – 4 seats. Additionally, it includes a license for the Build server. Site License – an unlimited number of seats registered at the same geographical address. Additionally, it includes a license for the Build server. How much does it cost to renew FastReport VCL licensing? And what will I get from it? You can renew your licensing in your control panel. Renewals include technical support and product updates. It is available at 1/2 of the full price per year. When your license has expired, you have two options: - Renew your license. This will allow you to receive technical support and product updates. - Continue to use FastReport VCL. In this case, you will not be able to use the latest product updates and receive technical support. Is it possible to use FastReport VCL on the server? Yes, on a Windows server if you are using Embarcadero's IDE or if you are using Lazarus, on a Windows server with Linux (multithreading limitations), FastReport VCL, starting with the Enterprise version, includes a set of server components Which IDE versions does FastReport VCL support? With the release of FastReport VCL 2023.2, only IDEs from Delphi 2010 to the most recent versions are supported. Can I dynamically change the localization of the designer and the preview window? Make the language file a mkall.bat utility (located in the language directory) and include the language dynamically: ``` uses frxRes; frxResources.LoadFromFile('english.xml'); ``` How do I convert reports from Report Builder to Fast Report? Add the ConverterRB2FR module to the uses section. In run-time, in the Fast Report designer, you will be able to open Report Builder reports and resave them in the Fast Report format. In the script, I'm trying to set boundaries for Memo: Memo1.Frame.Typ := [ftLeft, ftRight, ftTop, ftBottom]. I get an error. The Fast Report script does not support multiples. You need to do this: ``` Memo1.Frame.Typ := ftLeft + ftRight + ftTop + ftBottom; ``` When the project is being compiled, the following message is displayed 'Class TfrxButtonControl not found' (TfrxRichView, TfrxCrossView, TfrxOLEView,TfrxBarCodeView, TfrxCheckBoxView, TfrxGradientView, TfrxChartView, TfrxADOQuery etc.). Add TfrxDialogControls (TfrxRichObject, TfrxCrossObject, TfrxOLEObject, TfrxBarCodeObject, TfrxCheckBoxObject, TfrxGradientObject, frxChartObject, TfrxADOComponents etc) to the report from the Fast Report Component palette or add frxDCtrl, frxRich, frxCross, frxOLE, frxBarcode, frxChBox, frxGradient, frxChart, frxADOComponents modules to the uses section. How to insert your report name in the preview title? To insert your report name in the title, run: ``` frxReport1.ReportOptions.Name := 'My report'; ``` I have lost the object inspector in the report designer (data tree, standard toolbar) In the designer, go to the View|Settings menu and click the Restore Settings button How can I put the latest record from the database on a separate page? ``` procedure MasterData1OnBeforePrint(Sender: TfrxComponent); begin if MasterData1.DataSet.RecNo = MasterData1.DataSet.RecordCount-1 then Engine.NewPage; end; ``` How do I convert reports from QuickReport to Fast Report? Add the ConverterQR2FR module to the uses section and: ``` conv := TConverterQr2Fr.Create; conv.Source := QuickRep1; conv.Target := FReport; conv.Convert; FReport.SaveToFile('converted_fromQR.fr3'); ``` In the preview, the text displayed in TfrxMemoView is different from TfrxRichView, even though the font type and size are the same. Set the `TfrxRichView.Wysiwyg` property to False. After closing the preview window, Delphi fails to retrieve the values of the report variables Before generating the report, add: ``` frxReport1.EngineOptions.DestroyForms:=False; ``` How to load an RTF file in a script into TfrxRichView component? Use this code: ``` Rich1.RichEdit.Lines.LoadFromFile() ``` How do I stop building a report? Use this code: ``` frxReport1.Engine.StopReport; ``` How to display columns not from top to bottom, but from left to right? If you set the number of columns for a page, then the entries will be displayed from bottom to top, and if you set the number of columns for a band, then from left to right. In the designer, the text in the memo is unreadable when typing text in a memo with a font size set to 6 pt. In the designer, go to the View|Settings menu and uncheck the Use object font option The colors in the band titles disappeared. What to do? Enable the "Show band titles" option in the designer in the View-Settings menu I have created a report using Wizard. Now I can't change the color, font of the report elements Wizard created the report using styles. You need to either change the appropriate style or clear the style of the object I cannot change the connection parameters for the ADODataBase in the script, and the application shows an error "Operation is not allowed because object is open." It was possible in version 3. How can I resolve the issue of changing the database connection details? Try setting ``` ADODataBase.Connected=False ``` before changing the connection settings, and then reconnect How can you print empty cells to the end of the page if MasterData1 contains 3-5 rows of data? Add another`MasterData2` to the report with empty cells and manage the `MasterData2.RowCount` value in the script in the data footer engine How can I repeat the printing of MasterData the required number of times? The number is specified in one of the record fields. Add the `DetailData` band to the report. Set `DetailData.RowCount=1` (This is required!) In the `MasterData1OnBeforePrint` event, set `DetailData.RowCount:=` On the `DetailData` band, place a memo with fields from the dataset linked to `MasterData.` Set the `MasterData` height to 0: `MasterData.Height=0` In the report script, the values of Page1.PaperHeight, Page1.TopMargin, etc., are represented in mm, while the values of the height of objects are represented in pixels. How to convert mm to pixels? Use the constants `fr01cm` (to convert mm to pixels), `fr1cm` (to convert cm to pixels) in the script Depending on certain conditions, I want to hide/show specific pages of the report in the script, but the code Page1.Visible := False does not hide Page1. You can set the visibility of the report page before it starts rendering, for example, in the main report procedure. Your code will not work in `Page1.OnBeforePrint`. In the FastReport2 version, when creating a MasterBand, it is possible to select Virtual DataSet. FR4 does not have such item Set the band's `RowCount` property Does FastReport work with Delphi XE7 to build a 64-bit application? Yes Which driver is used to connect ODBC for SQL Server? ADO, but you can use others as well Is it true that using TfrxBDEComponents is impossible and instead you always need to use TfrxDBDataset and TDataSet? Yes, you either need to make internal datasets yourself or look for implementations I have several custom non-convertible QR components (e.g., TMyQRLabel, which only modify default properties). Is there a way to convert them? Yes, you can add a condition with `TQRLabel` in your class name in the converter module. Is there a way to pass code in events when using QR code, for example, before printing for the band? The script does not convert If the QR report inherits from another QR report, the conversion fails. Is there a way around this? Support for inherited forms is not yet available. How do I load and unload from the database? When reading, an "invalid format" error appears. ``` Set Stream.Position := 0; ``` I need to pass a Unicode string to the report. How can I do that? Pass the string in UTF8 encoding. For example, the character "diameter" can be passed with the following code: ``` frxReport1.Script.Variables['test']:= UTF8Decode('⌀'); ``` When building a report with a cross table, there is an error «Could convert variant of type (String) into type (Double)». If string values are used in a cross table cell, then you need to disable the aggregate function in the "Cross Tables" editor. Do you have a Technical Support Statement? Yes, you can find at: **[Technical Support Statement](https://www.fast-report.com/technical-support-regulations)** Where can I contact FastReport VCL technical support? Users can send requests via email to support@fast-report.com, through the request form on the website from the **[client panel](https://cpanel.fast-report.com/)**, or via **[online chat](https://www.fast-report.com/)** How can I add a button to the preview window? Use this code: ``` uses frxClass, frxPreview, ComCtrls, ToolWin, Buttons; ... procedure TForm1.ButtonClick(Sender: TObject); begin ShowMessage('My Button pressed'); end; procedure TForm1.frxReport1Preview(Sender: TObject); var Button: TSpeedButton; begin // Add a new button Button := TSpeedButton.Create(TfrxPreviewForm(frxReport1.PreviewForm).ToolBar); Button.Parent:=TfrxPreviewForm(frxReport1.PreviewForm).ToolBar; Button.Caption:='My Button'; Button.Width:=60; Button.Left:=650; // New button handler Button.OnClick:=ButtonClick; end; ``` You can also add a button to the standard Preview not from the OnPreview event, but from the OnEndDoc event. This option is useful for two cases: 1) When the handler of this button does something with the preview data. In this case, it is undesirable to create the button from OnPreview, as it will be active even during report generation. 2) When the additional button should appear under certain conditions, which are set in the pre-print dialog (frxDialogPage). For PDF Export Button ``` uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, frxClass, frxExportPDF, frxPreview, frxDsgnIntf, Menus; type TForm1 = class(TForm) frxReport1: TfrxReport; frxPDFExport1: TfrxPDFExport; SaveDialog1: TSaveDialog; procedure FormCreate(Sender: TObject); procedure frxReport1Preview(Sender: TObject); procedure PDFExport(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.PDFExport(Sender: TObject); begin if SaveDialog1.Execute then begin frxPDFExport1.FileName:=SaveDialog1.FileName; TfrxPreview(frxReport1.Preview).Export(frxPDFExport1); end; end; procedure TForm1.FormCreate(Sender: TObject); begin frxReport1.ShowReport; end; procedure TForm1.frxReport1Preview(Sender: TObject); var i, j, mi: integer; begin TfrxPreviewForm(frxReport1.PreviewForm).PdfB.OnClick:=PDFExport; for i := 0 to frxExportFilters.Count - 1 do begin if TfrxCustomExportFilter(frxExportFilters[i].Filter).ClassName = 'TfrxPDFExport' then mi:=i; end; TfrxPreviewForm(frxReport1.PreviewForm).ExportPopup.Items[mi].OnClick:=PDFExport; for i:=0 to TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items.Count-1 do begin if TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i].Caption=TfrxPreviewForm(frxReport1.PreviewForm).ExportB.Hint then begin for j:=0 to TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i].Count-1 do if TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i][j].Caption=TfrxPreviewForm(frxReport1.PreviewForm).ExportPopup.Items[mi].Caption then TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i][j].OnClick:=PDFExport; end; if TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i].Caption=TfrxPreviewForm(frxReport1.PreviewForm).PdfB.Hint then TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[i].OnClick:=PDFExport; end; end; end. ``` There is a list of reports. For preview, when selecting a report, you need to show the user only the first page of the report. How to do it? Use the code ``` procedure TForm1.frxReport1Progress(Sender: TfrxReport; ProgressType: TfrxProgressType; Progress: Integer;) begin if Progress > 1 then frxReport1.Engine.StopReport; end; procedure TForm1.Button1Click(Sender: TObject); begin frxReport1.PrepareReport(); while frxReport1.PreviewPages.Count > 1 do frxReport1.PreviewPages.DeletePage(1); frxReport1.ShowPreparedReport; end; ``` The TfrxPreview component does not have a button panel similar to the one in the standard preview window. Is it possible to create your own panel similar to the standard one? Of course, you can. You can create a panel with buttons and use the following `TfrxPreview` methods for each ``` frxPreview1.Print button; frxPreview1.LoadFromFile; frxPreview1.SaveToFile; frxPreview1.Export(Filter); frxPreview1.Find; frxPreview1.Zoom:=frxPreview1.Zoom + 0.25; frxPreview1.Zoom:=frxPreview1.Zoom - 0.25; frxPreview1.OutlineVisible := frxPreview1.OutlineVisible; frxPreview1.ThumbnailVisible:=not frxPreview1.ThumbnailVisible; frxPreview1.PageSetupDlg; frxPreview1.Edit; frxPreview1.First; frxPreview1.Prior; frxPreview1.PageNo := 1; frxPreview1.Next; frxPreview1.Last; ``` How do I hide a menu button in the designer? Similar to the preview window: ``` procedure TForm1.frxDesigner1Show(Sender: TObject); begin if Sender is TfrxDesignerForm then begin TfrxDesignerForm(Sender).OpenB.Visible := False; end; end; procedure TForm1.frxDesigner1Show(Sender: TObject); var i: integer; begin if Sender is TfrxDesignerForm then begin for i:=0 to TfrxDesignerForm(Sender).ObjectsTB1.ButtonCount-1 do if TfrxDesignerForm(Sender).ObjectsTB1.Buttons[i].ImageIndex in [30, 32] then //the COPY APPEARANCE and SERVICE TEXT buttons are hidden TfrxDesignerForm(Sender).ObjectsTB1.Buttons[i].Visible:=False; TfrxDesignerForm(Sender).DataTree.FunctionsTree.Visible:=False; TfrxDesignerForm(Sender).DataTree.ClassesTree.Visible:=False; end; end; ``` How to implement editing of TfrxRichView and TfrxPictureView in the preview window using the standard TfrxRichView and TfrxPictureView editing dialog boxes? Use the code ``` uses frxRich, frxRichEditor, frxDesgn; procedure TForm1.frxReport1ClickObject(Sender: TfrxView; Button: TMouseButton; Shift: TShiftState; var Modified: Boolean); begin if Sender is TfrxRichView then with TfrxRichEditorForm.Create(Form1) do begin RichView := TfrxRichView(Sender); Modified := ShowModal = mrOk; Free; end; end; uses frxDesgn, frxEditPicture; procedure TForm1.frxReport1ClickObject(Sender: TfrxView; Button: TMouseButton; Shift: TShiftState; var Modified: Boolean); begin if Sender is TfrxPictureView then with TfrxPictureEditorForm.Create(Form1) do begin Image.Picture.Assign(TfrxPictureView(Sender).Picture); Modified := ShowModal = mrOk; if Modified then TfrxPictureView(Sender).Picture.Assign(Image.Picture); Free; end; end; ``` How do I change the connect string for TfrxADODataBase to avoid getting an error message if the user's connect string is different from the connect string set by the developer in the report template? To implement this functionality, you need to disable the connection when loading a report in the `TfrxReport.OnBeforeConnect` event ``` var Form1: TForm1; Connect: Boolean; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Connect:=False; frxReport1.LoadFromFile('C:\test.fr3'); Connect:=True; TfrxADODataBase(frxReport1.FindObject('ADODatabase1')).Connected := False; TfrxADODataBase(frxReport1.FindObject('ADODatabase1')).DatabaseName := 'Provider=Microsoft.Jet.OLEDB.4.0; User ID=Admin; Data Source=C:\Program Files\FastReports\FastReport 4\Demos\Main\demo.mdb'; TfrxADODataBase(frxReport1.FindObject('ADODatabase1')).Connected := True; frxReport1.ShowReport(); end; procedure TForm1.frxReport1BeforeConnect(Sender: TfrxCustomDatabase; var Connected: Boolean); begin if not Connect then Connected:=False; end; ``` How can I change the paper type when printing a report? You can access all fields of the DEVMODE structure in the `OnPrintPage` event. For example, to change the DM_MEDIATYPE field, you can use the following code (and similarly for other fields): ``` uses frxprinter; procedure frxReport1PrintPage(Page: TfrxReportPage; CopyNo: Integer); procedure ChangeMediaType(mType: Integer); begin if frxPrinters.Printer is TfrxPrinter then with TfrxPrinter(frxPrinters.Printer) do begin DeviceMode.dmFields := DeviceMode.dmFields or DM_MEDIATYPE; DeviceMode.dmMediaType := mType; SetPrintParams(Page.PaperSize, Page.PaperWidth, Page.PaperHeight, Page.Orientation, Page.Bin, Integer(Page.Duplex), frxReport1.PrintOptions.Copies); end; end; begin if idx = 0 then ChangeMediaType(DMMEDIA_TRANSPARENCY) else if idx = 1 then ChangeMediaType(DMMEDIA_GLOSSY) else ChangeMediaType(DMMEDIA_STANDARD); inc(idx); end; ``` Two TfrxReportPage objects are generated in the report. On the first page, data for the front side of the sheet is printed, and on the second page, data for the back side is printed. For duplex printing, it is necessary to print the front and back sides alternately. How can this be implemented? You can re-sort the preview pages after the report is generated: ``` var i, j: integer; page : TfrxReportPage; begin frxReport1.PrepareReport(); j := frxReport1.PreviewPages.Count div 2; page := TfrxReportPage.Create(nil); for i := 0 to j - 2 do begin page.AssignAll(frxReport1.PreviewPages.Page[j + i]); frxReport1.PreviewPages.AddEmptyPage(i * 2 + 1); frxReport1.PreviewPages.ModifyPage(i * 2 + 1, page); frxReport1.PreviewPages.DeletePage(j + i + 1); end; page.Free; frxReport1.ShowPreparedReport; end; ``` Can I add text (such as a watermark) to pages that have already been formed? You can add text as a preview in the `TfrxReport.OnEndDoc` event ``` procedure TForm1.frxReport1EndDoc(Sender: TObject); var p: TfrxReportPage; m: TfrxMemoView; i: integer; begin frxReport1.Preview.Lock; for i := 0 to frxReport1.PreviewPages.Count - 1 do begin p:=TfrxReportPage(frxReport1.PreviewPages.Page[i]); m:=TfrxMemoView.Create(p); m.CreateUniqueName; m.SetBounds(0, 0, (p.PaperWidth - p.RightMargin - p.LeftMargin) * fr01cm, (p.PaperHeight - p.TopMargin - p.BottomMargin) * fr01cm); m.Text := 'Demo'; m.Rotation := 45; m.Font.Size := 128; m.VAlign := vaCenter; m.HAlign := haCenter; frxReport1.PreviewPages.ModifyPage(i,p); end; frxReport1.Preview.UnLock; end; //and before directly printing a page in an event TfrxReport.OnPrintPage procedure TForm1.frxReport1PrintPage(Page: TfrxReportPage; CopyNo: Integer); var m: TfrxMemoView; begin m:=TfrxMemoView.Create(page); m.CreateUniqueName; m.SetBounds(0, 0, (page.PaperWidth - page.RightMargin - page.LeftMargin) * fr01cm, (page.PaperHeight - page.TopMargin - page.BottomMargin) * fr01cm); m.Text := 'Demo'; m.Rotation := 45; m.Font.Size := 128; m.VAlign := vaCenter; m.HAlign := haCenter; end; ``` How do I programmatically hide a column in DBCrossView? Try just setting the `width=0` ``` procedure Cross1OnCalcWidth(ColumnIndex: Integer; ColumnValues: Variant; var Width: Extended); begin if ColumnIndex=0 then Width:=0; end; ``` In the report script, I need to set the file name for the export filter, but the export filter classes are missing from the script. How can I add them? In Delphi: ``` frxReport1.Script.AddClass(TfrxCustomExportFilter, 'TComponent'); frxReport1.Script.AddClass(TfrxCustomImageExport, 'TfrxCustomExportFilter'); frxReport1.Script.AddClass(TfrxBMPExport, 'TfrxCustomImageExport'); frxReport1.Script.AddClass(TfrxRTFExport, 'TfrxCustomExportFilter'); ... frxReport1.Script.AddObject('frxRTFExport1',frxRTFExport1); frxReport1.Script.AddObject('frxBMPExport1',frxBMPExport1); ... In the script: Code frxRTFExport1.FileName := 'myFilename.rtf'; ``` How can I get access to RTF text? (something like string s:=Rich.RichText.Lines.RTF) In the code above, when you click on TfrxRichView, its contents are copied to Memo1 in the dialog form: ``` procedure Rich1OnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean); var st: TMemorystream; begin st:=TMemoryStream.Create; Rich1.RichEdit.StreamFormat := 0; Rich1.RichEdit.Lines.SaveToStream(st); st.Position := 0; Memo1.Lines.LoadFromStream(st); st.Free; DialogPage1.ShowModal; end; ``` How do I add the SendToBack function to my script? Use the code ``` constructor TFunctions.Create(AScript: TfsScript); begin inherited Create(AScript); with AScript do begin with TfsClassVariable(Find('TfrxView')) do AddMethod('procedure SendToBack',CallMethod); end; end; initialization fsRTTIModules.Add(TFunctions); ``` Is it possible to change the font style in TfrxMemoView depending on the state of the group header (collapsed/expanded)? To do this, you need to register a custom function in the report script that will return the state of the group header ``` function TForm1.frxReport1UserFunction(const MethodName: String; var Params: Variant): Variant; begin if MethodName = 'CHECKDRILLSTATE' then Result := frxReport1.DrillState.IndexOf(Params[0]); end; procedure TForm1.FormShow(Sender: TObject); begin frxReport1.AddFunction('function CheckDrillState(DrillName : string): integer'); end; ``` and in the report script itself, check the state of the group header and set the required font style ``` procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent); begin if CheckDrillState(GroupHeader1.DrillName) <> - 1 then Memo6.Font.Style := fsBold else Memo6.Font.Style := 0; end; ``` Building a list of functions: Use the code ``` unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, frxClass, fs_itools, fs_xml, frxRes, frxrcDesgn, frxDesgn, ComCtrls; type TForm1 = class(TForm) frxReport1: TfrxReport; TreeView1: TTreeView; procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); var XML: TfsXMLDocument; procedure SetImageIndex(Node: TTreeNode; Index: Integer); begin Node.ImageIndex := Index; Node.StateIndex := Index; Node.SelectedIndex := Index; end; procedure AddFunctions(xi: TfsXMLItem; Root: TTreeNode); var i: Integer; Node: TTreeNode; s: String; begin s := xi.Prop['text']; if xi.Count = 0 then s := Copy(s, Pos(' ', s) + 1, 255) else { function } s := frxResources.Get(s); { category } if CompareText(s, 'hidden') = 0 then Exit; Node := TreeView1.Items.AddChild(Root, s); if xi.Count = 0 then Node.Data := xi; if Root = nil then Node.Text := frxResources.Get('dtFunc'); if xi.Count = 0 then SetImageIndex(Node, 52) else SetImageIndex(Node, 66); for i := 0 to xi.Count - 1 do AddFunctions(xi[i], Node); end; begin XML := TfsXMLDocument.Create; TreeView1.Images := frxResources.MainButtonImages; frxReport1.Script.AddRTTI; GenerateXMLContents(frxReport1.Script, XML.Root); TreeView1.Items.BeginUpdate; TreeView1.Items.Clear; AddFunctions(XML.Root.FindItem('Functions'), nil); TreeView1.FullExpand; TreeView1.TopItem := TreeView1.Items[0]; TreeView1.Items.EndUpdate; end; end. ``` How to create a report where a dialog box appears at the beginning of its execution Create a report where a dialog box appears at the beginning. In the dialog, choose one of two options: continue executing the current report or call a new report from it. When calling a new report, you need to close the preview form of the first report. Otherwise, you will get the following behavior: after calling the second report from the first one, it will execute, show the data, and when closing the preview window of the second report, you will see an empty preview window of the first report. Next, use a custom function in Delphi: ``` procedure TForm1.FormCreate(Sender: TObject); begin frxReport1.AddFunction('function CloseReport'); frxReport1.LoadFromFile('testReport1.fr3'); frxReport1.ShowReport(); end; function TForm1.frxReport1UserFunction(const MethodName: String; var Params: Variant): Variant; begin if MethodName='CLOSEREPORT' then frxReport1.PreviewForm.Close; end; //in the script: procedure Button1OnClick(Sender: TfrxComponent); var rep: TfrxReport; begin rep := TfrxReport.Create(Report); rep.EngineOptions := Report.EngineOptions; rep.LoadFromFile('TestReport2.fr3'); rep.ShowReport; CloseReport; end; ``` How can I print the page number on the back of each sheet of the report? Only by adding a page with a page number. You can generate a report, add the same number of pages with numbers, and then re-sort them ``` var i, j: integer; page : TfrxReportPage; begin j := frxReport1.PreviewPages.Count div 2; page := TfrxReportPage.Create(nil); for i := 0 to j - 2 do begin page.AssignAll(frxReport1.PreviewPages.Page[j + i]); frxReport1.PreviewPages.AddEmptyPage(i * 2 + 1); frxReport1.PreviewPages.ModifyPage(i * 2 + 1, page); frxReport1.PreviewPages.DeletePage(j + i + 1); end; page.Free; frxReport1.ShowPreparedReport; end; ``` How to override the button handler in the standard preview window? The following handler overrides the Open button handler ``` uses frxClass, frxPreview, frxPreviewPages, frxRes; type TForm1 = class(TForm) frxReport1: TfrxReport; procedure frxReport1Preview(Sender: TObject); procedure NewOnClick(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.frxReport1Preview(Sender: TObject); begin if frxReport1.PreviewForm is TfrxPreviewForm then begin TfrxPreviewForm(frxReport1.PreviewForm).OpenB.OnClick := NewOnClick; TfrxPreviewForm(frxReport1.PreviewForm).RightMenu.Items[3].OnClick := NewOnClick; end; end; procedure TForm1.NewOnClick(Sender: TObject); var OpenDlg: TOpenDialog; begin if frxReport1.Engine.Running then Exit; OpenDlg := TOpenDialog.Create(nil); try OpenDlg.Options := [ofHideReadOnly]; OpenDlg.Filter := frxResources.Get('clFP3files') + ' (*.fp3)|*.fp3'; if OpenDlg.Execute then begin TfrxPreview(frxReport1.Preview).LoadFromFile(OpenDlg.FileName); frxReport1.PreviewForm.Caption := OpenDlg.FileName; end; finally OpenDlg.Free; end; end; end. ``` How can you code dataset navigation that is connected to a report but not connected to any band in the report script? Use this code: ``` var DS: TfrxDataSet; begin DS:=Report.GetDataset('Items'); DS.First; while not DS.Eof do begin ShowMessage(DS.Value('Part Name')); DS.NEXT; end; end. ``` In a report, I need to fit text into a fixed-width TfrxMemoView by decreasing the font size. How to implement it? Use the `TfrxMemoView.CalcWidth` function in the handler TfrxMemoView.OnAfterData: ``` procedure Memo1OnAfterData(Sender: TfrxComponent); begin Memo1.Font.Size:=10; if Memo1.CalcWidth>Memo1.Width-Memo1.GapX*2 then Memo1.Font.Size:=Trunc(Memo1.Font.Size*((Memo1.Width-Memo1.GapX*2)/Memo1.CalcWidth)); end; ``` How do I disable the use of the global dataset list when using TfrxReport in a thread? By default, FR uses a global list of datasets that is initialized in the `frxClass` module, when an instance of `TfrxDBDataset` is created, it is added to this list. In this regard, it is not possible to use datasets with the same names (even in different threads). To use a local list of datasets, you need to use the following code (starting from version 4.5.46): ``` frxReport.EngineOptions.UseGlobalDataSetList := False; frxReport.EnabledDataSets.Clear(); frxReport.EnabledDataSets.Add(frxDataSet); frxReport.LoadFromFile(ReportName); ``` How do I use FastReport VCL in multiple threads? Before running the report, you need to set: ``` TfrxReport.EngineOptions.EnableThreadSafe := True; TfrxReport.EngineOptions.SilentMode := True; ``` Is FastScript compatible with multithreading? Compatible, but there are features, described on page 54 Another way to use TfsScript without fsGlobalUnit (for example, in multi-threaded environment) https://www.fast-report.com/public_download/docs/FRVCL/FSVCLDeveloperManual-en.pdf How can you migrate an array of variables from Delphi to FastReport? Use this code: ``` var a: variant; begin a := VarArrayOf([1,2,3]); frxReport1.Script.Variables['a'] := a; end; ``` ### FastReport VCL 2.53 URL: https://www.fast-report.com/news/fastreport-vcl-2.53 Summary: FastReport VCL 2.53 FastReport VCL 2.53 - improved FastReport 3 compatibility - fixed Excel XML export margins error - updated language resources (czech, romanian) - minor exports bug fixes - minor engine bug fixes ### FastReport VCL 2.55 released URL: https://www.fast-report.com/news/fastreport-vcl-2.55 Summary: FastReport VCL 2.55 released FastReport VCL 2.55 released * changed RTF and XLS export filters (TfrRtfAdvExport, TfrOLEExcelExport) - fix FielIsNull() - fix stretched bug in TfrPictureView - fix TfrReport.Clear - fix bug with number of copies in 'Print' window. - fix TfrButtonControl.SaveToFR3Stream - fix TfrView.SaveToFR3Stream - fixed bug with stretched breaked bands - bug fixes ### FastReport VCL 3.24 released! URL: https://www.fast-report.com/news/fastreport-3.24 Summary: FastReport VCL 3.24 released! FastReport VCL 3.24 released! Changes: + added TfrxMemoView.Wysiwyg property (note - block align will be disabled if you set this property to False!) + added some dbxdatabase properties * update Portuguese resources - fixed bug with shiftmode - fixed bug in taborder editor - bug with splitted richedit - bug with multi-monitor configuration - fixed bug with anchor+keeptogether - fixed bug with printtoprevpage - fixed bug with styles and numbers format in the XML export - fixed bug with continuous mode in the XML export - fixed bug with character height in PDF export - fixed aggregare error (comma in the field name) - fixed compatibility with TLargeIntField - [server] fixed bug with threads in client - fixed bug with DefaultPath in XLS export ### FastReport VCL 4.10 released! URL: https://www.fast-report.com/news/fastreport-vcl-4.10-release Summary: FastReport VCL 4.10 released! FastReport VCL 4.10 released! FastReport VCL 4.10 ------------------------- + added support of Embarcadero Rad Studio XE (Delphi EX/C++Builder EX)  + added support of TeeChart 2010 packages (new series type aren't support in this release)  + added a property TruncateLongTexts to the XLS OLE export that allows to disable truncating texts longer than a specified limit  + added option EmbedProt which allows to disable embedding fonts into an encrypted PDF file  + added TfrxDateEditControl.WeekNumbers property  - fixed bug in the XLS XML export about striked-out texts  - fixed bug about exporting an empty page via the XLS OLE export  - fixed bug in the PDF export about coloring the background of pages  - fixed bug in embedded designer when using break point in script  - fixed bug with lost of focus in font size combo-box in designer  - fixed bug with truncate of font size combo-box in Windows Vista/7 in designer (lost of vertical scroll bar)  - fixed bug when lost file name in inherited report  - fixed bug in multi-page report with EndlessHeight/EndlessWidth  - fixed bug wit TfrxHeader.ReprintOnNewpage and KeepTogether  - fixed bug in multi-column report with child bands  - improved split mechanism (added TfrxStretcheable.HasNextDataPart for complicated data like RTF tables)  - improved crosstab speed when using repeat band with crosstab object ### FastReport VCL 4.11 released! URL: https://www.fast-report.com/news/fastreport-vcl-4.11-release Summary: FastReport VCL 4.11 released! FastReport VCL 4.11 released! FastReport VCL 4.11 ------------------------- + added BIFF8 XLS export filter + added to ODF export the Language property + [enterprise] added "scripts" folder for additional units ("uses" directive in report script) + [enterprise] added logs for scheduler (add info in scheduler.log) + [enterprise] added property "Reports" - "Scripts" in server configuration - set the path for "uses" directive in report script + [enterprise] added property "Http" - "MaxSessions" in server configuration - set the limit of maximum session threads, set 0 for unlimit + [enterprise] added property "Reports" - "MaxReports" in server configuration - set the limit of maximum report threads, set 0 for unlimit + [enterprise] added property "Logs" - "SchedulerLog" in server configuration - set the scheduler log file name + [enterprise] added property "Scheduler" - "Active" in server configuration - enable of scheduler + [enterprise] added property "Scheduler" - "Debug" in server configuration - enable writing of debug info in scheduler log + [enterprise] added property "Scheduler" - "StudioPath" in server configuration - set the path to FastReport Studio, leave blank for default - [enterprise] fixed bug with MIME types in http header (content-type) - [enterprise] fixed bug with default configuration (with missed config.xml) - [enterprise] fixed bug with error pages - fixed bug in XML export with the ShowProgress property - fixed bug in RTF export with font size in empty cells - fixed bug in ODF export with UTF8 encoding of the Creator field - fixed bug in XML export with processing special characters in strings - fixed bug in ODF export with properties table:number-columns-spanned, table:number-rows-spanned - fixed bug in ODF export with the background clNone color - fixed bug in ODF export with a style of table:covered-table-cell - fixed bug in ODF export with table:covered-table-cell duplicates - fixed bug in ODF export with excessive text:p inside table:covered-table-cell - fixed bug in ODF export with language styles - fixed bug in ODF export with spaces and tab symbols - fixed bug in ODF export with styles of number cells - fixed bug in ODF export with the background picture - fixed bug in ODF export with charspacing - fixed bug in ODF export with number formatting - fixed bug in ODF export with table-row tag - fixed bug in XLS(OLE) export with numbers formatting - fixed bug in RTF export with processing RTF fields - fixed bug with processing special symbols in HTML Export - fixed bug with UTF8 encoding in ODF export - fixed bug in PDF export with underlined, struck-out and rotated texts ### FastReport VCL 4.12 released URL: https://www.fast-report.com/news/fastreport-vcl-4.12-release Summary: FastReport VCL 4.12 released FastReport VCL 4.12 released Version 4.12 — what ’ s new : + added support for Embarcadero Rad Studio XE 2 (x32/x64)   Added full support for Embarcadero Rad Studio XE 2 for 32 - bit   and 64 - bit compilers + added export of Excel formulas in BIFF export   A report can contain memos starting with the "=" sign follow ed by an Excel formula. These memos are exported as formulas to a n xls file. Export of formulas is controlled by the TfrxBIFFExport.ExportFormulas property. Read m ore about this in our blog + added converter from Rave Reports - ConverterRR2FR.pas   A module that allow s conver sion of ‘ Rave Report ’ reports to ‘ FastReport ’ format + added Cross . KeepRowsTogether property   This property allow s t he display of whole row data (within nested rows) on one page without break ing it + added export of external URLs in PDF export   A component on a report can have an external URL assigned to it , like " https://fast-report.com ". These components are exported to PDF s as clickable areas + added property DataOnly to exports.   The DataOnly property can filter out non-data report components wh en exporting. This allows the export of only those components that are considered to bedata + optimized merging of cells in BIFF export   BIFF export has been optimized for certain kind of reports contain ing many memos which must be represented as several Excel cells + picture format in all exports switched to PNG The default format for exported pictures has become PNG. For example, if a report contain s pictures and i s exported to RTF, then the resultant RTF file will contain PNG pictures. The PNG format is ne cessary to reduce the data size of exported pictures and increase their quality --------------- + added support for Embarcadero Rad Studio EX2 (x32/x64) + added export of Excel formulas in BIFF export + added export of external URLs in PDF export + added converter from Rave Reports - ConverterRR2FR.pas + added Cross.KeepRowsTogether property + optimised merging cells in BIFF export + added property DataOnly to exports + picture format in all exports switch ed to PNG + improved number format processing in BIFF export + added property DataOnly to exports + added property TfrxODFExport.SingleSheet + added property TfrxSimpleTextExport.DeleteEmptyColumns + added property TfrxBIFFExport.DeleteEmptyRows + added progress bar to BIFF export - fixed bug with frame for some barcode types - fixed wrong metafile size in EMF export - fixed processing of negative numbers in OLE export - fixed bug in handling exceptions in OLE export - fixed bug in creation of the progress bar (applicable to many exports) - fixed bug in string processing in ODF export - fixed bug in number formatting in OLE export - fixed bug in rotating texts 90, 180 and 270 degrees in PDF export - fixed bug in processing of headers and footers in ODF export - fixed bug in computing object bounds in Text export - fixed bug in UTF 8 encoding in ODF export - fixed hiding gridlines around non - empty cells in BIFF export  - fixed image blurring when exporting - fixed word wrapping in Excel XML export ### FastReport VCL 4.13 released! URL: https://www.fast-report.com/news/fastreport-vcl-4.13 Summary: FastReport VCL 4.13 released! FastReport VCL 4.13 released! We are pleased to release a new version of FastReport VCL for Embarcadero RAD Studio XE. FastReport VCL 4.13 officially supports the latest version, XE3, of RAD Studio. You can download a stable version from your customer panel for free. Support for Lazarus Beta is included in FastReport Professional Edition and above . The c urrent version allows preview ing , print ing and report template s under Windows and Linux platform s (qt). Other changes: + published Quality property of TfrxPDFExport object + published UseMAPI property of TfrxExportMail object + published PictureType property   in ODF export - fixed compatibility with FastReport FMX installed in the same IDE. This version can co - exist with FastReport FMX installed in the IDE - fixed bug with expressions in RichEdit - fixed bug in multi-column reports - fixed exception in the report designer - fixed bug with URLs in Open Document Text and Open Document  Spreadsheet exports - fixed format string in XLS OLE export - fixed format string in XLS BIFF8 export - fixed output of check boxes on highlighted lines in PDF export - fixed bug with PDF anchors - fixed bug when using two or more macros in memo - other minor bug fixes ### FastReport VCL 4.14 released! URL: https://www.fast-report.com/news/fastreport-vcl-4.14 Summary: FastReport VCL 4.14 released! FastReport VCL 4.14 released! + Added Embarcadero RAD Studio XE4 support - [Lazarus] fixed bug with text output - [Lazarus] fixed bug with some visual controls in designer - [Lazarus] improved interface of the report preview and designer - [Lazarus] fixed bug with boolean propertyes in script code and expressions - fixed bug with endless loop in TfrxRichView - fixed bug with Unicode in TfrxMemoView appeared in previous release - improved MAPI interface in TfrxExportMail export - fixed some problems with allpication styles XE2/XE3 - improved compatibility with Fast Report FMX ### FastReport VCL 4.6 released! URL: https://www.fast-report.com/news/fastreport-vcl-4.6 Summary: FastReport VCL 4.6 released! FastReport VCL 4.6 released! + added & , < , > to XML reader + added tag, the text concluded in tag is not broken by WordWrap, it move entirely  + added ability to move band without objects (Alt + Move) + added ability to output pages in the preview from right to left ("many pages" mode), for RTL languages(PreviewOptions.RTLPreview)  + added ability to storing picture cache in "temp" file (PreviewOptions.PictureCacheInFile) + added EngineOptions.UseGlobalDataSetList (added for multi-thread applications) - set it to False if you don't want use Global DataSet list(use Report.EnabledDataSet.Add() to add dataset in local list)  + added new property Hint for all printed objects, hints at the dialog objects now shows in StatusBar  + added new property TfrxDBLookupComboBox.AutoOpenDataSet (automatically opens the attached dataset after onActivate event)  + added new property TfrxReportPage.PageCount like TfrxDataBand.RowCount + added new property WordWrap for dialog buttons (Delphi 7 and above).  + added sort by name to data tree + added TfrxDesigner.TemplatesExt property + added TfrxStyles class in script rtti + changes in the Chart editor: ability to change the name of the series, ability to move created series, other small changes  + [enterprise] added configurations values refresh in run-time  + [enterprise] added new demo \Demos\ClientServer\ISAPI + [enterprise] added output to server printers from user browser (see config.xml "AllowPrint", set to "no" by default), note: experimental feature + [enterprise] added reports list refresh in run-time + [enterprise] added templates feature + [enterprise] improved speed and stability + [fs] added TfsScript.IncludePath property + [fs] added TfsScript.UseClassLateBinding property  + [fs] fixed type casting from variant(string) to integer/float - changes in report inherit: FR get relative path from current loaded report(old reports based on application path works too) - corrected module for converting reports from Report Builder - fixed bug in CrossTab when set charset different from DEFAULT_CHARSET - fixed bug in RTF export with some TfrxRichView objects - fixed bug when print on landscape orientation with custom paper size - fixed bug when use network path for parent report - fixed bug with Band.Allowslit = True and ColumnFooter - fixed bug with drawing subreport on stretched band - fixed bug with embedded fonts in PDF export - fixed bug with long ReportTitle + Header + MaterData.KeepHeader = true - fixed bug with minimizing of Modal designer  in BDS2005 and above - fixed bug with paths in HTML export  - fixed bug with RTL in PDF export - fixed bug with SubReport in multi column page - fixed bug with Subreport.PrintOnParent = true in inherited report - fixed bug with SYMBOL_CHARSET in PDF export - fixed bug with the addition of datasets by inheritance report  - fixed bug with width calculation when use HTML tags in memo  - fixed compatibility with WideStrings module in BDS2006/2007 - fixed flicking in preview when use OnClickObject event - fixed free space calculation when use PrintOnPreviousPage - fixed preview bug with winXP themes and in last update - fixed subreports  inherit - Thumbnail and Outline shows at right side for RTL languages  - [fs] fixed bug with late binding ### FastReport VCL 4.7 with Delphi 2009 support released! URL: https://www.fast-report.com/news/fastreport-vcl-4.7 Summary: FastReport VCL 4.7 with Delphi 2009 support released! FastReport VCL 4.7 with Delphi 2009 support released! + CodeGear RAD Studio (Delphi/C++Builder) 2009 support + [enterprise] enchanced error description in logs + added properties TfrxHTMLExport.HTMLDocumentBegin: TStrings,    TfrxHTMLExport.HTMLDocumentBody: TStrings, TfrxHTMLExport.HTMLDocumentEnd: TStrings + improved RTF export (with line spacing, vertical gap etc) + added support of Enhanced Metafile (EMF) images in Rich Text (RTF), Open Office (ODS), Excel (XLS) exports + added OnAfterScriptCompile event  + added onLoadRecentFile Event + added C++ Builder demos + added hot-key Ctrl + mouseWheel - Change scale in designer + added TfrxMemoView.AnsiText property - fixed bug in RTF export with EMF pictures in OpenOffice Writer - fixed some multi-thread isuues in engine, PDF, ODF exports - [enterprise] fixed integrated template of report navigator - [enterprise] fixed bug with export in Internet Explorer browser - fixed bug with font size of dot-matix reports in Excel and XML exports - fixed bug in e-mail export with many addresses - fixed bug in XLS export (with fast export unchecked and image object is null) - [enterprise] fixed bug in TfrxReportServer.OnGetVariables event - fixed bug in Calcl function - fixed memory leak in Cross editor - fixed progress bar and find dialog bug in DualView - fixed bug in PostNET and ean13 barcodes - fixed bug with TruncOutboundText in Dot Matrix report  - fixed bugs with break points in syntaxis memo - improved BeforeConnect event in ADO   - fixed bug in inhehited report with internal dataset - fixed bug in TfrxPanelControl with background color(Delphi 2005 and above) And remember - upgrade for all users of FastReport 4.* - free! ### FastReport VCL 4.9 released! URL: https://www.fast-report.com/news/fastreport-vcl-4.9 Summary: FastReport VCL 4.9 released! FastReport VCL 4.9 released! FastReport VCL 4.9 ============== ability to print/export transparent pictures (properties TfrxPictureView.Transparent and TfrxPictureView.TransparentColor) (PDF export doesn't supported) + added new "split to sheet" modes for TfrxXMLExport  + added support of /PAGE tag in TfrxRichView, engine automatically break report pages when find /PAGE tag   + added ability to hide Null values in TfrxChartView (TfrxChartView.IgnoreNulls = True) + added ability to set any custom page order for printing (i.e. 3,2,1,5,4 ) + [enterprise] added variables "AUTHLOGIN" and "AUTHGROUP" inside the any report   + [enterprise] now any report file can be matched with any (one and more) group, these reports are accessible only in matched groups + [enterprise] now you can set-up cache delays for each report file (reports.xml) + [enterprise] added new properties editor for reports in Configuration utility (see Reports tab) + [enterprise] added property "Xml" - "SplitType" in server configuration - allow to select split on pages type between none/pages/printonprev/rowscount + [enterprise] added property "Xml" - "SplitRowsCount" in server configuration - sets the count of rows for "rowscount" split type + [enterprise] added property "Xml" - "Extension" in server configuration - allow select between ".xml" and ".xls" extension for output file + [enterprise] added property "Html" - "URLTarget" in server configuration - allow select the target attribute for report URLs + [enterprise] added property "ReportsFile" - path to file with reports to groups associations and cache delays  + [enterprise] added property "ReportsListRenewTimeout" in server configuration + [enterprise] added property "ConfigRenewTimeout" in server configuration + [enterprise] added property "MimeType" for each output format in server configuration  + [enterprise] added property "BrowserPrint" in server configuration - allow printing by browser, added new template nav_print_browser.html + [enterprise] added dynamic file name generation of resulting formats (report_name_date_time) * [enterprise] SERVER_REPORTS_LIST and SERVER_REPORTS_HTML variables (list of available reports) depend from user group (for internal authentification) + added drawing shapes in PDF export (not bitmap) + added rotated text in PDF export (not bitmap) + added EngineOptions.IgnoreDevByZero property allow to ignore division by zero exception in expressions + added properties TfrxDBLookupComboBox.DropDownWidth, TfrxDBLookupComboBox.DropDownRows + added event TfrxCustomExportFilter.OnBeginExport + added ability to decrease font size in barcode object + added ability to inseret FNC1 to "code 128" barcode + added event TfrxPreview.OnMouseDown + added support of new unicode-PDF export in D4-D6 and BCB4-BCB6 * improved AddFrom method - anchor coping - fixed bug with strikeout text in PDF export - fixed bug with incorrect export of TfrxRichView object in RTF format (wrong line spacing) - [enterprise] added critical section in TfrxServerLog.Write - fixed bug with setting up of the Protection Flags in the PDF export dialog window - fixed bug in PDF export (file structure) - fixed bug with pictures in Open Office Writer (odt) export - [enterprise] fixed bug with TfrxReportServer component in Delphi 2010 - fixed minor errors in Embarcedero RAD Studio 2010 - fixed bug with endless loop with using vertical bands together with page header and header with ReprintOnNewPage - fixed bug when using "Keeping" and Cross tables (incorrect cross transfer) - fixed bug with [CopyName#] macros when use  "Join small pages"  print mode - fixed bug  when try to split page with endless height to several pages (NewPage, StartNewPage) - fixed bug with empty line TfrxRichView when adding text via expression - fixed bug when Footer prints even if main band is invisible (FooterAfterEach = True) - fixed resetting of Page variable in double-pass report with TfrxCrossView - fixed bug with loosing of  aligning when split TfrxRichView - fixed buzz in reports with TfrxRichView when using RTF 4.1 And FastScript v1.96 released ============== + added support of Embarcedero Rad Studio 2010 added new RTTI functions * improver script run speed * improved work for Lazarus ### FastReport VCL 5 demo is available URL: https://www.fast-report.com/news/fastreport-vcl5-demo Summary: FastReport VCL 5 demo is available FastReport VCL 5 demo is available You can download demo version of FastReport VCL 5 here Whats new: Classes New fill types available in the Memo object: gradient and glass. Memo object can have several highlight conditions. The highlight condition now includes the following style settings: frame, font, fill and an object visibility. You may turn on and off each setting. Memo object can have several format settings. When a Memo object contains multiple expressions in a text, you may specify a format for each expression. Added Filter property to data bands. You may filter out data rows without using a script. Changes in the report file format: collections like datasets, variables, formats, highlights are written as nested properties for better readability. Old files (FR VCL 3 and 4) are fully supported. Added MouseEnter, MouseLeave events to report objects. Added Visibility property (set of flags - vsPreview, vsPrint, vsExport). New objects New 2D barcodes - PDF417, DataMatrix, QR Code. New barcodes - Code128, EAN128 with auto encoding. Interactivity New interactive report types: detail report and detail page. When you click an interactive object, a new report is built and displayed in a separate tab in the preview window. Added interactivity in the Chart object. Clicking on a chart element, you may build a detail report. Exports New exports: HTML5 (div), DOCX, XLSX, PPTX. Improvements in RTF, XLS, XML, HTML, ODF exports: support of different frame lines in a single Memo object. Improved font embedding in the PDF export: font subset is embedded instead of a whole font. This will significantly reduce a file size. GUI New icons in the designer and preview windows. Improved appearance of the Data tree: new icons for different field types. New/improved dialogs: highlight, frame, fill, hyperlink, databand editors. ### FastReport VCL 5 is released! URL: https://www.fast-report.com/news/fastreport-vcl-5-released Summary: Telling you about the features of FastReport VCL 5 - next generation of FastReport library Telling you about the features of FastReport VCL 5 - next generation of FastReport library FastReport VCL version 5.0 initial release Classes: - New fill types available in the Memo object: gradient and glass. - Memo object can have several highlight conditions. The highlight condition now includes the following style settings: frame, font, fill and an object visibility. You may turn on and off each setting. - Memo object can have several format settings. When a Memo object contains multiple expressions in a text, you may specify a format for each expression. - Added Filter property to data bands. You may filter out data rows without using a script. - Changes in the report file format: collections like datasets, variables, formats, highlights are written as nested properties for better readability. Old files (FR VCL 3 and 4) are fully supported. - Added MouseEnter, MouseLeave events to report objects. - Added Visibility property (set of flags - vsPreview, vsPrint, vsExport). New objects: - New 2D barcodes - PDF417, DataMatrix, QR Code. - New barcodes - Code128, EAN128 with auto encoding. Interactivity: - New interactive report types: detail report and detail page. When you click an interactive object, a new report is built and displayed in a separate tab in the preview window. - Added interactivity in the Chart object. Clicking on a chart element, you may build a detail report. Exports: - New exports: HTML5 (div), DOCX, XLSX, PPTX. - Improvements in RTF, XLS, XML, HTML, ODF exports: support of different frame lines in a single Memo object. - Improved font embedding in the PDF export: font subset is embedded instead of a whole font. This will significantly reduce a file size. GUI: - New icons in the designer and preview windows. - Improved appearance of the Data tree: new icons for different field types. - New/improved dialogs: highlight, frame, fill, hyperlink, databand editors. Client/Server: - New navigation toolbar with touch support - Works via AJAX technology - Optimized exchange protocols - Reduced response time ### FastReport VCL 6 FAQ URL: https://www.fast-report.com/news/faq-fastreport-vcl-6 Summary: FastReport VCL 6 FAQ FastReport VCL 6 FAQ 1. When will FastReport VCL 6 be released? We plan on releasing on March 1, 2018 2. What’s new? Look here: brief review  3. What versions of Delphi / RAD Studio / C++ Builder will be supported? All the versions from v.7 to the current one as of today. As tech partner of Embarcadero we add support of the latest versions as soon as possible. 4. Can I get FastReport 6 for free and before the official release? Yes, if: a) you buy FastReport 5 license right now and get FastReport 6. b) as always, we will be glad to give license of FastReport 6 to our partners 5. I bought FastReport 5 while ago - what can I do? If you bought license after August 31, 2017 you'll get upgrade to FastReport VCL 6 for free! - Look at your CP. Is it there? If you bought license before September 1, 2017 you can get FastReport VCL 6 (the same edition) with 20% discount. Look at CP -> upgrades. 6. Oops. I only have license of FastReport 4 (3, 2). Is there any discount for me? Why not? Look at CP -> upgrades and get 20% discount! 7. Is it possible to use FastReport VCL 6 in new project? Is it still Beta? It is stable enough now. And traditionally, all our official Beta-testers of 6th version will get release. Wait, how do I use it? Where is the new documentation with description of new functions and features? At the moment we are working on updating the documentation. For now we wrote several "how-to" articles (and continue writing new ones) - check them out here By the way we plan seminars and webinars about new possibilities of FastReport VCL 6. Stay tuned for more news! ### FastReport VCL 6 is officially released! URL: https://www.fast-report.com/news/fastreport-vcl-6.0 Summary: FastReport VCL 6 is officially released! FastReport VCL 6 is officially released! FastReport VCL 6 is the next generation of reporting library for Delphi! What’s new in FastReport VCL 6? Improved report engine expands editing and interactivity abilities. Report objects can be selected and edited instantly even from the preview Expressions post processing and new duplicates processing. Transport input-output filters: now you can save your reports to various cloud storages: DropBox, OneDrive, Box.com, Google Drive or send it by email New report objects: Table object – for super easy creating and editing of tabular reports Map object that supports OSM, ESRI and GPX Gauge object New barcodes: Aztec, MaxiCode and linear USPS Improved export filters to PDF, SVG, HTML5 will let you process complicated objects like RichText, Diagrams, Maps and exports them directly as vector/text format And of course report designer couldn’t be left without upgrade: Improved Guide lines allow to move and resize docked objects. Extended script debugger Improved code completion Copying and pasting of not only report objects, but their content as well Enabling and disabling the quick editors Fixes and improvements during beta ---------------------------- + Added Cellular Text object + Added TfrxPageControl.OnChanging event + Added new Interactive map layer (it possible to draw on map layer) + Added ability to copy/paste table's rows/columns + Added events for PageControl component + Added Object selection in report preview (Hold Shift and mouse click + move. Use PreviewOptions.Buttons to turn it off) + Added New copy/paste editors (it's possible to copy content of objects) + Added TfrxPageControl.HotTrack property + Added Band.AlignChildren in script Rtti + Added Rtti module for Table object (and example how to use it) + Added TfrxPageControl for dialog form + Added Gauge control for dialog form - Added IO packages to recompile.exe - Improved export of Table and CellularText objects - Improved compatibility with components designed for FR5 (like FastCube report components) - Improved vector export engine - Guidelines now works with table rows/columns - Optimized Table object XML serialization - InPlace editors now stores state in system Registry - Fixed codepage in TfrxRichView under Windows 10 - Fixed resorces in export dialogs - Fixed Height calculation of TfrxMemoView with vertical font rotation - Fixed DropDown inplace editor - Fixed copy/paste codepage for Table object - Fixed copy/paste of whole Table object - Added missing text resources - Fixed problem with wrong text wrap in PDF export (in some cases) - Fixed problem with "tight" text in PDF export (symbols overlap each other) - Fixed problem with AutoWidth and Preview - Fixed Error message after closing IDE - Fixed compatibility with C++Builder - Fixed IO filters issue - Removed unused Options from "Options dialog" - Several visual improvements of Designer and Preview UI - Added missing icons for TfrxComponent's - Fixed Horizontal and Vertial text align in SVG and HTML5 exports - Fixed missing IOTransport package for Delphi 2010 - Fixed bug with TfrxMemoView.Unerlines - Fixed AV in the PDF export - Fixed MirrorMargins in PDF export - Fixed missing resources for some languages - Fixed preview save dialog without Transport filters - Fixed compressed report - Fixed text kerning in PDF export - Fixed duplicated field in TfrxDBDataSet - Fixed issue with Table object in some exports filters - Fixed compatibility with old E-mail export filter (better to use new Transports) - Fixed Interactive maps with detailed report - Fixed problem with map editor (adjust maps to wrong layers) - Fixed missing default string resources - Fixed error in Code Completion thread when using fsGlobalUnit - Fixed Break points saving in file - Fixed container dialog controls behavior in report designer workspace - Fixed save to file IOTransport registration - Fixed IOTransport network path - Fixed several issues with TfrxPageControl - Moved some fixes and improvements from Fast Report 5 branch - Fixed InPlace data editor ### FastReport VCL and FMX in Embarcadero Community edition URL: https://www.fast-report.com/news/vcl-fmx-community-edition Summary: FastReport VCL and FMX are included in Embarcadero Community edition FastReport VCL and FMX are included in Embarcadero Community edition For the first time embarcadero is releasing their community edition and Fast Report VCL and FMX are already an essential part of it! Get the best reporting even if your business is just starting to grow! Learn about the conditions here . Community Edition is a full-featured and free IDE to build applications for iOS, Android, Windows and macOS from a single codebase using the robust and easy-to-learn Delphi language. It's the perfect way to get started learning a new programming language or explore multi-device app development. Embarcadero's Community Edition is available for Delphi and C++Builder. It includes a streamlined IDE, code editor, integrated debugger, two-way visual designers to speed development, hundreds of visual components, and a limited commercial use license. ### FastReport VCL documentation update URL: https://www.fast-report.com/news/fastreport-vcl-documentation-update Summary: We have updated the English FastReport VCL documentation: - User's manual - Programmer's manual - Developer's manual. We have updated the English FastReport VCL documentation: - User's manual - Programmer's manual - Developer's manual. We have updated the English FastReport VCL documentation:  - User's manual - Programmer's manual - Developer's manual. Take a look . ### FastReport VCL now officially supports RAD Studio 13 Florence URL: https://www.fast-report.com/news/rad-studio-13 Summary: Update 2025.2.8 for FastReport VCL (and all its delivery options) with support for RAD Studio 13 Florence is already available in your personal account. Update 2025.2.8 for FastReport VCL (and all its delivery options) with support for RAD Studio 13 Florence is already available in your personal account. Our team has completed work to ensure full compatibility of FastReport VCL (and all its editions) with RAD Studio 13. We thoroughly tested the changes while maintaining backward compatibility with older Delphi versions. Support for RAD Studio 13, Delphi 13, and C++Builder 13 provides developers with access to new IDE features, improved performance and application stability, as well as reduced debugging time. Update 2025.2.8 with built-in support for RAD Studio 13 is already available in your customer panel. ### Fastreport VCL RAD Edition URL: https://www.fast-report.com/news/fastreport-vcl-rad-edition Summary: Fastreport VCL RAD Edition Fastreport VCL RAD Edition Fast Reports, Inc. has announced that its key report generator, FastReport VCL RAD Edition, will be supplied as part of Embarcadero RAD Studio XE2 (Pulsar), a new version of the comprehensive application development suite.  Difference s between editions: ### FastReport VCL — Update to Version 2026.1 URL: https://www.fast-report.com/news/release-fastreport-vcl-2026.1 Summary: In version 2026.1 for FastReport VCL, the report engine features have been expanded: new properties for the dynamic table builder and report band management, improved designer, and more. In version 2026.1 for FastReport VCL, the report engine features have been expanded: new properties for the dynamic table builder and report band management, improved designer, and more. The new version expands the capabilities of the reporting engine: new properties have been added for the dynamic table builder and report band management, the report designer has been improved (specifically, a “Snap to Grid” alignment mode has been added), and new functions have been implemented in FastQueryBuilder . Furthermore, report objects have been enhanced, new capabilities for working with PDF have been added (automatic font substitution, color profile selection), changes have been made to DOCX and XLSX export, and converters from other reporting systems have been updated. A key change is the provision of full compatibility with Embarcadero RAD Studio 13 (including Delphi 13 and C++Builder 13), while maintaining backward compatibility with older versions of Delphi. Embarcadero RAD Studio 13 Support Our team has completed work to ensure full compatibility of FastReport VCL (and all its distribution variants) with RAD Studio 13. We have thoroughly tested the changes, preserving backward compatibility with older versions of Delphi. Support for RAD Studio 13, Delphi 13, and C++Builder 13 gives developers access to new IDE features, improved application performance and stability, and reduces debugging time. Reporting Engine: New Features The reporting engine is constantly being improved, offering more and more tools for report creation. The dynamic table builder has received two new properties: FitPartsToPageWidth and MinimumTableWidth. These help manage the pagination process of tabular reports. Using the FitPartsToPageWidth property, you can stretch each part of the table to the maximum page width, filling the free space. The MinimumTableWidth property sets the minimum table size before pagination, proportionally stretching it to the specified size. This is useful for synchronizing multiple tables. Managing report bands is now easier. Group headers and footers have a new property: KeepWithData. It specifies that a group header or footer should remain together with the data record when moving to a new page. This property is similar to KeepHeader and KeepFooter, but works with group bands. The capabilities for controlling the output of report objects have also been expanded. The new PrintOn property offers a set of flags for fine-tuning. For example, you can output an object only on headers that are repeated on a new page (the ptRepeatedBand flag) or only on the first page of the report (the ptFirstPage flag). Report Designer and UI Our template designer has received several new features that simplify working with reports. Now you can use the “Snap to Grid” alignment mode. In this mode, objects always snap to the grid when moving or resizing. Previously, the grid step was used for objects, meaning they could be moved off the grid if they weren’t initially placed on it. By default, the old “Grid Step” mode remains active. The new mode enables precise object alignment even in existing reports. All major text editors now support text replacement, in addition to search. The chart editor has added the ability to clone chart series for quick creation of new series. FastQueryBuilder FastQueryBuilder  now features search and replace functions in its editors, just like the report designer. Report Objects Improvements Several report objects have received new features that will make your reports even more flexible and convenient. Table cells can now align objects in a new way. The TfrxContainerPadding.FromCenter property has been added for this purpose. It allows inverting the client alignment area, making automatic alignment inside cells more flexible. The PDFView object has a new mode of operation, pdOneToOneNormalizeAutoRotation, for the DetailStretchMode property. In this mode, landscape-oriented pages are automatically rotated when output in the report. Watermark settings have become even more convenient. You can now adjust the transparency of the watermark text. Support for Macro PDF417 has been added. A comprehensive set of properties has been introduced to the standard PDF417 object, allowing for detailed configuration in accordance with the standard’s requirements. Additionally, the QR barcode now supports the GS1 standard. Export Filters With the 2026.1 update, PDF export has gained automatic font substitution. This long-awaited improvement eliminates the need to search for Unicode fonts. The export filter itself determines the font used by the system to display the text and includes it in the PDF file. PDF export now uses Windows system functions, allowing for a result that is as close as possible to the preview. Another new feature for PDF export is the ability to select a color profile for reports in PDF/A-3U format. Three options are available: Standard RGB Typographic CMYK Grayscale. You can choose the color model depending on your tasks: whether it is standard grayscale printing or typographic printing in CMYK. Furthermore, other export formats have been improved. For example, watermark export has been fixed in DOCX and XLSX, and an option to disable gridlines during export has been added to XLSX. Converters from Other Reporting Systems Converter filters are now collected in separate frxReportConverters packages. They can be easily added to your application using components from the palette (TfrxSaveFRX, TfrxOpenQuickReport, TfrxOpenReportBuilder, TfrxOpenFRF, TConverterDMP2GDI, TConverterGDI2DM). Bugs in the filters have also been updated and fixed. FastReport FMX PDF export now includes support for invoices according to the ZUGFeRD standard. An example of using this functionality can be found in the InvoiceDemo. The “SimpleText” layout engine has received a significant update. The new version works much faster than the old one with large amounts of text (when HTML tag output is disabled) and fixes layout issues. Version 2026.1 VCL.Core ---------------   [Engine] + Full support for RAD Studio 13 has been added. + New functions, including min, max, and others, have been added. + Company name, version number, and website link have been added to the component context menu on the form. * Documentation has been updated. - An issue where the default indexed getter with a const reference in C++ Builder generated incorrect header files has been fixed.   [Graphic] - CreateBitmap. has been fixed. - An issue where a zero pen width in an SVG image was rendered with a device context width of 1 pixel has been fixed. - Conversion from BMP32 to PNG format has been fixed. - A memory access violation related to SVG image handling has been fixed. - Export of semi-transparent PNG images has been fixed. FMX.Core --------------- [Engine] + Support for min, max, and other new functions has been added. + Company name, version number, and a link to the company website have been added to the component context menu on the form. + Support for RAD Studio 13 has been added.  * Documentation has been updated.  - Compatibility issue with the order of enumeration aliases in RAD Studio 13 for FMX has been fixed. [Graphic] - CreateBitmap. has been fixed. VCL.Controls ---------------   [Engine] + Replace functionality has been added to the Memo family. - Known issues in TfrTreeView and TfrShellTreeView have been resolved. - Known issues in the component editors for TfrTreeView and TfrShellTreeView have been addressed.   [UI] - Modifying Canvas.Font in the OnCustomDrawItem event now works correctly. - Functionality of node tooltips has been corrected. - Node highlighting on mouse hover now works properly. - The display and hiding of node tooltips has been fixed. - Behavior of the blinking caret when MultiByte is enabled has been corrected. Lazarus.Controls --------------- [Engine] + Replace functionality has been added to the Memo family. - Known issues in TfrTreeView and TfrShellTreeView have been resolved. - Known issues in the component editors for TfrTreeView and TfrShellTreeView have been resolved. - AV errors in the TfrTreeView and TfrShellTreeView editors in Lazarus have been fixed. [UI] - Modifying Canvas.Font in the OnCustomDrawItem event now works correctly. - Functionality of node tooltips has been corrected. - Node highlighting on mouse hover now works properly. - Rendering of tree lines in the Lazarus IDE has been corrected. - The display and hiding of node tooltips has been fixed. - Slow rendering performance on Linux systems has been improved. VCL.FastCube --------------- [Engine] - An issue where the Advanced Demo would open with errors in Embarcadero RAD Studio 2010 has been resolved. - A bug preventing cells from being rendered during grouping has been fixed. [Exports] - Issues with exporting to ODS and XLSX formats have been corrected. FMX.FastCube --------------- [Engine] - A bug preventing cells from being rendered during grouping has been fixed. [UI] - Unnecessary padding in value drop-down lists for filtering has been removed. Lazarus.FastCube --------------- [Engine] - A bug preventing cells from being rendered during grouping has been fixed. [Exports] - An issue with exporting to XLS format in Lazarus has been resolved. - Issues with exporting to ODS and XLSX formats have been corrected. VCL.FastQueryBuilder --------------- [Engine] + A search button has been added to the text editors. + The ability to escape table names has been implemented. Lazarus.FastQueryBuilder --------------- [Engine] + A search button has been added to the text editors. + The ability to escape table names has been implemented. VCL.FastScript --------------- [Engine] + The TfrxWatermarks.Add method is now available in the script. - The issue where enabling the MultiByteLang property disabled italic styling for comments has been fixed. [RTTI] + TStringStream has been added. Lazarus.FastScript --------------- [Engine] + The TfrxWatermarks.Add method is now available in the script. - The issue where enabling the MultiByteLang property disabled italic styling for comments has been fixed. [RTTI] + TStringStream has been added. VCL.FastReport --------------- [Client-Server] + A base API for FastReport Online Designer has been added. + A data API for FastReport Online Designer has been added to the “Client-Server” component. - The issue with duplicate export entries in the general export list within the report server has been resolved. [Designer] + Pressing the Enter key in the ReportTree now activates the editor. + The scrollbar position is now preserved when changing the zoom level in the designer. + A new AlignToGrid property has been added, replacing the old GridStepMode. * Minor enhancement to the StatusBar within the Designer. * The designer’s redraw logic when moving guide lines has been optimized, resulting in more frequent updates. - An issue preventing the setting of a negative Left coordinate has been resolved. - The selection behavior of the active guide line has been corrected. - Grid snapping behavior when working with table templates has been improved. - A bug where moving an object past the left guide would incorrectly shift the right guide has been fixed. - The GuidesAsAnchor designer option has been corrected. - The MouseWheel event behavior in the designer has been fixed. - The “Access Denied” error that could occur when using the designer via RDP connection from the IDE has been resolved. - Dialogs in the embedded designer have been corrected. - An issue where enabling the MultiByteLang property disabled italic styling for comments has been resolved. - A bug causing selected objects to randomly move to different pages has been fixed. - Drag & Drop functionality for objects onto TfrxReportPage has been corrected. [Engine] + A search button has been added to text editors. + The TfrxContainerPadding.FromCenter property for table cells, which inverts the client padding area for the alignment mechanism, has been added. + The TfrxCustomTableBuilder.FitPartsToPageWidth property for the dynamic table builder has been added, enabling automatic stretching of a table split part to the full page width. + The TfrxCustomTableBuilder.MinimumTableWidth property for the dynamic table builder has been added, which sets the minimum width of the entire resulting table before splitting. + The PrintOn property for report components has been added, defining where a component can be printed during report generation. + The KeepWithData property for group headers and footers has been added, functioning similarly to the KeepHeader/KeepFooter properties. + Chart series cloning in the chart editor has been added. - An issue when printing PDFView from x64 applications has been resolved. - The “List index out of bounds (-1)” error that occurred when pressing “Ctrl+C” while the designer was displayed has been fixed. * Engine variable initialization has been moved to the start of the main script block execution. - The behavior of smMaxHeight, where a band no longer stretches when an object grows beyond the size of its parent container, has been restored. - Conversion of vector watermark images to raster format to support semi-transparency has been fixed. - Watermarks in composite reports have been fixed. - The behavior of the ClearLastReport state when generating a report from the ShowReport method has been corrected. - The even/odd page mode for watermarks in composite reports has been corrected. [Exports] + Support for PDF/A-3U, DeviceCMYK, and DeviceGray has been added. + A GridLines property has been added for XLSX export. + Font substitution has been implemented in the PDF exporter. * PDF export now writes additional debug information about the creation environment. * The USP library has been moved to a lazy-loading module. * Watermark export for DOCX and XLSX has been improved. - The export of empty TfrxMemoView with fkDateTime format to XLSX has been fixed. - The IsDigits function in the frxExportXML module has been fixed. - Issues with partial font embedding in PDF export have been resolved. - RTF export with non-standard ParagraphGap values has been fixed. - The export of semi-transparent PNG images has been fixed. [Other] + Support for TfrxCrypt and TfrxRichObject has been added for the 64-bit IDE. * Portuguese language resources have been updated. * Japanese language resources have been updated. * Converters from other reporting systems have been moved into separate packages. - Source code compilation for Delphi 10.3.1 has been fixed. [Preview] * The Escape button has been disabled for the built-in preview. - Printing, saving, and exporting of an empty report have been fixed. - Entering the number of copies in the print dialog has been fixed. [Report object] + Watermark editing from a script has been added. + Support for TfrxBarcodeLogo in scripts has been added. + Macro support has been added to the PDF417 barcode. + A new pdOneToOneNormalizeAutoRotation option for the DetailStretchMode property has been added to the PDFView class. + Support for the GS1 QR barcode has been added. + TfrxDBDialogControls and TfrxGaugeDialogControls components have been added to the IDE. - Font selection in some dialogs has been fixed. FMX.FastReport --------------- [Designer] + The OnLoadReport and OnSaveReport events in the TfrxDesigner have been fixed. [Engine] - Clipping of long text when splitting a Memo object into multiple parts has been fixed. [Exports] + Support for ZUGFeRD in PDF export has been added.  - The IsDigits function in the frxExportXML module has been fixed. [Other] * Portuguese language resources have been updated. Lazarus.FastReport --------------- [Client-Server] + A data API for FastReport Online Designer has been added to the “Client-Server” component. - An issue causing duplicate exports in the general export list within the report server has been fixed. [Designer] + Pressing the Enter key in the ReportTree now activates the editor. + The scrollbar position is now preserved when changing the zoom level in the designer. + A new AlignToGrid property has been added, replacing the old GridStepMode. * Minor enhancement to the StatusBar within the Designer. - An issue preventing the setting of a negative Left coordinate has been resolved. - The selection behavior of the active guide line has been corrected. - Grid snapping behavior when working with table templates has been improved. - A bug where moving an object past the left guide would incorrectly shift the right guide has been fixed. - The GuidesAsAnchor designer option has been corrected. - The MouseWheel event behavior in the designer has been fixed. - Dialogs in the embedded designer have been corrected. - An issue where enabling the MultiByteLang property disabled italic styling for comments has been resolved. - A bug causing selected objects to randomly move to different pages has been fixed. - Drag & Drop functionality for objects onto TfrxReportPage has been corrected. [Engine] + A search button has been added to text editors. + The TfrxContainerPadding.FromCenter property for table cells, which inverts the client padding area for the alignment mechanism, has been added. + The TfrxCustomTableBuilder.FitPartsToPageWidth property for the dynamic table builder has been added, enabling automatic stretching of a table split part to the full page width. + The TfrxCustomTableBuilder.MinimumTableWidth property for the dynamic table builder has been added, which sets the minimum width of the entire resulting table before splitting. - The “List index out of bounds (-1)” error that occurred when pressing “Ctrl+C” while the designer was displayed has been fixed. + The PrintOn property for report components has been added, defining where a component can be printed during report generation. + The KeepWithData property for group headers and footers has been added, functioning similarly to the KeepHeader/KeepFooter properties. * Engine variable initialization has been moved to the start of the main script block execution. - The behavior of smMaxHeight, where a band no longer stretches when an object grows beyond the size of its parent container, has been restored. - Conversion of vector watermark images to raster format to support semi-transparency has been fixed. - Watermarks in composite reports have been fixed. - The behavior of the ClearLastReport state when generating a report from the ShowReport method has been corrected. - The even/odd page mode for watermarks in composite reports has been corrected. [Exports] + Support for PDF/A-3U, DeviceCMYK, and DeviceGray has been added. + The export of empty TfrxMemoView with fkDateTime format to XLSX has been fixed. + A GridLines property has been added for XLSX export. * The PDF export behavior has been changed; it now writes additional debug information about the creation environment. * The USP library has been moved to a lazy-loading module. * Watermark export for DOCX and XLSX has been improved. - The behavior of OpenAfterExport when exporting to multiple files has been fixed. - The IsDigits function in the frxExportXML module has been fixed. - RTF export with non-standard ParagraphGap values has been fixed. [Other] * Portuguese language resources have been updated. * Japanese language resources have been updated. - An issue where PopUp was disabled for some TabControls in GTK2 has been fixed. [Preview] * The Escape button has been disabled for the built-in preview. - Printing, saving, and exporting of an empty report have been fixed. - Entering the number of copies in the print dialog has been fixed. [Report object] + Watermark editing from a script has been added. + Support for TfrxBarcodeLogo in scripts has been added. + Macro support has been added to the PDF417 barcode. + A new pdOneToOneNormalizeAutoRotation option for the DetailStretchMode property has been added to the PDFView class. + Support for the GS1 QR barcode has been added. + TfrxDBDialogControls and TfrxGaugeDialogControls components have been added to the IDE. - An issue in GTK2 (Linux) where text rotation (Rotation <> 0) caused the WYSIWYG property to be ignored has been fixed. - An issue with HTMLView in Linux Lazarus has been fixed. ### FastReport VCL: How 25 Years of Innovation Changed the Approach to Reporting in VCL Applications URL: https://www.fast-report.com/blogs/fastreport-vcl-25-years Summary: We decided to take a look back to demonstrate how reporting technologies have changed and to trace the key stages of FastReport VCL development in each version. We decided to take a look back to demonstrate how reporting technologies have changed and to trace the key stages of FastReport VCL development in each version. FastReport VCL is a report generation tool that has become an essential part of developers' arsenal on the Delphi platform over more than a quarter of a century. Since its inception in the late 1990s, the product has evolved from a simple template designer into a comprehensive system that supports interactive elements, vector graphics, and integration with modern IDEs. We decided to take a look back to demonstrate how reporting technologies have changed and to trace the key stages of the product's development in each version. FastReport VCL is a report generation tool that has become an essential part of developers' arsenal on the Delphi platform over more than a quarter of a century. Since its inception in the late 1990s, the product has evolved from a simple template designer into a comprehensive system that supports interactive elements, vector graphics, and integration with modern IDEs. We decided to take a look back to demonstrate how reporting technologies have changed and to trace the key stages of the product's development in each version. FastReport VCL has come a long way from a basic report generator to a versatile tool for modern applications.  The Birth of the Idea for the Future Product The need to create a custom reporting component arose in 1997 during the development of a payroll accounting system. The specificity of such a system involves a large number of reporting forms and the need for easy customization of their appearance. Existing reporting systems did not possess the necessary features, so the decision was made to develop a proprietary report generator. In the very first version of the generator, only one band was used—the data row, which allowed for the creation of multi-level reports. Later, in 1998, the report generator was formalized as a component (initially it was just a set of plug-in modules). From this point on, the product was named "FastReport" and began to rapidly expand its functionality. The First Version and Customer Recognition The first release of the product for Delphi 2–3 consisted of a basic report designer with standard support for data sources and printing functionality. It immediately allowed the creation of reports from code. It supported programmatically generating reports without a designer, followed by integration into Delphi applications. FastReport VCL boasted high performance and a small code footprint (less than 1 MB), which was a key advantage for Delphi developers in the late 1990s. Since its inception, FastReport VCL has become the flagship product in the entire lineup and received significant recognition among our customers. By 2001, the product ranked second in a survey of the most popular report generators among Delphi developers (Delphi Magazine). The second version followed, expanding export capabilities and compatibility. FastReport VCL 2.0: A Technological Leap in Development The second version of FastReport VCL brought significant improvements in development support. Among these were integration with C++Builder 6, CLX, and Kylix, as well as enhancements to CrossTab reports. Update 2.5 introduced important features: Export to XLS format via OLE; Export to image formats: BMP, JPEG, and TIFF (both color and black-and-white options); Beta version of RTF support; Programmatic page editing before printing. Additionally, basic report scripts were introduced in the form of event handlers for objects, improvements to CrossTab functionality, and the option to disable syntax highlighting. Later, version 2.3 of FastReport VCL became free under the new name FreeReport and served as the foundation for LazReport. The entire product line received recognition from the community. FastReport VCL won the "Delphi Product of 2002" award as the best report generator and ranked second in the "Delphi Informant Magazine" survey, receiving 20% of the votes. This underscored the contribution of our products to the advancement of reporting tools. In the third version, the focus shifted to expanding report capabilities, improving printing functionality, and integrating with other components, including databases. Expansion of Components and Export Options in FastReport VCL 3 FastReport VCL 3 is an updated product with a new architecture. The report format is now XML, and Unicode support allows the product to be used worldwide. FastReport VCL 3 became so extensive that it included several different component sets. It was from this version that the fully functional scripting engine, FastScript, emerged, featuring debugging capabilities for reports and support for four scripting languages, along with the SQL query builder, FastQueryBuilder. The report designer became more user-friendly. It introduced features like scaling, a report grid, support for nested properties in the object inspector, and much more. The most notable and significant changes in FastReport VCL 3 included: The introduction of internal data sources; Fully functional report dialog forms; Addition of support for TeeChart Pro;  Expanded export options to PDF, HTML, and RTF; New components for creating a fully functional WEB reporting server, with all the features of the product. These updates and new server capabilities made FastReport a powerful tool for the rapid generation of complex documents. Some reports from this version can also be opened in modern versions of FastReport. FastReport VCL 4: Flexibility, Performance, and a New Era of Report Debugging The release of FastReport VCL 4 was a logical continuation of the previous version. The product received a full debugging environment, support for report inheritance, and formats such as ODF, ODT, and XLS. The new version improved compatibility with the latest versions of RAD Studio and added support for FireDAC components. Printing on dot matrix printers and exporting to PDF were also significantly enhanced. During this period, new components for OLAP solutions were integrated into FastReport. These innovations made the product incredibly flexible and high-performing. User convenience continued to evolve as well. A dedicated page for internal data sources was introduced, allowing for the creation of flowcharts. Cross-tab functionality was expanded, a side-by-side printing mode was added, and the ability to use objects within cells was implemented. Debugging reports became much more convenient with the introduction of the Watches window and breakpoints. To facilitate the transition from other report generators, converters from QuickReport, ReportBuilder, and RaveReports were added. The report engine gained support for inheritance. This version laid the foundation for separate products, FastReport FMX and FastReport for Lazarus. The latest updates provided full support for Unicode development environments and x64 platforms. From QR Codes to DOCX: How FastReport VCL 5 Became More Powerful and User-Friendly With the release of the fifth version of FastReport VCL , the product became even more interactive. The preview window introduced the ability to open tabs with different reports, and "detailed reports" were added, allowing users to open a breakdown from the main report in a new tab. The report object set was expanded to include 2D barcodes (QR, DataMatrix, PDF417), linear barcodes with auto-encoding such as Code128 (GS1), EAN128, and native integration with FireDAC. Export filters now support file formats like DOCX, XLSX, HTML5, and PPTX, as well as improvements in existing formats, including support for PDF/A. The client-server components received a significant interface update. FastReport for Lazarus was also updated and gained support for the capabilities of FastReport VCL 5. Optimizations for printing on dot matrix printers and a refreshed interface design made version 5 the most flexible tool for Delphi, capable of creating complex analytical reports. These innovations reduced the size of PDF files and sped up the performance of server components, providing high efficiency for any business tasks. FastReport VCL 6—Not Just Reports, but Interactive Analytics in RAD Studio 10.4 The sixth generation of FastReport VCL ushered in a new era of interactive reports. Users were able to edit elements directly in the preview window using built-in editors. This version introduced new report objects: maps that support loading geospatial data from databases (OSM, ESRI), tables with a dynamic table builder for complex reports, a "CellularText" component, "Gauges" for report forms and dialogs, as well as "PageControl" for dialog forms. The release significantly expanded functionality through integration with cloud storage services (Dropbox, Google Drive, OneDrive, Box). Users can now save and load reports and exports to these services. Export filters received support for new formats, including PostScript, ZPL, and PPML. Special attention was given to WYSIWYG export and vector formats, including PDF with support for interactive forms and SVG. The report engine gained new features, such as an object offset and stretching mechanism, deferred expression processing, and mirroring elements on the page. The SQL editor introduced syntax configuration. Additionally, a pool of deferred commands was added, allowing reports to rebuild themselves from scripts. These enhancements, combined with an advanced script debugger and support for RAD Studio 10.4, made FastReport a powerful analytics platform for modern cross-platform applications. Transition to a Subscription Model and Updates in 2021 Starting in 2021, the distribution of FastReport VCL shifted to a subscription model , coinciding with the transition to annual version numbering. The main focus was on modernizing visual standards and enhancing security. Full support for SVG vector graphics was implemented, along with the ability to add digital signatures to PDF documents. To expand reporting functionality, a new HTML View object was introduced, allowing for the embedding of web content visualization, as well as support for specialized medical barcodes, such as Two-Track Pharmacode. Significant optimizations were made to improve performance when working with large data volumes. Additionally, the ability to insert fragments of PDF documents into reports and to load data from external sources across all supported protocols was added. Enhancing Security and Interactivity in 2022 The FastReport VCL 2022 version continued to develop in the direction of security and user interaction. Support for multiple digital signatures in PDF documents was implemented, along with the ability to fill interactive elements (such as ListBox and ComboBox) directly within the report. To simplify design, layout control tools were included: automatic guides and highlighting of object intersections. Key new features included integration with cloud services (Gmail, Outlook, Yandex Disk) and the introduction of a step-by-step script debugger. Support for modern technologies was maintained and expanded, including FireDAC, geospatial data, and high-quality printing on dot matrix printers. 2023 — A Unified Ecosystem and Digital Signatures Continuing to build on previous achievements, the 2023 releases introduced automation and styling features. Stable support for Linux was added, paving the way for cross-platform development. The FastReport VCL 2023 lineup transformed from a product into a unified ecosystem with a shared Core library. An innovative style sheet system was introduced, allowing for instant changes to the appearance of reports without the need for reconstruction. Technological enhancements include support for advanced digital signatures (GOST, CADES), multi-threaded printing, and intelligent text scaling according to object sizes. A significant step was the discontinuation of support for Delphi 7, with support now available for Delphi versions starting from 2010. The focus has shifted to modern standards: integration with NextCloud, expansion of cryptographic functions, and optimization of PDF file sizes. These updates simplified work with current IDE versions, added new security tools, and increased the flexibility of report customization. A Focus on Cross-Platform Development Starting in 2024 FastReport VCL 2024: A New Level of Development Convenience and Support for Modern Environments, Including Embarcadero RAD Studio 12. The updated text editor features syntax highlighting and automatic bracket matching. A tool for precise data field configuration without the need to connect to a database has been introduced. The technological stack expanded with support for S3 cloud storage (AWS) and a high-performance TfrTreeView component for handling large data volumes in both VCL and Lazarus. This component is successfully utilized within FastReport itself. FastReport VCL 2025–2026: The product has become cross-platform and interactive. Key innovations include the implementation of RFID tags (TfrxDeviceCommand), a fully functional Online Designer, and the FastGrid library for professional data handling in Delphi and Lazarus. Versions from this period showcased an updated visual style, an advanced watermarking system, and a flexible editor for customizing watermarks. Users can now easily add protective inscriptions and images. With native support for TLS/XOAUTH in email transports and integration with the current version of RAD Studio 12.3–13, FastReport has provided developers with modern tools for creating secure business applications. New Achievements FastReport VCL continues to evolve, adapting to the needs of developers. Currently, the latest versions of FastReport are implementing support for semi-transparent images. Additionally, we are committed to maintaining and enhancing older components. For example, the number of language packs has significantly increased: FastReport now supports over 30 languages. Export functionality is becoming more robust: PDF export now supports multiple standards, which are added as they emerge. FastReport promptly supports new versions of Delphi and Lazarus, typically within 1–2 months of a release, and sometimes even faster. Conclusion Over the past 25 years, FastReport VCL has evolved from merely a tool for generating reports into a comprehensive platform for developing complex, interactive, and secure reporting solutions within the Delphi and Lazarus ecosystems. Its evolution from a basic component with minimal functionality to a modern solution supporting vector graphics, cloud storage, digital signatures, and cross-platform development reflects not only technical progress but also a deep understanding of developers' needs. Each version has brought significant improvements—from the introduction of the XML format and scripting engine to the support of modern security standards and integration with cloud services—enabling the product to remain relevant in the rapidly changing technology landscape. Today,  FastReport VCL represents a mature, scalable, and flexible system capable of tackling tasks of any complexity—from simple print forms to analytical dashboards with geodata visualization and dynamic real-time reports. The shift to a subscription model and the unified Core architecture has facilitated the creation of a cohesive ecosystem, simplifying the maintenance and development of projects. Ongoing support for new versions of RAD Studio, prompt adoption of innovations, and attention to detail—from precise layout to multi-threaded printing—confirm that FastReport VCL remains a leader in its niche, setting standards for quality and performance for generations of developers. Tags: VCL, Lazarus, FastReport, Delphi ### FastReport Viewer URL: https://www.fast-report.com/products/viewer Summary: A free utility for viewing finished documents created by FastReport products in FP3 and FPX formats. A free utility for viewing finished documents created by FastReport products in FP3 and FPX formats. A free utility for viewing finished documents created by FastReport products in FP3 and FPX formats. FastReport Viewer A free utility for viewing finished documents created by FastReport products in FP3 and FPX formats. Try for free Opening FP3 files using FastReport Viewer FP3 files are reports created with the popular report generation tool, FastReport. However, to open and view such files, a special program is required — FastReport Viewer. FastReport Viewer is the ideal solution for working with FP3 files. It allows you to easily open, view, print, and export reports. Customizing the ready report Viewer in FastReport .NET The article tells about the possibility to hide unnecessary items Report Preview menu control of FastReport .NET. The article tells about the possibility to hide unnecessary items Report Preview menu control of FastReport .NET. How to work in Designer and Viewer via command line We work with the report designer and the viewer from the command line as separate programs. We work with the report designer and the viewer from the command line as separate programs. Any other questions? Contact the manager ### FastReport Viewer released URL: https://www.fast-report.com/news/release-free-fastreport-viewer Summary: FastReport Viewer released FastReport Viewer released Released free utility for viewing and printing fp3 files. Download  here ### FastReport WCF Service Library URL: https://www.fast-report.com/blogs/fastreport-wcf-service-library Today we will talk about the new library FastReport.Service.dll which appeared in FastReport.Net 2013.3. This library is a WCF Service Library and is intended for use in custom services. Now library contains the following features : ``` List GetReportsList(); List GetReportsListByPath(string path); List GetGearList(); Stream GetReport(ReportItem report, GearItem gear); ``` List< ReportItem> GetReportsList() – returns a list of available reports . Each item presens as ReportItem object. Reports are stored on a hard drive on a server that is running the service . Files are sorted in alphabetical order. List< ReportItem> GetReportsListByPath( string path) –  returns a list of available reports by path. Files are sorted in alphabetical order. List< GearItem> GetGearList()  - returns a list of available formats that can generate service reports as elements GearItem. Stream GetReport( ReportItem report, GearItem gear) – returns a stream of result of building a report . Parameters report and gear can be used from the list of previously obtained , or create new objects with the required properties. The returned stream does not support positioning . ReportItem ``` public class ReportItem { public string Path; public string Name; public string Description; public Dictionary Parameters; } ``` Path – the path to the report file on the server, relative to the root folder for storing reports . The file extension of the report can only be *.frx. This property is used to identify a specific report with further queries. Name – name of the report is taken from the metadata of the report. If the metadata of the report contain an empty name then prperty contain a filename without an extension . This property can be used to build an interactive list of available reports in your application (such as ListBox). Description – description of the report is taken from the metadata of the report. Dictionary Parameters – Dictionary of report parameters maybe filling parameters, which will be subsequently transferred to the report. It supports only the string values that must be considered when designing a report template . GearItem ``` public class GearItem { public string Name; public Dictionary Properties; } ``` Name – the name of the format. May contain one of the following strings : Name Description PDF File of Adobe Acrobat DOCX File of Microsoft Word 2007 XLSX File of Microsoft Excel 2007 PPTX File of Microsoft PowerPoint 2007 RTF File of Rich Text – supported by many text editors ODS File of Open Office Spreadsheet ODT File of Open Office Text MHT Compressed HTML file together with the image s can be opened in Internet Explorer CSV Comma separated values DBF File of dBase XML XML table of Excel – without images TXT Text file FPX Prepared report of FastReport.Net, maybe loaded in Viewer.exe or in report object from your code Report.LoadPrepared(stream); Report.ShowPrepared() Dictionary Properties – Dictionary of parameters of a report. A complete list of supported parameters with default values is available upon request from the server to the list of formats . You need to add the following lines in your App.config or Web.config. ``` ``` FastReport. ReportsPath – specifies the path to the folder with the reports , a list of which will be transmitted to the client. FastReport. ConnectionStringName – the name of the connection string to the database , which is stored in the configuration section . Used to replace the internal connection string in the report template . FastReport. Gear – a list of available formats. You can select only the necessary and change the order of the names . Schematic a use of FastReport.Service: If you know exactly what to report and what format you want to receive ( it will reduce the number of queries to the service ) : Important points when you create report templates for use in the services : dialogs in the reports are not supported and will be ignored ; Each report shall include an internal DataConnection, which will connect string for the report service is replaced by a string from the configuration . Examples of use FastReport.Service.dll can be found in the folders  \Demos\C#\WCFWebService , \Demos\C#\WCFWindowsService , \Demos\C#\WCFWebClient , \Demos\C#\WCFClient. An example configuration file service - FastReport.Service.dll.config. I'll talk more about specific examples of the use of FastReport.Service.dll in future articles. To be continued . Tags: .NET, .NET, WCF, WCF, FastReport, FastReport ### FastReport.NET 1.6 released! URL: https://www.fast-report.com/news/fastreport-net-1.6 Summary: FastReport.NET 1.6 released! FastReport.NET 1.6 released! Version 1.6  ---------------  + added ability to save template to RDL format (Report Definition Language)  * changed work of exports and printing in WebReport, now we use handlers in "web.config"  + added Romanian, Hungarian, Japanese and Thai localization  + added Report.InitialPageNumber property  + added TextObject.ParagraphOffset property  + added PreviewControl.UseBackColor property  + added IsNull function to check DB columns for null  + added import of WritingMode property when import template from RDL format  + added saving of TextObject.Angle property when saving template in RDL format  + added FNC1 symbol encoding in the Datamatrix barcode (use &1; sequence)  + added Open Document Text, XPS, DBF exports in WebReport  * added ability to replace built-in query builder  - fixed "Scale" print mode  - fixed bug with RichObject and CanShrink  - fixed bug in TextObject break  - fixed bug in TextObject.TabWidth  - fixed bug when saving the prepared report with UseFileCache flag  - fixed RichObject multi-thread issues  - fixed bug when opening some saved to RDL reports in the Report Builder  - fixed bug in the Group Expert  - fixed bug with ChartObject filter when saving the report as a C#/VB.Net class  - fixed bug when converting boolean expressions in the RDL import  - fixed bug with internal manifest in ODF export ### FastReport.NET 1.7 released URL: https://www.fast-report.com/news/fastreport-net-1.7 Summary: FastReport.NET 1.7 released FastReport.NET 1.7 released Version 1.7 =========== + added import plugin for Crystal Reports + added Config.DesignerSettings.PageAdded event + added Config.PreviewSettings.AllowPrintToFile property + added Report.MaxPages property + added MatrixObject.KeepCellsSideBySide property + added outline in PDF export + added properties TableRow.KeepRows, TableColumn.KeepColumns + added TableObject.ManualBuildAutoSpans property + added ability to hide some objects (export filters, report objects) by the code: RegisteredObjects.FindObject(typeof(PDFExport)).Enabled = false * improved report file cache * improved .fpx loading speed/memory usage * CheckBoxObject available in the Basic edition - fixed bug with rendering of text in WebReport when TextObject.WordWrap = false - fixed memory leak when exporting to PDF with embedded fonts - fixed bug with band break - fixed bug with information fields in encrypted PDF file - fixed bug with page borders and fill in PDF export - fixed bug in RichObject - fixed bug in the report preview - fixed bug when saving the report as a class - fixed bug with some image types - fixed bug with text break - fixed bug with events - fixed RichObject height issue - fixed bug in PDF export (missing pictures when viewing under MAC OS X or iOS) - fixed bug with grid alignment - fixed bug with band's CanBreak and outline - fixed bug when exporting to metafile - fixed bug with unary minus with totals - fixed bug with watermark ### FastReport.NET and RDL reports URL: https://www.fast-report.com/news/blog-convertor-template Summary: FastReport.NET and RDL reports FastReport.NET and RDL reports New post in our blog RDL import in FastReport .NET  and  Saving FastReport .NET template to RDL file ### FastReport.Net on MacOS URL: https://www.fast-report.com/blogs/fastreport-net-macos Yes, it is possible. Our team are preparing now FastReport.Net Mono Edition. Let see screenshots: FastReport.Net demo in the "strange OS" FastReport.Net report designer in the same OS. Tags: .NET, .NET, MacOS, MacOS, Mono, Mono, FastReport, FastReport ### FastReport.Net WCF - simple example URL: https://www.fast-report.com/blogs/net-wcl-simple-example Today we review the simplest way to use the library FastReport.Service.dll as WCF service. This example does not require programming and is intended for testing of library and configuration file. To complete the task , we use the program WcfSvcHost.exe, that comes with Visual Studio: Create a folder for our experiments anywhere on the disk , such as C:\WCF\FastReport Copy the files in the folder FastReport.Service.dll, FastReport.Service.dll.config, FastReport.dll, FastReport.Bars.dll. Create two sub-folders Data and Reports Copy the database file in the Data folder from the examples  \FastReport.Net\Demos\Reports\nwind.xml Copy the contents of a folder \FastReports\FastReport.Net\Demos\WCF in Reports – It contains test reports with built-in connections to the database, which is a necessary requirement when used with a library FastReport.Service.dll Open configuration file FastReport.Service.dll.config in any text editor. Change path to the reports in section : ``` ``` Change connection string in section : ``` ``` Create service.bat with line: ``` "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\WcfSvcHost.exe" /service:C:\WCF\FastReport\FastReport.Service.dll /config:C:\WCF\FastReport\FastReport.Service.dll.config ``` Run service.bat from Explorer with administrator rights (Run as administrator). You will see an icon of WCF Service Host in system tray. Double-click on it: Open web browser and go to address http://localhost:8732/FastReportService/ Service works normally . You can change port number of service in configuration file: ``` ``` Let's connect to our service from demo example \FastReport.Net\Demos\C#\WCFClient Open WCFServiceClient.csproj in Visual Studio Click in Solution Explorer by right-button on "Service References–ReportService" and select "Configure Service Reference" Review our service address. Address should end on “/mex” (metadata exchange) Compile and run an example. To be continued . Tags: .NET, .NET, WCF, WCF, FastReport, FastReport ### FastReports on Firebird Developers Day 2011 in Brazil URL: https://www.fast-report.com/news/firebird-brazil-2011 Summary: FastReports on Firebird Developers Day 2011 in Brazil FastReports on Firebird Developers Day 2011 in Brazil FastReports will take part as a sponsor in the A nnual C onference for S oftware D evelopers in Piracicaba, Brazil. FastReports CEO Michael Philippenko will speak about FastReport VCL 5, FastCube 2 and FastReport.Net and Mono. You have a last chance to participate in the main Firebird event in Brazil on 23 rd July: http://www.firebirddevelopersday.com.br/fdd/2011/ ### FastReports reporting on 64-bit platform URL: https://www.fast-report.com/news/fastreport-64-bit-platform Summary: FastReports reporting on 64-bit platform FastReports reporting on 64-bit platform How to use FastReports reporting on 64-bit platforms .  A n ew article in our blog. And yes, we know about 64-bit Delphi and C++Builder (w h ich should be available very soon). FastReport VCL supports them . ### FastRreport VCL 5 price URL: https://www.fast-report.com/fast-report-5-price Summary: FastReport 5 VCL ordering will be available after release (estimated date is 31st of March) by this price. FastReport 5 VCL ordering will be available after release (estimated date is 31st of March) by this price. FastReport 5 VCL ordering will be available after release (estimated date is 31st of March) by this price . All customers of FastReport VCL 4 could get upgrade to FastReport 5 with discount: - 50% from full price of the same edition - if FastReport VCL 4 was ordered before 1st of October 2013 - 100% - if FastReport VCL 4 was ordered after 31st of September 2013 This possibility is available in your customer panel. How you can save more if FastReport VCL 4 was ordered before 1st of October 2013? You can order upgrade from FastReport VCL 4 to FastReport VCL 4 (higher edition) at this week and get FastReport 5 of this new higher edition for free. This method is strongly recommended also for customers of FastReport VCL Basic Edition! Single Team Site Standard $199 / €149 $599 / €449 $3 990 / €2 990 Professional $299 / €225 $999 / €749 $5 990 / €4 490 Enterprise $399 / €299 $1 299 / €975 $7 990 / €5 990 ### FastScript URL: https://www.fast-report.com/products/fast-script Summary: FastScript is a library for running scripts in Delphi 2010-XE8, C++Builder 2010-XE8, Embarcadero RAD Studio 13, and Lazarus FastScript is a library for running scripts in Delphi 2010-XE8, C++Builder 2010-XE8, Embarcadero RAD Studio 13, and Lazarus FastScript is a library for running PascalScript, C++Script, JScript, and BasicScript in Delphi, C++Builder, Embarcadero RAD Studio, and Lazarus. FastScript FastScript is a library for running scripts in Delphi 2010-XE8, C++Builder 2010-XE8, Embarcadero RAD Studio 13, and Lazarus Try for free Documentation ## FastScript is a library for running scripts. It'll come in handy for developers who want to add the ability to run scripts to their projects in Delphi 2010-XE8, C++Builder 2010-XE8, Embarcadero RAD Studio 11, and Lazarus. Non-standard calculations You can use scripts to process data and calculate standard metrics and filters. Source code This library includes complete source codes. It's extremely convenient for companies that want to adapt the code to their needs. Event support FastScript supports event processing in the script. Unlike event processors in Delphi, the processors in the script aren't object methods. Access any object in your app Standard libraries are used to access basic classes, controls, forms, and databases. FastScript has an easily extensible architecture. Multilingual architecture You can use multiple languages, such as PascalScript, C++Script, JScript, and BasicScript, or add any other procedurally oriented languages in XML. Available documentation Take advantage of our documentation, free video tutorials, and tons of articles for every use case for our product in your projects to get meaningful results in the shortest possible time. Ultimate VCL Learn more about Ultimate VCL Yes, it can support multithreading without using fsGlobalUnit. You can find a detailed description on **[page 47 of the guide](/public_download/docs/FRVCL/FSVCLDeveloperManual-en.pdf)**. Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. The article provides a detailed overview of the watermark functionality in FastReport VCL — covering both the visual interface and programmatic methods using Delphi code and report scripts. Any other questions? Contact the manager ### FastScript .NET URL: https://www.fast-report.com/products/fast-script-net Summary: A cross-platform library for complex C# scripts in environments without code generation (Native AOT, WASM, iOS). A cross-platform library for complex C# scripts in environments without code generation (Native AOT, WASM, iOS). A cross-platform library for complex C# scripts in environments without code generation (Native AOT, WASM, iOS). FastScript .NET A cross-platform library for complex C# scripts in environments without code generation (Native AOT, WASM, iOS). Try for free Documentation ## Libraries for executing complex scripts provide the ability to dynamically generate and execute code, which can be useful in various scenarios such as developing plugins, creating user scripts, and so on. Integrability in Projects Install the necessary package from the NuGet repository or download the package from our website and add the required libraries to your project. No additional modules or special extensions are needed. Unique Development The FastScript .NET interpreter does not use CodeDOM and Roslyn platforms. This allows the script library to work seamlessly in environments without code generation such as Native AOT, WASM, and iOS. Wide Capabilities Supports scripts that conform to the C# 1.0 specification (with some limitations and additions), including features such as creating classes, structs, events, delegates, etc. Supported Features   FastScript .NET supports the following features of the C# language (the C# 1.0 specification is most fully supported, along with many features from later versions of the language): C# 1.0: ●    Classes ●    Structs ●    Enums ●    Interfaces ●    Events ●    Operator overloading ●    User-defined conversion operators ●    Properties ●    Indexers ●    Output parameters—out, ref ●    Params arrays ●    Delegates ●    Operators and expressions ●    Verbatim identifier "@" C# 2.0: ●    Generics ●    Partial types ●    Nullable value types ●    Getter/setter separate accessibility ●    Static classes C# 3.0: ●    Auto-implemented properties ●    Extension methods ●    Implicitly typed local variables C# 4.0: ●     Optional arguments C# 6.0: ●    Auto-property initializers ●    Properties and methods that return the "=>" expression (Expression bodied members) ●    Null propagator C# 7.0: ●    Out variables ●    Local functions C# 8.0: ●    The "readonly" modifier for fields (Readonly members) ●    Static local functions ●     Null-coalescing operators C# 9.0: ●    Top-level statements Unsupported Features The following features of C# 1.0 are not supported:   ●    Preprocessor directives - #if, #region, etc. ●    Attributes ●    Unmanaged code: pointers, unsafe keyword, P/Invoke ●    checked, unchecked statements ●    goto statement Limited Support   The terms used below: "host" refers to your .NET application; "script" refers to something defined in the script code.   Class Inheritance Classes defined in the script can be inherited from other script classes or from System.Object: class MyScriptClass: OtherScriptClass // ok class MyScriptClass: Object // ok class MyScriptClass // ok, same as Object class MyScriptClass: ArrayList // error Structures In FastScript, a structure is represented as a regular class. FastScript adds special methods for copying the structure when its value is passed to a method or assigned to another variable. Declaring a variable of a structure type does not automatically create an instance of the structure: MyStruct s; // s is null  s = new MyStruct(); // and must be initialized before use Interaction with the Host   A class defined in the script is visible to the host as an instance of FastScript.Runtime.DataContext.   You can override the following methods in the script class:   ●    ToString ●    Equals ●    GetHashCode These overridden methods will also take an effect if used by host. A script class may implement some of host interfaces, but it has effect in a script only. Passing such an instance to a host will not work, the host will not be able to use interface members implemented in a script. Nullable types Nullable types can only be used with host types.   Generic Types and Methods   Only host generic types and methods can be used in the script. You cannot define a generic type or method in the script.   Type forwarding If a host type is marked as "forwarded," it must be explicitly used in the host for it to be usable in the script. For example:   var list = new System.ComponentModel.BindingList (); // error, BindingList does not exist If you add the following line of code to your application, the script will compile without errors:   new System.ComponentModel.BindingList (); Delegates You can create delegates of any methods (script or host). Passing a delegate to host is not supported though. You also cannot create Action<> and Func<> delegates (these host classes require a native method with certain signature, which can't be done in a script). Type Conversions (Implicit, Explicit) User-defined type conversion (in script code or in the host) is limited to those types that are explicitly defined. For example, if a T->int conversion is defined, you can use it. However, you will not be able to use a T->float conversion unless it is explicitly defined. var m = new My(); int intValue = m; // ok float floatValue = m; // error int explicitIntValue = (int)m; // ok: explicit is not defined, but we have implicit one float explicitFloatValue = (float)m; // error floatValue = (int)m; // use this way public class My {   private object _value;   public static implicit operator int(My m) => (int)m._value; } Using FastScript in Native AOT   In the script, you can only use types that are available in the host. An application compiled in Native AOT mode may not include certain types (or members of types) that you would like to use in the script, because the type/member was trimmed from the assembly. Another issue is the use of generic types/methods. In Native AOT, you can use those generic types that are available in the host. For example, if the host uses the class List , but does not utilize the class List . The first one can be used in the script, but an error will occur if you try to create a type List . Therefore, your task will be to make types (and members of types) statically available in your application so that they can be used in the script. This can be accomplished in various ways (creating instances of types, using attributes): [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(List<>))] public void EnsureAOTVisible() {   var list = new List (); } Note that generic parameters of reference types can be used if an open generic type is available in a host app. For example, having a List<> type available in your app, you may construct List or List > or List >. Memory Savings With each script compilation, FastScript .NET does not create separate DLL assemblies; instead, it stores information in a cache. This saves memory on your device. Security FastScript .NET allows you to restrict the use of unsafe APIs, such as file system or network operations. You can limit access to entire assemblies, namespaces, or individual types. Compactness The small size of the library (just 300 KB) makes it convenient to use even in resource-constrained projects without overloading the system. How to buy FastScript .NET? Learn more about Ultimate .NET How to Export a Report from FastReport .NET to PostScript FastReport .NET supports exporting reports to many popular formats, such as PDF, Excel, Word, and others. However, professional printing, plotters, and specialized printing equipment often require the PostScript (.ps) format. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. How to configure Content Security Policy for FastReport .NET WEB reports Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions of FastReport .NET WEB, the architecture of the client-side has been significantly reworked, which simplifies compliance with a strict CSP without losing report functionality. In this article, we will examine how to properly configure CSP for FastReport reports and take into account typical risks. Learn how to configure Content Security Policy for FastReport .NET WEB reports: an overview of CSP directives and values, changes in the FastReport architecture, typical bypass scenarios, and ways to protect against them. How to Configure a Report with Business Objects in Code and the FastReport .NET Designer FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects (Category → Products). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects in FastReport .NET. Any other questions? Contact the manager ### FastScript 1.6 URL: https://www.fast-report.com/news/fastscript-1.6 Summary: FastScript 1.6 FastScript 1.6 + added dynamic array support + added MessageDlg, InputBox, InputQuery functions - fixed error in StrToDateTime function - fixed wrong 'Exit' behavior - some fixes for Linux CRLF compatibility - fixed syntax error when using cross-language modules - fixed empty case selector bug - fixed bug with 'var ar, ar1: array' declaration ### FastScript 1.7 URL: https://www.fast-report.com/news/fastscript-1.7 Summary: FastScript 1.7 FastScript 1.7 + added VarType function + added TApplication class - fixed error with properties of Char type - fixed DayOfWeek error - fixed error with open array parameters - fixed error with 'uses' ### FastScript 1.8 URL: https://www.fast-report.com/news/fastscript-1.8 Summary: FastScript 1.8 FastScript 1.8 + added packages for Delphi2005 + Length function now supports arrays + added TfsScript.ExtendedCharset property (use national chars in identifiers) - fixed error in SetLength function (for dynamic arrays) - fixed error with __StringHelper (access to string elements) ### FastScript 1.9 released URL: https://www.fast-report.com/news/fastscript-1.9-release Summary: FastScript 1.9 released FastScript 1.9 released + full multi-thread support + improved performance + added packages for Delphi2006 + added separate Tee package - fixed c++ bool type - fixed case sensitivity for c++ (keywords only) - fixed jscript error (function that returns a string) ### FastScript 1.92 released! URL: https://www.fast-report.com/news/fastscript-1.92 Summary: FastScript 1.92 released! FastScript 1.92 released! + added support of CodeGear Delphi 2007 + added rtti for TPopupMenu * modified the ini rtti, added rtti for TCustomIniFile and TMemIniFile + added support of Lazarus 0.9.22   a) modified non-visual components for Free Pascal v2.0.4, 2.1.1, 2.3.1   b) modified visual components for LCL (Lazarus component library)   c) added packages for Lazarus Still not modified for Lazarus and Free pascal next modules: fs_idbreg, fs_iibxreg, fs_iadoreg, fs_ibdereg, fs_iteereg,  fs_ibdertti, fs_ichartrtti, fs_iadortti, fs_iibxrtti, fs_idisp ### FastScript 1.94 released! URL: https://www.fast-report.com/news/fastscript-1.94 Summary: FastScript 1.94 released! FastScript 1.94 released! -added new RTTI functions/properties:TCustomIniFile.WriteTStrings,TCustomIniFile.ReadTStrings, TIBTransaction.Commit,TIBTransaction.RollBack,TIBTransaction.StartTransaction,TIBQuery.FetchAll, TIBQuery.RecordCount,TChartSeries.Active,TChartSeries.Count,TChartSeries.Delete. -fixed bug with "in" operator. -functions return null value by default -fixed bug with late binding -added TfsScript.IncludePath property (list of paths for modules) -added TfsScript.UseClassLateBinding  - fixed bug with type casting  - added EvaluateRiseError property - return True if Evaluate function rise error - added OnGetVarValue event  - added AddPropertyEx with TfsGetValueNewEvent/TfsSetValueNewEvent handlers - fixed bug in Evaluate with Basic grammar - fixed bug with unnecessary AddRTII call in evaluate function ### FastScript 1.95 with Delphi 2009 support released ! URL: https://www.fast-report.com/news/fastscript-1.95 Summary: FastScript 1.95 with Delphi 2009 support released ! FastScript 1.95 with Delphi 2009 support released ! New in FastScript 1.95 + added support of CodeGear Rad Studio 2009 - fixed bug with "with" operator - fixed bug with comments in Basic script - fixed minor bugs in TfsSyntaxMemo и TfsTree ### FastScript 1.97 released URL: https://www.fast-report.com/news/fastscript-1.97 Summary: FastScript 1.97 released FastScript 1.97 released FastScript v1.97 ============== + added support for Embarcadero Rad Studio XE + added TeeChart 2010 support ### FastScript 1.98 released! URL: https://www.fast-report.com/news/fastscript-1.98 Summary: FastScript 1.98 released! FastScript 1.98 released! One more lead ing scripting tool is now available for FireMonkey developers.  So , what about add ing scripting functionality to MacOS X projects? Four scripting languages (PascalScript, C++Script, BasicScript and JScript) with access to any object inside your application. Standard libraries for access ing base classes, controls, forms and DB, step - trace debugging, s y ntax hi gh ligh t ing, rtti for FireMonkey (and not only - for different platforms) classes. It also supports Embarcadero (ex Borland and CodeGear) Delphi 4-XE2, C++Builder 4-XE2, Kylix 1-3 and Lazarus . + added support for Embarcadero Rad Studio XE2 for x32/x64 compil ers + added support for Embarcadero FireMonkey framework for Windows x32/x64  and Mac OSX platforms (include rtti for new classes and visual controls -  fsSynMemo, TfsTree) + added support for   int64 type in script code - f ixed AV for 64 - bit versions of FPC - f ixed error in accessing A nsi S tring property values for FPC ### FastScript 1.99 released URL: https://www.fast-report.com/news/fastscript-1.99 Summary: FastScript 1.99 released FastScript 1.99 released FastScript v1.99 – changes: + added support for Embarcadero Rad Studio XE3 for VCL x32/x64 compil ers + added support of Embarcadero Rad Studio XE3 FireMonkey framework (2) for Windows x32/x64 and Mac OSX platforms ### Features of FastReport FMX URL: https://www.fast-report.com/fast-report-fmx-comparison Summary: Features of FastReport FMX Features of FastReport FMX Features Embarcadero Windows macOS Linux Bands ✓ ✓ ✓ ✓ Internal ADO datasets ✓ Internal BDE datasets Internal IBX datasets ✓ ✓ ✓ Internal DBX datasets ✓ ✓ ✓ Shape object ✓ ✓ ✓ ✓ Text object ✓ ✓ ✓ ✓ Sub-report object ✓ ✓ ✓ ✓ Picture object ✓ ✓ ✓ ✓ System text object ✓ ✓ ✓ ✓ Chart object ✓ ✓ ✓ ✓ Barcode object ✓ ✓ ✓ 2D Barcode object ✓ ✓ ✓ OLE Object Rich Text object Gradient object ✓ ✓ ✓ Cross-tab object ✓ ✓ ✓ Checkbox object ✓ ✓ ✓ WEB components Advanced printing modes Report inheritance ✓ ✓ ✓ ✓ Drill-downs ✓ ✓ ✓ ✓ HTML tags in text object ✓ ✓ ✓ ✓ Preview component ✓ ✓ ✓ ✓ Preview window ✓ ✓ ✓ ✓ Designer (end user) ✓ ✓ ✓ Designer (developer) ✓ ✓ ✓ ✓ Dialogues ✓ ✓ ✓ Script ✓ ✓ ✓ Export to PDF  ✓ native OS print dialog ✓ Export to PNG, GIF, TIFF, JPEG, BMP ✓ ✓ ✓ without GIF/TIFF Export to RTF ✓ ✓ ✓ Export to XLS (OLE) Export to XLS (XML) ✓ ✓ ✓ Export to XLS (BIFF) Email export Export to CSV ✓ ✓ ✓ Export to TXT ✓ ✓ ✓ Export to ODS ✓ ✓ Export to ODT ✓ ✓ ### Fonts embedding in the PDF export in FastReport VCL 5 URL: https://www.fast-report.com/blogs/fonts-embedding-pdf-export-vcl Summary: It was decided to improve fonts embedding in FastReport VCL 5: the new PDF export will extract only needed characters from used fonts. It was decided to improve fonts embedding in FastReport VCL 5: the new PDF export will extract only needed characters from used fonts. It was decided to improve fonts embedding in  FastReport VCL 5: the new PDF export will extract only needed characters from used fonts. What is fonts "embedding" DF documents often contains text written with various fonts. In order Acrobat Reader or another pdf viewer can display this text, it must have access to font files used in the document. If the OS where you open the document doesn't have needed fonts, the document may become unreadable. For the sake of resolving this issue, the PDF standard allows to copy font files into a pdf document, thus providing the guarantee, that wherever you open this document, fonts will be available and the document will be readable. This copying of font files is called "embedding". Of course, here a problem appears: font files usually occupy much space and a pdf document may be become unacceptable because of big file size. The PDF export in FR4 is capable to embed fonts, but it does that in the simplest way, by just copying all needed font files into a document. Sometimes, this leads to increasing the file size of the pdf document to more than 10 megabytes. Fonts embedding in FastReport VCL 5 It was decided to improve fonts embedding in  FastReport VCL 5: the new PDF export will extract only needed characters from used fonts. It's usually used up to 50 symbols from a font - this is explained by the fact, that a document is usually created in one language and uses symbols from one alphabet. But fonts, especially such universal fonts as Arial Unicode MS, contains from 3 to 50 thousand symbols.  For instance, let's take a simple report which has a few paragraphs written with the Arial font. The report uses only 41 symbol, but Arial contains 3415 symbols. Thus, by embedding only these 41 symbols into a pdf file, more than 700 kb space can be saved - this is the file size of Arial. Another spectacular example: export this report to pdf with enabled embedding and see the file size of the resulting document - it's more than 30 mb; if the same report is exported with the PDF export in FR5, then the resulting file is only 116 kb, and it's even opened with Acrobat Reader much faster. In this forum topic you can take a test program that can export reports to pdf with the new PDF export. What's inside a font file Usually a font is represented with a TTF file; sometimes - with a TTC file, which is simply several TTF files put together. A font consists of two main parts:  A set of glyphs. Each glyphs represents a symbol or a part of a symbol. A glyph in TTF is represented with Bezier curves and, maybe, with a small picture that tells how the glyph should look like for a very small font size. The "cmap" table that defines a mapping from 2-byte charcode to glyph indices. This table is needed because a font rarely contains glyphs for all possible Unicode values and it's needed to tell what Unicode values have representation in the font. Some symbols are drawer with one glyph: usually symbols of the english alphabet are drawn in this way. Other symbols can be represented with several glyphs: for example symbols with accent marks consists of a glyph representing the marks and a glyph representing the rest of the symbol. Some font define glyphs that represent several characters (so called ligatures), glyphs representing a character with respect to its position in a word and other special glyphs. Thus, an algorithm that determines what glyphs are needed to draw a word is not so simple as it might be thought. Fonts embedding implementation in the PDF export The whole point of the embedding is that from the glyph set, from the "cmap" table and many other font tables needed information is extracted that correspond to used glyphs, following which similar font tables are created and filled in with the extracted information. As a result, a new font file is produced, but with smaller number of glyphs. An example of such a shortened font file is  here . Then, the obtained font file is written into a pdf file. Let's consider this in a report with a single line of text "Open Type Font" inside. After exporting to pdf, this file appears. Code %PDF-1.5 %ЂЂЂЂ % This pdf object represents the TfrxMemoView with the text "Open Type Font". % It chooses a font with the Tf operator and draws the text with the Tj operator. 2 0 obj << /Length 257 /Length1 257 >> stream ... /F0 10 Tf ... <004F00700065006E0020005400790070006500200046006F006E0074> Tj ... endstream endobj % The general font description. % The field /Encoding defines a mapping from charcodes to CIDs. % Here this mapping is identity, in other words CID of a charcode equals the charcode. 3 0 obj << /Type /Font /Subtype /Type0 /BaseFont /IJIVDA+Arial /Encoding /Identity-H /DescendantFonts [11 0 R] /ToUnicode 6 0 R >> endobj 9 0 obj << /Type /FontDescriptor /FontName /IJIVDA+Arial /FontFamily /IJIVDA+Arial /FontBBox [-1361 -665 4096 2060] /ItalicAngle 0 /Ascent 1854 /Descent -434 /CapHeight 0 /StemV 0 /Flags 32 /CIDSet 5 0 R /FontFile2 8 0 R >> endobj 11 0 obj << /Type /Font /Subtype /CIDFontType2 /CIDToGIDMap 10 0 R /BaseFont /IJIVDA+Arial /CIDSystemInfo 7 0 R /FontDescriptor 9 0 R /W [ 32 [277.8] 70 [610.8] 79 [777.8] 84 [610.8] 101 [556.2] 110 [556.2] 111 [556.2] 112 [556.2] 116 [277.8] 121 [500.0] ] >> endobj % This is the TTF file itself. % Bertween "stream" and "endstream" the .ttf file with needed glyphs is written. 8 0 obj << /Length 15148 /Length1 10856 /Filter [ /ASCIIHexDecode /FlateDecode ] >> stream 7801c57a7b...00175ac7e0 endstream endobj % The mapping from CIDs to GIDs. % GID is a glyph index. 10 0 obj << /Length 86 /Length1 244 /Filter [ /ASCIIHexDecode /FlateDecode ] >> stream 78016360a0103052a81f593b133207cc66868bb0c059b818ac18126c0cec0c1c50514eb82c1700078f0038 endstream endobj ... %%EOF All font parameters are rather simple. The only interesting part here is how Tj draws text. As an argument it accepts a sequence of 2-byte charcode. In this example these charcodes are 4f 70 65 6e ... Each charcode is transformed into a CID, using the field /Encoding /Identity-H. Now Tj has a sequence of CIDs (it is the same: 4f 70 65 6e ...) and further it works with these CIDs. Each CID is mapped to a GID using the field /CIDToGIDMap. GID is a glyph index. After that, Tj has a sequence of glyphs and it can draw text. It's noteworthy that the PDF standard doesn't use the "cmap" table in the embedded font, that defines mapping from charcodes to glyphs. One reason of this is that Tj can accept not only ASCII or Unicodes, but rather it accepts a sequence of glyphs which can be ligatures and other special symbols that don't have associated charcodes. Tags: VCL, FastReport, PDF ### Foreach in C sharp URL: https://www.fast-report.com/blogs/foreach-c-sharp Today I would like to talk about the way the foreach loop works inside. We all know that a foreach loop is - a loop that iterates through all the elements of the collection. Its greatest advantage in the ease of use - we do not need to worry about how many elements in the collection. However, many do not know that this is just syntactic “sugar”, which facilitates the work of the programmer. Therefore, we simply have to know in what the resulting compiler will convert. The foreach loop works differently, depending on the collection you want to sort through. 1)      If it has to deal with the banal array, we can always know its length. Therefore, foreach will eventually be converted to a for loop. For example: ``` int[] array = new int[]{1, 2, 3, 4, 5, 6}; foreach (int item in array) { Console.WriteLine(item); } ```  The compiler converts the loop into this construct: ``` int[] temp; int[] array = new int[]{1, 2, 3, 4, 5, 6}; temp = array; for (int i = 0; i < temp.Length; i++) { int item = temp[i]; Console.WriteLine(item); } ```  2) However, many collections do not support indexed access to elements, for example: Dictionary, Queue, Stack. In this case, the iterator template will be used. This template is based on the interfaces System.Collections.Generic.IEnumerator and nongeneric System.Collections.IEnumerator, which allow you to iterate the elements in the set. The IEnumerator contains: MoveNext () method - moves the enumerator to the next element of the collection; Reset () method - restarts the enumeration, sets the enumerator to the starting position; Current property - returns the current element of the collection. IEnumirator is inherited from two interfaces - IEnumirator and IDisposable. It contains an overload of the Current property, providing its implementation by type. Since we mentioned the interface IDisposable, then we'll tell a couple of words about it. It contains the only Dispose () method that is needed to free resources. Every time the loop terminates or when it exits, IEnumirator clears the resources. Let's look at this loop: ``` System.Collections.Generic.Queue queue = new System.Collections.Generic.Queue(); queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3);   foreach (int item in queue) { Console.WriteLine(item); } ```  The compiler converts it into a similar code: ``` System.Collections.Generic.Queue queue = new System.Collections.Generic.Queue(); queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3);   int num; while (queue.MoveNext()) { num = queue.Current; Console.WriteLine(num); } ```  In this example, MoveNext replaces the need to count elements during the loop. When it does not receive the next element, it returns fasle and the loop terminates. But, nevertheless, this code is only approximate to what the compiler really produces. The problem is that if you have two or more overlapping cycles that work with the same collection, then each MoveNext call will affect all the cycles. This course of events will not suit anyone. And so came up with the second interface IEnumirator. It contains the only method GetEnumerator (), which returns an enumerator. Thus IEnumerable and its generic version of IEnumerable allow you to render the logic of enumerating elements from the collection class. Usually this is a nested class that has access to the collection's elements and supports IEnumerator . Having each enumerator, different consumers will not interfere with each other, performing the enumeration of the collection at the same time. Thus, the above example should take into account two points - obtaining an enumerator and releasing resources. Here's how the compiler actually translates the foreach loop code: ``` System.Collections.Generic.Queue queue = new System.Collections.Generic.Queue(); System.Collections.Generic.Queue.Enumerator enumirator;   IDisposable disposable;   enumirator = queue.GetEnumerator(); queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3);   try { int num; while (enumirator.MoveNext()) { num = enumirator.Current; Console.WriteLine(num); } } finally { disposable = (IDisposable)enumirator; disposable.Dispose(); } ```  You probably think that for the iteration of the collection, you need to implement the IEnumerable and IEnumerable interfaces. However, this is not quite true. To compile foreach, you just need to implement the GetEnumerator () method, which will return another object with the Current property and the MoveNext () method. Here we use duck typing - a well-known approach:   "If something goes like a duck, and quacks like a duck, it's a duck." That is, if there is an object with the GetEnumerator () method, which returns an object with the MoveNext () method and the Current property, then this is the enumerator. Otherwise, if the necessary objects, with the necessary methods are not found, the interfaces IEnumerable and IEnumerable will be searched. Thus foreach is really a universal loop that works fine with both arrays and collections. I use it constantly. However, there is one disadvantage for foreach - it allows only to read the elements, and does not allow them to be changed. Therefore, the old good “for” never will be lost from our code. Tags: .NET, .NET, C#, C# ### Free Business Graphics tool for Teams URL: https://www.fast-report.com/news/free-business-graphics Summary: Free FastReport Business Graphics with every purchase of FastReport .NET Enterprise Team. Free FastReport Business Graphics with every purchase of FastReport .NET Enterprise Team. We are welcoming the summer season by giving away a free FastReport Business Graphics with every purchase of FastReport .NET Enterprise Team.  FastReport Business Graphics is a library for vivid visualization of your data stored in reports. It uses several types of charts to turn the dry numbers into illustrative infographics for optimal decision-making. It will supplement your FastReport .NET to get the most out of your data.  Until July 1, 2022, you will have a chance to try its full capabilities for free when buying FastReport .NET Enterprise Team and save $1199.  To use the offer reach out to our sales team through the support system , a chat on our website, or by emailing sales@fast-report.com ### Free seminar for developers in Munich, Germany, Jan 24 URL: https://www.fast-report.com/news/free-seminar-german-2008 Summary: We'd like to invite German developers to our free seminar in Munich, Germany, Jan 24. We'd like to invite German developers to our free seminar in Munich, Germany, Jan 24. We'd like to invite German developers to our free seminar in Munich, Germany, Jan 24.  Registration is open until 16-00 CET January 23. ! See bellow German text.  Agenda:  - New in Firebird 2.1, Vladislav Khorsun, developer Firebird  - Fast Reports Business Intelligence solutions for Developers, Michael Philippenko, CEO Fast Reports  - Corruption fighting and Firebird database protection, Dmitry Kuzmenko, CEO IBSurgeon  - Fast Reports new products and solutions, Michael Philippenko, CEO Fast Reports  - Firebird optimization, Dmitry Kuzmenko, CEO IBSurgeon  German text:  Fast Reports Report-Building-Losungen & Firebird-Datenbanken im Fokus des Seminars am 24. Januar - Teilnahme kostenlos - Anmeldung ab sofort moglich  Das Seminar wird in Englisch gehalten und findet statt:  24. Januar 2008  10:00 - 17:30 Uhr  InterCityHotel Muchen  Bayerstrabe 10,  80335 Munchen  Vortragsthemen:  - Neue un Firebird 2.1  Vladislav Khorsun, developer Firebird  - Fast Reports Business Intelligence-Losungen fur Entwickler  Michael Philippenko, CEO Fast Reports  - Datenbankkorruptionen beheben  Dmitry Kuzmenko, CEO IBSurgeon  - Fast Reports neue Produkte und Funktionen  Michael Philippenko, CEO Fast Reports  - Optimierung von Firebird-Datenbanken  Dmitry Kuzmenko, CEO IBSurgeon  ### FreeReport 2.33 URL: https://www.fast-report.com/news/freereport-2.33 Summary: FreeReport 2.33 FreeReport 2.33 - added Delphi 4-7, 2005, C++Builder 4-6 support - added FastReport 3 (*.fr3) format support in report designer - report preview improvements - bug fixes ### Frequently Asked Question update URL: https://www.fast-report.com/news/update-faq-fastreport-net Summary: Frequently Asked Question update Frequently Asked Question update We have updated the FAQ s and added two new branches: "FastReport.NET" and "Licensing, ordering questions". Please visit FAQ and find answers to your questions! ### From FastCube VCL 2 to FastCube .NET URL: https://www.fast-report.com/blogs/fastcube-vcl2-fastcube-net Summary: The name FastCube has occurred, as you understand, from FastReport and the cube. FastReport - a family of report generators for different platforms, and a cube - OLAP structure. The abbreviation OLAP means - online analytical processing. But why the cube? The name FastCube has occurred, as you understand, from FastReport and the cube. FastReport - a family of report generators for different platforms, and a cube - OLAP structure. The abbreviation OLAP means - online analytical processing. But why the cube? The name FastCube has occurred, as you understand, from FastReport and the cube. FastReport - a family of report generators for different platforms, and a cube - OLAP structure. The abbreviation OLAP means - online analytical processing. But why the cube? The name FastCube has occurred, as you understand, from FastReport and the cube. FastReport - a family of report generators for different platforms, and a cube - OLAP structure. The abbreviation OLAP means - online analytical processing. But why the cube? It is simple, if in the usual summary table the data is presented as a two-dimensional matrix, then in a cube - three dimensions. Generally speaking, they certainly can be more. Just the word cube most clearly reflects the multidimensional structure. Even if you have never worked with OLAP, you probably heard the expression "data cubes". This is the OLAP cubes. OLAP cubes are designed to display large amounts of data in a legible form for conducting analytics and determining patterns, for example, falling sales or population growth. In relational databases, information is stored separately in different tables and to get a complete picture, the analyst needs to reduce several tables into one view - the cube. It is this cube that will allow you to quickly assess trends in a time frame or another dimension. Based on the foregoing, we can say that the cube consists of a set of data and a set of measurements. The analyst sets the dimensions by which he wants to get the data and gets a two-dimensional table as a result. For example: This cube has three dimensions: Category, Seller and Item. And it displays three columns of data: Price, Amount, Work price. So, despite the fact that this is a three-dimensional cube, we always get data in two-dimensional form, so to speak, the data slice. Programs for working with data cubes have a large set of tools that facilitate the work of the analyst. For example, data filtering, data selection by condition, sorting, grouping, and others. Using these tools, you can instantly evaluate information. For example, you set the selection of data in red when any threshold is exceeded. Having seen the red field, in its cut, you immediately understand that not everything is "smooth". Based on all of the above, we can conclude that OLAP cubes are extremely useful for business analysts, and on their work depends the success of the whole company. So, we came to the conclusion that OLAP libraries are useful and in demand in the software market. At one time, Fast Reports released FastCube VCL, which was based on the FastReport VCL reports generator libraries. The most popular was the second version - FastCube VCL 2, which got a lot of new features inherent in all modern OLAP-programs (you can find out more about them here ). The main feature of the program is that it comes in the form of a set of components for Delphi or Lazarus. This allows you to create your own programs by adding an interface to work with cubes. The delivery also has a ready-made demo application for working with cubes, which in principle can satisfy the needs of most users. Let's look at the demonstration application FastCube VCL 2 with a cube: But the VCL platform is not as common as .Net. That's why all the functionality of FastCube 2 has been transferred to a new program based on the .Net framework. The new OLAP library is based on FastReport.Net components. Look at the interface of the demonstration program FastCube .Net: Almost brothers are twins, are not they? Now we will see by example that the functionality of these programs is the same. Moreover, you can use the same cube files in both FastCube 2 and FastCube .Net. If you notice, on the last two screenshots the same cube slice is loaded - simple.mdc. This file looks the same in both programs. All operations are performed in the same way in both programs. And this means, it will not be difficult to switching from FastCube VCL 2 to FastCube .Net. Let's apply the function of conditional data highlighting. Use the icon . In the window that appears, click on the icon for creating a new rule: . We have two types of cell highlighting: all cells depending on the value and cells matched to the condition. Let's choose the second type: Here, we need to specify the type of verification. In our case, Value. That is, the value of the cell will be checked. Then set the test condition to greater. There can be a lot of options, check for: more, less, between, more or equal and so on. In the input field, set the value with which we compare. On the right, you can select the cells to apply this rule to. It remains only to specify the cell style: As a result, we got the rule: Take a look at how it works in FastCube 2: And now we will create exactly the same rule in FastCube.Net: As you can see, the highlight works identically to the VCL version. With this example, I wanted to show that not only the interface, but also the FastCube .Net functionality was stored in accordance with FastCube 2. Moreover, there are new "features" in the .NET version, but about this in another article. Tags: .NET, VCL, FastCube, OLAP ### Full Review of FastGrid Library's Capabilities URL: https://www.fast-report.com/blogs/fastgrid-library-overview Summary: An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. FastReport VCL Ultimate  users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. FastGrid is a library for visualizing, editing, and structuring data in VCL and Lazarus. It consists of a table—a key element of visual programming. It allows for visual presentation of data and is widely used in applications for working with databases, tables, and lists. With FastGrid, you can create convenient and functional programs for data processing. Built-in filtering, sorting, and data structuring functions significantly simplify development. They reduce development time by eliminating unnecessary coding and allowing you to focus on business logic. Key Features of FastGrid It works in two modes. The first mode is like a regular DBAware component (DB). We use the TDataSource component to bind to the data, and then work almost like with a DBGrid (only much more conveniently). The second is the Unbound mode, where the grid stores and manages data internally. For the end-user, these two modes are visually indistinguishable, and from a developer's perspective, the implementation differences are minimal. Convenience of data editing. Many people know how difficult it is to enter numeric data using TEdit. It requires a system that allows users to enter only numbers and ensures that the entered value falls within a specified range. FastGrid's current suite of built-in editors already covers most user requirements, and there are plans to significantly expand the library of available editors in the future. Manual input of large amounts of data. During development, special attention was paid to setting up keyboard shortcuts to speed up data entry. A built-in navigation element. You can position it on any side of the grid, customize the buttons, or hide it completely.  Built-in data sorting and filtering capabilities. These capabilities are available both programmatically and in the user interface. You can sort by multiple columns simultaneously, in both ascending and descending order. Filtering is available at both the individual column and record levels. There are many ways to customize the grid's appearance. For example, with certain settings, you can make all fonts used in the grid bold, without changing the font size or other attributes! Multi-level grouping of grid rows by column values. Combinations of multiple columns are also supported for grouping. And, of course, integration with FastReport. Using the dedicated TfrGridReportBuilder component, you can print your grid with just one line of code, and you can export it to any format you need with the included export filters. Building a Demo Application with FastGrid Let's try creating a small data viewing application. This application will use the demo database included with  FastReport VCL , namely demo.mdb. Put a TADOConnection , TADOTable , and TDataSource on the form. Configure the TADOConnection to the demo database demo.mdb (if you have DemoCenter installed, this database is located in the folder "C:\Users\Public\Documents\Fast Reports\VCL\Feature Demos\FastReport VCL Demo\Data\" . You can also find it in the sample directories included with FastReport. Link the ADOTable1 to the customer database table and open it. You're ready to create your first application with FastGrid. The second step is to place the FastReport grid on the form. You can find it in the "FastControls VCL" tab in the Components panel. We actively use all the components in this tab, and you can see them when editing and viewing reports. Now let's connect our grid to the data. Note that the grid is a complex component. The grid can contain one or more View elements that display the data. The grid can also contain a data navigator. In the lower left corner of the grid, you can see the "legend." The legend shows the grid itself and the other components on it. Click on the frGridTableView1 element in the legend. The Object Inspector now displays the properties of the View on the grid. Now, find the DataController property in the Object Inspector and expand it. Next, let's set the value DataSource1 to DataController.DataSource . Now the current View is bound to the data. How do we actually display the data now? In a standard DBGrid, data is shown automatically. In our case, however, you must first add the specific fields you wish to display. First, open the table associated with the grid. Next, right-click on the legend, select the row corresponding to your View, and choose "Add missing columns" from the context menu. As the name suggests, this option adds all fields from the linked DataSource to the current View that are not already present. Since we currently have no fields defined, all of them will be added at once. You should see a result similar to the image shown below. Alternatively, you could select the "Link to DataSource" menu item—this would immediately connect the grid and automatically create all fields from the data source. Other commands in this menu also allow you to remove all fields from the grid or add a single field for further manual configuration in the Object Inspector. Now let's edit the resulting grid a little. We'll remove the Addr2, Zip, Fax, State, and TaxRate fields. To do this, simply right-click on the column header and select "Delete." If necessary, we can change the column widths directly in the designer with the mouse. Now let's add Data Navigator for the grid—we move on to the View properties and set OptionsView.ShowDataNavigator := True . We would like to emphasize that the OptionsView property contains general parameters affecting the grid's appearance. You can configure the position and other parameters, including the data navigator buttons displayed, with the OptionsDataNavigator property. After doing this, we'll get the following result in the IDE editor: Let's briefly go over the rest of the View properties: The OptionsData property allows you to configure the permitted data operations. OptionsCustomization controls user permissions to do various actions, such as sorting and filtering data, as well as resizing or reordering (moving) grid columns. OptionsBehavior confirms some operations with data. DataController sets up data connection. OptionsView —various settings for the grid appearance. Properties with names starting with the Appearance… prefix primarily control the visual style of various grid elements and their inheritance from parent components. We will examine these properties in more detail in future articles. Let's run the resulting application and see what an ordinary user can do with it. The user can do quite a lot. For example, clicking on a column header sorts the values. In the screenshot, we've sorted the grid by the Contact field. If we hover over the column header, we'll notice that a Filter Mark icon appeared there. Clicking this icon will allow us to filter the data. Any user can reorder or resize columns using the mouse, provided that you, as the developer, have enabled these permissions. FastGrid also allows for hiding unnecessary columns. To do this, left-click the upper-left corner of the grid and, in the popup window that appears, check or uncheck the names of the columns. The screenshot illustrates this column visibility management mode. Note that the CustNo column has elements of the UpDown type. The grid automatically detected that the field type is this number, and selected the appropriate editor to work with the field. If needed, you can manually select an editor for working with a field. To do this, select the desired column in the IDE designer. Then, in the Object Inspector, go to the column's "Properties" property and select the desired value from the drop-down list. After selecting an editor, "Properties" will become expandable, allowing you to configure its parameters. There are currently about ten editors available, and their number is constantly growing. Grid editors are also available as separate components. Avoid using data type editors that are incompatible with your field type. We will cover working with grid editors in detail in another article. For now, note that you can programmatically specify an editor for a grid column using the editor's name. We have successfully created a small application that displays a table—all without writing a single line of code! Now, let’s try adding some functionality to our application, such as selecting which table to view, printing, and exporting table data to CSV format. Let's put the following controls on our form: frComboBox , 3 buttons,  frSpinEdit and components  TfrxReport, TfrGridReportBuilder and TfrxCSVExport . We'll use frComboBox to select the table to display. We'll set the  frCombobox1.Properties.DropDownStyle := frddsFixedList in the Object Inspector and write the FormCreate handler: ``` procedure TForm1.FormCreate(Sender: TObject); var I:Integer; begin frCombobox1.Properties.Items.Clear; ADOConnection1.GetTableNames(frCombobox1.Properties.Items); I := frCombobox1.Properties.Items.IndexOf(ADOTable1.TableName); if I <> -1 then begin frCombobox1.ItemIndex := I; end; end; ``` And OnClick handler for Button1: ``` procedure TForm1.Button1Click(Sender: TObject); begin ADOTable1.Active := False; ADOTable1.TableName := frCombobox1.Text; ADOTable1.Active := True; frGrid1TableView1.Columns.Clear; frGrid1TableView1.Columns.RetrieveMissingColumns; end; ``` Now, if we launch our application, frComboBox1 will be populated with all tables from our database, and the one currently specified in our ADOTable will be selected by default. Clicking Button1 will then display the contents of the selected table in the grid. Let’s try opening the 'biolife' table: The grid automatically detected field types and can even display images stored in the database. However, the resulting images are small. Let's write the following handler for frSpinEdit1 : ``` procedure TForm1.frSpinEdit1PropertiesChanged(Sender: TObject); begin frGrid1TableView1.OptionsView.RowHeight := frSpinEdit1.Value; end; ``` Now, when you enter a value in  frSpinEdit1 and press Enter, we set the grid row height. Let's try printing the grid contents. To do this, we'll set the frGridReportBuilder1 component properties as follows: ``` Report:=frxReport1; View:=frGridTableView1; Options.BuildReportActionType:=braShowReport Options.BuildReportActionType:=frxCVSExport1 ``` And let's write our line in OnClick Button2 handler: ``` procedure TForm1.Button2Click(Sender: TObject); begin frGridReportBuilder1.Build; end; ``` Let's launch application, click on the Print button (Button2) and we get: In this example, we sorted the grid by the "Company" field and hid some columns. However, the preview displays exactly the same data as in the grid. Options.BuildReportActionType property of the TfrGridReportBuilder component determines what will be done with the current report after it is generated. There are three possible options: braPrepareReport simply prepares a report, and the programmer decides what to do with it next. braShowReport – shows a preview. braExportReport – exports the prepared report to the pre- defined export filter in the Options.DefaultExport property. Let's write the following handler for Button3: ``` procedure TForm1.Button3Click(Sender: TObject); begin TfrGridTableViewReportBuilderOptions(frGridReportBuilder1.Options).BuildReportActionType := braExportReport; frGridReportBuilder1.Build; TfrGridTableViewReportBuilderOptions(frGridReportBuilder1.Options).BuildReportActionType := braShowReport; end; ``` Let's launch our application and try pressing Button3. We will see a dialog box for exporting to CSV, followed by a dialog box for saving the resulting file. If we open the resulting file, we'll find that its contents match the data in the grid. A Brief Summary of the FastGrid Review Article Thus, with a few mouse clicks and a dozen lines of code, we have created a rather useful utility that allows you to export from a connected database. This example will work for Lazarus, including Linux. The only changes you'll need to make are the data access components and the methods for retrieving a list of tables from the linked database and activating the selected table. The grid works with any TDataSet descendant. You can explore this demo example without even typing code in your IDE. Everything is included in the FastGrid demo suite called "DataAware." As we can see, working with the TfrGrid component is quick and easy. In this article, we've briefly covered the main uses of this component. In future articles, we'll explore various aspects of grid use in more detail. If you're interested in any particular aspect of its use, let us know, and we'll do our best to cover the details more comprehensively. And don't put away the small project we built today—we’ll be needing it again soon! Tags: VCL, FastReport, FastGrid ### Generating reports in SAP NetWeaver with FastReport .NET – Part 1 URL: https://www.fast-report.com/blogs/generating-reports-sap-net-1 Summary: Build report for the current stock of materials. EPM Demo data model is data source for report. Build report for the current stock of materials. EPM Demo data model is data source for report. Build report for the current stock of materials. EPM Demo data model is data source for report. Part 1: Rapid report development   Landscape: SAP NW 7.31 or higher Workstation with SAP GUI for Windows FastReport .NET components installed on SAP NW Task: Build report for the current stock of materials. EPM Demo data model is data source for report. Final report example: Prepare Data source. We need to use SAP Query for report data source to be able to create new report. Run transaction SQ02 and switch namespace to local (we will use local namespace as it will not require transport requests  and you even can build queries directly in production system) Create new Infoset ZZDEMO_STOCK and choose table SNWD_STOCK as basis table. Add tables and join them as shown on the screen Press on “Infoset” button. On overview screen add (drag and drop) data fields to new result field group. Save and generate infoset. Run transaction SQ03 and create new user group “ZZDEMO_FR Reports “. Assign infoset ZZDEMO_STOCK to user group. Save user group. Preparing template Now let’s move to Fast report! Run transaction ZFR_COCKPIT. On the left panel select node Local->Reports-ZZDEMO_STOCK and then press button “Call query” to run Infoset Query.   Mark fields relevant for selection screen and report data source. Save query with name “Stock01- Stock overview”. After save and return new query will appear in the tree. Now press on it and on the right top panel press “add report”.  On the bottom screen maintain report parameters, set running type as “Run on frontend” and save data. After report parameters have been saved – press edit button and then “Designer”.  Selection screen with report parameters will appear. Execute report.  As result - Fast report designer will be opened. Adjust report options: Menu: Report->Options->General->Double pass. Menu: File->Page setup->Columns->Count->2. Let’s configure bands Menu: Report->Configure bands. Configure (add\remove) bands as presented on the screenshot Press on “Close” button. Double click on 1 st level group header band and put “[MYDATASET.CATEGORY]” as group condition. Double click on 2 d level group header band and put “[MYDATASET.PRODUCT_ID]” as group condition. Double press on Data band and choose “MYDATASET” as data source . Place report elements Choose “text element” from element toolbar and place it on Report title band. Double click on it and put follow text in it “Stock on [Date]”. From “Data” view drag “Category” to the first level group header band. From “Data” view drag “Product_id”, “TEXT” to the second level group band.   From “Data” view drag “ORG_UNIT_NAME”, “BIN_NUMBER”, “QUANTITY” to the “DATA” band.  Double press on “QUANTITY” element and add “[MYDATASET.QUANTITY_UNIT]” to it. On the report footer place “text element” from element toolbar put follow text in it “Page [Page] of [TotalPages]”. Final template should look so: Press preview button and view results (in designer mode source data restricted up to 100 rows). Save report (press SAP standard button) and leave designer. Now press “Run report” to run report and see results. Sometimes preview may be opened in backgroud, use Alt+Tab to switch between windows. RUN To use this report as standalone (without ZFR_COCKPIT)  we need to create separate transaction for it. Run transaction SE93, enter any transaction code you want (for example ZZDEMO_STOCK), put short text and choose “Transaction with parameters” as start object. On the next screen put “ZFR_RUN” as transaction code, check “skip initial screen” and in “Default values” add field “p_rep” and value . Save data. Now you can run report directly by calling transaction ZZDEMO_STOCK. Tags: .NET, FastReport ### Generating reports in SAP NetWeaver with FastReport .NET – Part 2 - Output messages (print documents) URL: https://www.fast-report.com/blogs/generating-reports-sap-net-2 Summary: We continue to generate reports in SAP NetWeaver using FastReport .NET, detailed instructions for the development of printed forms. We continue to generate reports in SAP NetWeaver using FastReport .NET, detailed instructions for the development of printed forms. We continue to generate reports in SAP NetWeaver using FastReport .NET, detailed instructions for the development of printed forms. Part 1 of the article Task: To build print form of purchase order and generate it for document type  “NB standard order”. Example: Prepare Data dictionary. For PO output data we need to create structures in ABAP dictionary. These structures will be used in the report designer as data source. Run transaction SE11. Create and activate the follow objects: Structure ZZPO_ITEM_S Table type ZZPO_ITEM_TT Structure ZZPO_PARTNER_S Structure ZZPO_DOC_S Table type ZZPO_DOC_TT Prepare template Run transaction ZFR_RMAN. Press on “New” button and add a new report “ZPO_FR” with parameters as presented on the screenshot  Save the report. After saving switch into edit mode (press “Edit” button) and then press “Designer” button. System will ask to enter Data source table. Enter ZPO_DOC_TT. After confirmation Fast report designer will be opened. Configure bands Menu: Report->Configure bands. Configure (add\remove) bands as presented on the screenshot Press on “Close” button. Double click on 1 st level “Data” band and select “ITEMS” as data source. Double click on 2 d level “Data” band and select “SCHD” as data source. Place report elements. Stretch “Report Title” band, place “text elements” from element toolbar and fill them with the static texts. Drag fields from “MYDATASET” data source table to the “Report Title”. Format “Page header” band to display items header ( add static text elements ).    Format “Data: ITEMS” band - place fields from “ITEMS” table. Format “Data: SCHD” band - place fields from “SHDL” table. On “Footer” band place summary fields from “ITEMS” table ([ITEMS.MENGE] and [ITEMS.MEINS]).      Final template: If to press “preview” button - report will be empty because still no “test” data has been generated. Later we will see how generate temporary data and preview report with the data. Save report template (press SAP standard button) and leave designer. Now press “Save” to save\update report settings. Develop print program and perform customizing We need to develop program\routine to be able to call printing form from purchase order output function. In ABAP Workbench create new module pool ZZMM_FRPRINTING. Add subroutine “po_print_fr” with the follow code: ``` *&---------------------------------------------------------------------* *& Module Pool ZZMM_FRPRINTING *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------*   PROGRAM zzmm_frprinting. TABLES: nast.   *&---------------------------------------------------------------------* *& Form po_print_fr *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->ENT_RETCO text * -->ENT_SCREEN text *----------------------------------------------------------------------* FORM po_print_fr USING ent_retco ent_screen.   DATA: lv_druvo LIKE t166k-druvo, ls_nast LIKE nast, lv_from_memory, ls_doc TYPE meein_purchase_doc_print, lt_ret TYPE bapiret2_t.   DATA lo_fr TYPE REF TO zcl_frbase_report.   DATA: ls_order TYPE zzpo_doc_s, lt_order TYPE zzpo_doc_tt, ls_item TYPE zzpo_item_s, ls_schd TYPE eket.   FIELD-SYMBOLS: TYPE ekpo, TYPE eket.   CLEAR ent_retco.   IF nast-aende EQ space. lv_druvo = '1'. ELSE. lv_druvo = '2'. ENDIF.   CALL FUNCTION 'ME_READ_PO_FOR_PRINTING' EXPORTING ix_nast = nast ix_screen = ent_screen IMPORTING ex_retco = ent_retco ex_nast = ls_nast doc = ls_doc CHANGING cx_druvo = lv_druvo cx_from_memory = lv_from_memory.   CHECK ent_retco EQ 0.   MOVE-CORRESPONDING ls_doc-xekko TO ls_order.   SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_order-provdata FROM lfa1 WHERE lifnr = ls_order-lifnr.   LOOP AT ls_doc-xekpo ASSIGNING .   CLEAR ls_item. MOVE-CORRESPONDING TO ls_item.   LOOP AT ls_doc-xeket ASSIGNING . CLEAR ls_schd. CHECK -ebelp = ls_item-ebelp. MOVE-CORRESPONDING TO ls_schd. APPEND ls_schd TO ls_item-schd. ENDLOOP.   APPEND ls_item TO ls_order-items.   ENDLOOP.   APPEND ls_order TO lt_order.   CREATE OBJECT lo_fr EXPORTING iv_reportkey = 'ZPO_FR'.   " use for production ent_retco = lo_fr->build_report( lt_order ).   ********************************************************************** **use for debugging\template correction " DATA: lv_answer.   " lo_fr->set_mode( zcl_frbase_report=>mc_edit ). " lo_fr->call_designer( lt_order ). " CALL FUNCTION 'POPUP_TO_CONFIRM' " EXPORTING " text_question = 'update report template in DB?' " IMPORTING " answer = lv_answer. " if lv_answer eq '1'. " lo_fr->save_report( ). " ENDIF. **********************************************************************     ENDFORM. "po_print_fr ``` In the code we call function to retrieve PO information, then map the data to our structure and call method ZCL_FRBASE_REPORT->BUILD_REPORT for report generation. In case we need to debug form with test data  - comment call of “BUILD_REPORT” method and uncomment section below.  Customizing. Call transaction NACE and create new output type ZZFR for Purchase order. As printing program select ZZMM_FRPRINTING and routine PO_PRINT_FR. Choose access sequence  0001. Add new output type to your output schema (for example RMBEF1) Create condition record for condition type ZZFR and PO type NB.  Open follow settings path: SPRO->Material Management->Purchasing->Messages->Output control->Message types->Define message types for Purchase order-> Fine-Tuned Control: Purchase Order. Add records for ZZFR Now you can open existing purchase order or create a new one and test printing form using standard buttons in the transaction ME23N. Otherwise use transaction ME9F for printing. Tags: .NET, FastReport, Printing ### Generating WEB reports with Mono URL: https://www.fast-report.com/blogs/generating-web-reports-mono There is a possibility of executing an ASP.NET web application under the Apache web server that is running on Windows, Mac OS X, Linux, BSD, and others operating systems. You may need to install several packages: the Apache web server the runtime Mono mod_mono xsp server (implements ASP.NET-pages functionality) Mono packages could be obtained here: http://www.mono-project.com/download/ After installing mod_mono and XSP you should edit the Apache server configuration. Find a place where you have installed the file mod_mono.conf - usually a folder /etc/apache2. Open the httpd.conf file and add the following line: Include /etc/apache2/mod_mono.conf You then need to restart the web server. To test the efficiency of the module mod_mono, you can copy the contents of the /usr/lib/xsp/ to the test folder of your website. To speed up the application under mod_mono ASP.NET we recommend disable KeepAlive in your httpd.conf: KeepAlive Off If disabling this option is not desirable, it is necessary at least to lower the value of KeepAliveTimeout: KeepAliveTimeout 2 More information about the configuration of mod_mono can be read on Mod_mono guide . FastReport.Mono is compatible with mod_mono starting from version 1.0.11. To use FastReport.Mono as an ASP.NET application, you should put FastReport.Web.dll file in the project folder together with the file FastReport.Mono.dll. Example ASP.NET applications running mod_mono can see in the folder Demos/C#/Web. Tags: Mono, FastReport ### Get 1 Year of FastReport Cloud Subscription for Half Price until June 30! URL: https://www.fast-report.com/news/cloud-sale-2025 Summary: A one-year subscription to the FastReport Cloud Cloud cloud service for storing, editing and managing reports is only half price until June 30th! A one-year subscription to the FastReport Cloud Cloud cloud service for storing, editing and managing reports is only half price until June 30th! FastReport Cloud is a cloud service for running, storing, editing, and managing reports and documents. Experience all the benefits of SaaS with 50% savings: Create reports in the cloud — no load on your computer, accessible from anywhere in the world Built-in report designer Automation and scheduled tasks Collaborative work with flexible access control Secure operation with protected login and digital signature Benefits of FastReport functionality: connect to various data sources, export to popular formats, and deliver reports conveniently Flexible plans to fit every user’s needs Pay for 6 months, get 12 months of access!  ### Get stock quotes using a GET request in JSON format and connect them to FastReport VCL 6 URL: https://www.fast-report.com/blogs/stock-quotes-json-vcl Summary: How to build a stock quote reports in Delphi by using TradingView API through GET request How to build a stock quote reports in Delphi by using TradingView API through GET request How to build a stock quote reports in Delphi by using TradingView API through GET request Today we will look at the way to get stock quotes using a GET request with HTTPS protocol and public tradingviewapi.docs.apiary.io API According to the documentation https://tradingviewapi.docs.apiary.io/#reference/0/history/0?console=1  in order t o get stock quotes you need to use the GET request history GET history https://api.bcs.ru/udfdatafeed/v1/history?symbol=BRENT&resolution=60&from=1450772216&to=1450858616 URI PARAM ETER S Name Example Description symbol BRENT currency pair resolution D discreteness of candles, possible values: 1, 5, 15, 30, 45, 60, 120, 180, 240, D, W, M from 1450772216 beginning of period to 1450858616 end of period Create an application and add components to the form: ``` frxReport1: TfrxReport; JSON_DS: TfrxUserDataSet; ButtonConnectToJSON: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; ComboBoxName: TComboBox; ComboBoxResolution: TComboBox; DateTimePickerFrom: TDateTimePicker; Label4: TLabel; DateTimePickerTo: TDateTimePicker; ButtonShowReport: TButton; Image1: TImage; Label5: TLabel; StatusBar1: TStatusBar; ButtonDesign: TButton; frxDesigner1: TfrxDesigner; frxChartObject1: TfrxChartObject; frxPDFExport1: TfrxPDFExport; ``` Add items to ComboBoxName and ComboBoxResolution ``` ComboBoxName.Items := 'GAZP SBER BRENT MOEX ROSN YNDX RUAL'; ComboBoxResolution.Items := '1 5 15 30 45 60 120 180 240 D W M'; ``` Add global variables ``` var tHTTP: TfrxTransportHTTP; frxJSON: TfrxJSON; Res: String; Symbol,Resolution,FromCandlesHistory,ToCandlesHistory : String; frxJSONArrayT,frxJSONArrayC,frxJSONArrayO, frxJSONArrayH,frxJSONArrayL,frxJSONArrayV: TfrxJSONArray; S: TStringStream; ``` In Click event of ButtonConnectToJSON button, we write the following code: ``` procedure TFormJSON.ButtonConnectToJSONClick(Sender: TObject); begin frxReport1.LoadFromFile('ChartJSON.fr3'); JSON_DS.RangeEnd := reCount; Symbol := ComboBoxName.Items[ComboBoxName.ItemIndex]; Resolution := ComboBoxResolution.Items[ComboBoxResolution.ItemIndex]; FromCandlesHistory := DateTimeToUnix(DateTimePickerFrom.DateTime).ToString; ToCandlesHistory := DateTimeToUnix(DateTimePickerTo.DateTime).ToString;   //Creating a TfrxTransportHTTP Object for a GET Request over HTTPS   tHTTP := TfrxTransportHTTP.Create(nil); try   //We form a GET request string and get a response in JSON format   Res := tHTTP.Get('https://api.bcs.ru/udfdatafeed/v1/history?symbol=' +Symbol+ '&resolution='+Resolution + '&from='+ FromCandlesHistory+ '&to='+ToCandlesHistory);   // if JSON is received incorrectly, then load it from the file and display a message in StatusBarr   if (Res = '') or (pos('"s":"ok"',Res) = 0) then begin StatusBar1.SimpleText := 'Error loading JSON'; S := TStringStream.Create('', TEncoding.UTF8); try S.LoadFromFile('JSON/'+Symbol+'.json'); finally Res:= S.DataString; FreeAndNil(S); end; StatusBar1.SimpleText := 'Successful JSON loading from file '+Symbol+'.json'; end else begin StatusBar1.SimpleText := 'Successful JSON('+Symbol+') loading'; end;   // We load the received JSON from the Res line into the frxJSON object: TfrxJSON   frxJSON := TfrxJSON.Create(Res); try if frxJSON.IsValid then begin StatusBar1.SimpleText :=StatusBar1.SimpleText +' /JSON is Valid';   // Read arrays   if frxJSON.IsNameExists('t') then frxJSONArrayT := TfrxJSONArray.Create(frxJSON.ObjectByName('t')); frxJSONArrayC := TfrxJSONArray.Create(frxJSON.ObjectByName('c')); frxJSONArrayO := TfrxJSONArray.Create(frxJSON.ObjectByName('o')); frxJSONArrayH := TfrxJSONArray.Create(frxJSON.ObjectByName('h')); frxJSONArrayL := TfrxJSONArray.Create(frxJSON.ObjectByName('l')); frxJSONArrayV := TfrxJSONArray.Create(frxJSON.ObjectByName('v')); // Prepare JSON_DS by clearing and adding fields JSON_DS.Fields.Clear; JSON_DS.Fields.Add('Ticker'); JSON_DS.Fields.Add('Date'); JSON_DS.Fields.Add('Time'); JSON_DS.Fields.Add('Open'); JSON_DS.Fields.Add('Close'); JSON_DS.Fields.Add('High'); JSON_DS.Fields.Add('Low'); JSON_DS.Fields.Add('Vol'); JSON_DS.RangeEndCount := frxJSONArrayT.Count; end else StatusBar1.SimpleText :=StatusBar1.SimpleText +' /JSON is Invalid'; finally end; finally end; end; ``` To get data when generating a report from the arrays frxJSONArrayT, frxJSONArrayC, frxJSONArrayO, frxJSONArrayH, frxJSONArrayL, frxJSONArrayV through the JSON_DS component: TfrxUserDataSet, we need to use the OnGetValue event: ``` procedure TFormJSON.JSON_DSGetValue(const VarName: string; var Value: Variant); var Item: string; Time : string; begin Item := frxJSONArrayT.GetString(JSON_DS.RecNo); DateTimeToString(Time, 't', UnixToDateTime(StrToInt64(Item)));   if VarName = 'Ticker' then begin Value := Symbol; exit; end else if VarName = 'Date' then begin Value := DateToStr(UnixToDateTime(StrToInt64(Item)))+' '+Time; exit; end else if VarName = 'Time' then begin Value := Time; exit; end else if VarName = 'Open' then Item := frxJSONArrayO.GetString(JSON_DS.RecNo) else if VarName = 'Close' then Item := frxJSONArrayC.GetString(JSON_DS.RecNo) else if VarName = 'High' then Item := frxJSONArrayH.GetString(JSON_DS.RecNo) else if VarName = 'Low' then Item := frxJSONArrayL.GetString(JSON_DS.RecNo) else if VarName = 'Vol' then Item := frxJSONArrayV.GetString(JSON_DS.RecNo);   Value := Item; end; ``` Next, create a template in report designer, call it ChartJSON.fr3 and connect JSON_DS to it To display the chart, use the Candle Series from the TeeChart Pro VCL package and also connect to JSON_DS Next, add the Click event handlers for the remaining buttons: ``` procedure TFormJSON.ButtonDesignClick(Sender: TObject); begin if (Res = '') then ButtonConnectToJSON.Click; frxReport1.DesignReport(); end;procedure TFormJSON.ButtonShowReportClick(Sender: TObject); begin if (Res = '') then ButtonConnectToJSON.Click; frxReport1.ShowReport(); end; ``` We also add Change event handlers for ComboBoxName, DateTimePickerFrom and DateTimePickerTo: ``` procedure TFormJSON.ComboBoxNameChange(Sender: TObject); begin ButtonConnectToJSON.Click; end;   procedure TFormJSON.DateTimePickerFromChange(Sender: TObject); begin ButtonConnectToJSON.Click; end;   procedure TFormJSON.DateTimePickerToChange(Sender: TObject); begin ButtonConnectToJSON.Click; end; ``` Also when closing the application do not forget to free up the memory of used objects. ``` procedure TFormJSON.FormClose(Sender: TObject; var Action: TCloseAction); begin tHTTP.Free; frxJSON.Free; frxJSONArrayT.Free; frxJSONArrayC.Free; frxJSONArrayO.Free; frxJSONArrayH.Free; frxJSONArrayL.Free; frxJSONArrayV.Free; end; ``` Next, run the application In this application you can select desired stocks And you can also select desired date range using the calendar Connection to JSON occurs when you click on the "Connect to JSON", "Show Report" or "D" buttons, as well as when changing the dates or names of shares and displays a message about the connection status. When you click on the "Show Report" button, a report is built and its Preview is displayed Congratulations, you received stock quotes in JSON format using a GET request, connected JSON to FastReport VCL 6 and built a report. Download demo link: DemoJSON.zip . Tags: VCL, VCL, FastReport, FastReport, JSON, JSON, Delphi, Delphi, HTTPS, HTTPS ### GS1 Databar barcodes in FastReport .NET URL: https://www.fast-report.com/blogs/gs1-databar-barcode-net Summary: With the release of FastReport .NET 2022.1 added new types of GS1 Databar barcodes. Additionally, we consider their creation from code. With the release of FastReport .NET 2022.1 added new types of GS1 Databar barcodes. Additionally, we consider their creation from code. With the release of FastReport .NET 2022.1 added new types of GS1 Databar barcodes. Additionally, we consider their creation from code. We have added the following barcodes: – GS1 Databar Limited; – GS1 Databar Omnidirectional; – GS1 Databar Stacked; – GS1 Databar Stacked Omnidirectional. GS1 DataBar is a highly versatile product labeling symbol primarily intended for scanning at POS terminals. GS1 DataBar is capable of encoding the GTIN (Global Trade Item Number) on small consumer products, which are difficult to label with a standard EAN-13 symbol. This is fresh (weight) produce, jewelry, or “do it yourself" products. Data encoded with GS1 Databar Limited, GS1 Databar Omnidirectional, GS1 Databar Stacked, GS1 Databar Stacked Omnidirectional consists of an Application ID (01), a 13-bit Numeric Trade Item ID, and a Check Digit. Note: leading digits (01) are an implied application identifier that is not to be encoded in the symbol and is displayed only as text to show that data is encoded for basic use. The character standard is defined by  ISO/IEC 24724-2011 , which describes instructions for decoding barcodes. GS1 Databar Omnidirectional barcode is designed for omnidirectional reading and can be used at POS. GS1 Databar Limited barcode is designed for unidirectional reading and cannot be used at POS. GS1 Databar Stacked Omnidirectional Barcode is a GS1 Databar Omnidirectional split into two lines. It is designed for omnidirectional reading and can be used at POS. GS1 Databar Stacked Barcode is a GS1 Databar Omnidirectional split into two lines. It is designed for unidirectional reading that cannot be used at POS. Generating GS1 Databar Omnidirectional from code: ``` //Create a report object Report report = new Report(); //Create a report page ReportPage page = new ReportPage(); //add a unique identifier page.CreateUniqueName(); //Add it to the collection of report pages report.Pages.Add(page); //Create a data band DataBand dataBand = new DataBand(); //with a unique identifier dataBand.CreateUniqueName(); //and add it to the band collection page.Bands.Add(dataBand); //Create a barcode object FastReport.Barcode.BarcodeObject barcode = new FastReport.Barcode.BarcodeObject(); //Set the barcode type barcode.Barcode = new FastReport.Barcode.BarcodeGS1Omnidirectional(); //Set a numeric combination for encoding barcode.Text = "1234567890123"; //Place the barcode on the page barcode.Parent = dataBand; //Set the size of the object barcode.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 3); //Display the report report.Show(); ``` These barcodes allow users to encode the required product data and use it for various purposes. Tags: .NET, FastReport, Barcode ### Guides in the FastReport .NET designer URL: https://www.fast-report.com/blogs/guides-net-designer When designing a report template, you often need to build controls on the same layer. In FastReport VCL, for example, this applies to the grid on the report page. In FastReport.Net grid represents only a point of intersection of the lines in the ground. This is not so distracting as the line but at the same time helps to build objects. And yet, for these purposes, there is another, much more convenient tool - guide lines. You can add a thin dotted line in the vertical and horizontal planes that help build controls. These lines are only visible in the Report Designer, and will not be displayed when the report is run. Here is the View toolbar on which the guide lines of the controls: You can add these lines manually or use the option: Automatic Guides. First of all, I want to tell you about the automatic backlighting guide lines when adding components to the page of the report, in the style of Microsoft Visual Studio: That is, if you have at least one control on the report page, you can align it with respect to other controls. To manually add guide lines, choose a location on the vertical or horizontal line, and double-click the mouse. You can add any number of tracks. To move the line you should click on the slider (when you move the slider will be dark) on the scale holding it move to the desired position. If the line goes through the boundary of the object, it will move together with line. This is useful when you need to place all objects on the same line. You should move the line with object until it will be at the boundary of the other object. Let go the slider of the line. Now the second object "bonded" to the line. And if you move the slider now, both objects will move together the line. So you can "catch" the third, fourth, etc. items.: To delete the desired line, press and hold the slider and move it out of the page. No matter in which area. We remember that when you move the line that passes through the object's border, it will move together the line. It is better to remove such lines by moving the slider up or down, not sideways. To quickly remove the designer provides two buttons on the toolbar: "Delete the horizontal guides" and "Delete vertical guides." Their designation is clear from the titles. Now consider the option "Automatic Guides". If you enable it, all added objects will be framed by the guide lines, ie, two vertical and two horizontal: It should be noted that if the option "Automatic Guide," then there is no way to manually add a line. Moreover, previously written lines are removed. But, all the objects previously added, will be provided with guides automatically. If the abundance of guide lines prevents you, you can disable them using the "Guides" button. Moreover, all sliders will be saved, and you can always revert to the line again by pressing the button. Many novice report developers neglect such means as "guides", but in fact it makes designing of template is much simpler and faster. Still, nice to deal with a simple and convenient tool. Tags: .NET, .NET, FastReport, FastReport, Desktop, Desktop, Designer, Designer ### Handling of PreviewControl.OnPrint and .OnExport events URL: https://www.fast-report.com/blogs/preview-control-events-in-reports Summary: Adding the ability to subscribe to new OnExport and OnPrint events for the Preview control to the report FastReport.NET. Adding the ability to subscribe to new OnExport and OnPrint events for the Preview control to the report FastReport.NET. Adding the ability to subscribe to new OnExport and OnPrint events for the Preview control to the report FastReport.NET. In FastReport 2019.4 added the ability to subscribe to PreviewControl.OnPrint and PreviewControl.OnExport events, which are called directly when the corresponding buttons are pressed. When viewing a report, a viewer is called with a toolbar that has elements such as a print button and a drop-down list with report exports. Selecting any item in the list will trigger the OnExport event, and pressing the Print button will trigger OnPrint. Let's take an example and see how we can use these events in practice. You can use the standard handler for these events, which is created for the visual component of PreviewControl: In this case you just add the necessary actions to the handler. But if you add the PreviewControl component in the application code, you will have to sign your own handler for the event. For example, your handler may send you an export or print event alert. This could be, for example, a record in a database. Let us consider this example: ``` private void Button1_Click(object sender, EventArgs e) { //create report Report report = new Report(); //Load report report.Load("App_Data/Master-Detail.frx"); //create data source DataSet data = new DataSet(); //load data data.ReadXml("C:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\nwind.xml"); //register data report.RegisterData(data); //create preview object var prev = new PreviewControl(); //add preview into the form this.Controls.Add(prev); prev.Dock = DockStyle.Fill; prev.BringToFront(); //subscribe to the event prev.OnExport+= new System.EventHandler(ExportAction); //assign preview control to the report report.Preview = prev; //Show the report report.Show(); } ```  After creating the report object and registering data in it, we create a PreviewControl, subscribe to the OnExport event our event handler, which we will implement below. Then we assign the PreviewControl object to the preview report. And now we implement a custom event handler for the OnExport event: ``` public void ExportAction(object sender, PreviewControl.ExportEventArgs e) { SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"); SqlCommand command = new SqlCommand("insert into dbo.Status (ReportName, ExportType, ExportDate) Vales ('" + Path.GetFileNameWithoutExtension(e.Report.FileName) + "', '"+ e.Export.BaseName +"', '" + DateTime.Now + "')"); command.Connection = conn; conn.Open(); command.ExecuteNonQuery(); conn.Close(); } ```  In this method, we record information about the export event in a database, with the report name, export type and transaction date. This is just one possible example of how to use this event. You can, for example, implement sending an email on this event, or saving an export file to a specific folder. The OnPrint event is handled in the same way. These two events are the most frequent operations on reports when viewed, so many people would like to automate their custom operations on the event. Now it is possible, it is easy to take information about the report, export or print settings from event arguments and dispose of it to create your own, additional operations. Tags: .NET, .NET, FastReport, FastReport, Preview, Preview ### Handling the "Division by 0" exception in .NET URL: https://www.fast-report.com/blogs/division-zero-exception-net Summary: Let's take a closer look at how the "Division by 0" exception handling works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how the "Division by 0" exception handling works in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how the "Division by 0" exception handling works in FastReport .NET. Find more usefull tips and articles in our blog. Among the updates in FastReport 2018.4, there was a solution to the dividing by zero error. Previously, report developers had to handle this exception themselves. After all, we cannot guarantee that because of the data this error will not occur. If you have not done the division by zero processing, you will get an exception that will interrupt the construction of the report. As a result, you still have to refine the report, and this is an additional time cost. Now, you do not need to think about this problem, in the expression where the division error by zero occurred, the message “Division by zero” will be displayed. In this case, the report is constructed. Let's compare what was and what has become when divided by zero. Add a text field to the report and enter the following expression: [2018/0]. These are two integers. That's what how it was in previous versions of FastReport .NET. When trying to run a report in the designer: When running a report from a user application: As it has become: The report was constructed, but the field with an error is highlighted with a red background, replaced by the text DIVISION BY ZERO! It works on integer values. And what if you divide numbers with a comma by zero? For example, the expression [2018.0 / 0.0] will give the result: This works in the previous version and in the new one. Thus, the built-in processing of division by zero freed us from the "headache" - to write our own handlers in the report script. So, the development of reports has become even easier and more convenient. Tags: .NET, FastReport ### Highlight text by clicking URL: https://www.fast-report.com/blogs/highlight-text-clicking Often, viewing your electronic reports, you want to highlight some of the line, as you would have done it with a paper version using highlighter. Well, it is really possible. In the report preview mode, you can select the desired text fields with a mouse click. That is, you click on the text box and its color changes. When you click again, the highlighting disappears. I'll show you two ways to do it, and both involve the use of the report script. Method 1: The essence of this method is to use a sender (the object that caused the event) to assign a new color in the event handler OnCklick. In this case, you need to refresh the report page in the cache, because preview mode displays a report thereof. So, let's create a simple report with a list of products: Suppose we want to highlight one of the fields by clicking on it. And we want to remove the highlight when you click on it again. Create event Click for the text object, which displays the field Products.ProductName. ``` private void Text1_Click(object sender, EventArgs e) { if (sender is TextObject) { //Define sender as TextObject TextObject obj = sender as TextObject; //Method of highlighting an object SwitchColor(obj); if(Report.Preview != null) { // Refresh the current page of the report in the cache, if the report is viewed on a desktop Report.PreparedPages.ModifyPage(Report.Preview.PageNo - 1, obj.Page as ReportPage); //Refresh preview Report.Preview.Refresh(); } } }   private void SwitchColor(TextObject obj) { // Check whether the object is filled with yellow if (obj.Fill is SolidFill && (obj.Fill as SolidFill).Color != Color.Yellow) //Fill with yellow obj.Fill = new SolidFill(Color.Yellow); // Clear the fill else obj.Fill = new SolidFill(Color.Transparent); } ``` As you can see, we take Sender object from the click event, define it as a text object and change its fill. Then, redraw the report page in the cache. If we have a web report, we simply change the object's fill, without redrawing the report page. Consider an alternative method. Method 2: The essence of this method is to determine the coordinates of an object, which we will fill with color. Then we update the report page in the cache, like the first method. ``` private void Text1_Click(object sender, EventArgs e) { if (sender is TextObject) { // Get the current page number int pageNo = Report.Preview.PageNo - 1; // Get the page by number ReportPage page = Report.PreparedPages.GetPage(pageNo); // Define sender as TextObject - this phantom object, we also need the original object from the preview page TextObject obj = sender as TextObject; // Looking the original object on the preview page foreach(ReportComponentBase b in page.AllObjects) // It is necessary to identify the object by name and coordinates if (b.Name == obj.Name && b.AbsTop == obj.AbsTop && b.AbsLeft == obj.AbsLeft) { // Get the original object obj = b as TextObject; break; } // Defining the object's fill if (obj.Fill is SolidFill && (obj.Fill as SolidFill).Color != Color.Yellow) obj.Fill = new SolidFill(Color.Yellow); else obj.Fill = new SolidFill(Color.Transparent);   // Update the report page in the cache Report.PreparedPages.ModifyPage(pageNo, page); // Refresh prewiew Report.Preview.Refresh(); } } ``` Demonstrate the work of this code: This method objectively more difficult, and is only a preview mode. However, it does have advantages. Suppose you want to highlight not only the object that you clicked, and the entire row in the table. Then add another text object so that it overlaps the object on which we will click. We stretch the entire width of its line. It is important that the left border of the text object coincides the left boundary of the text object, for which we have created an event Click. Make a right click on it. And choose from the menu: Thus, we move the object to the background, so it does not overlap other text fields. We modify our previous code: ``` if (b.AbsTop == obj.AbsTop && b.AbsLeft == obj.AbsLeft) { // Get the original object obj = b as TextObject; break; } ```  I removed from the condition the comparison by name and leave only a comparison of the coordinates of the beginning of the field. And now run the report and click on the name of a product: Thus, both methods are viable. First - it is easier, but only allows you to highlight a particular object, which we get in the sender. The second - more difficult, but allows you to highlight not only the object of the sender, but also others. We just need to specify their coordinates. In the web report you will be able to use only the first method. Of course you may change not just the background color, but the color, style or font of the text. In addition, all such modifications are preserved when exporting a report in any of the supported formats, such as a PDF. I hope you will come in handy this little life hacking. Tags: .NET, .NET, FastReport, FastReport, Interactivity, Interactivity ### Highlighting Even Rows (Zebra Striping) in FR .NET URL: https://www.fast-report.com/news/highlighting-even-rows-blog Summary: Highlighting Even Rows (Zebra Striping) in FastReport .NET Highlighting Even Rows (Zebra Striping) in FastReport .NET We often use zebra striping of table data for easy viewing the reports. Highlighting even rows is good for viewing but they look strange on paper or in Excel table.  FastReport users have two methods for using highlighting only in preview window. Method #1 You need to open report in the Designer and open the Style Editor from Report-Styles menu. Then we add a style with name "EvenRows" and set needed background color for even lines.   Then you need to set a band property  EvenStyle = EvenRows. more... ### Highlighting Even Rows in Reports (Zebra Striping) URL: https://www.fast-report.com/blogs/highlighting-even-rows-reports We often use zebra striping of table data for easy viewing the reports. Highlighting even rows is good for viewing but they look strange on paper or in Excel table.  FastReport users have two methods for using highlighting only in preview window. Method #1 You need to open report in the Designer and open the Style Editor from Report-Styles menu. Then we add a style with name "EvenRows" and set needed background color for even lines.   Then you need to set a band property EvenStyle = EvenRows. You need to add the parameter in the Parameters item of Data Tree with name "EvenOff", bool type end default expression "false". Then let to add new event handler of Report in object inspector. Double-click on StartReport event and write code: private void _StartReport(object sender, EventArgs e)     {        if ((Boolean)Report.GetParameterValue("EvenOff"))         Data1.EvenStyle = "";       else         Data1.EvenStyle = "EvenRows";     } Now you can control highlighting from code . Review an example for export in Excel from WebReport: ...             webReport.Report. SetParameterValue("EvenOff", true);             webReport.Report.Prepare();             Stream stream = new MemoryStream();             webReport.Report.Export(new Excel2007Export(), stream); ... Method #2 All objects in report have properties Printable and Exportable. These properties set in true by default and enable or disable object in print or export. You can create an empty text object and set needed properties. Then you need to set a style as described above and put object behind the striped objects.  To do this, right click on the object and select the bottom menu item "Send To Back". Remember that striped objects should have a transparent background. Tags: .NET, .NET, FastReport, FastReport ### How is FastReport VCL 2022 different than the previous ones? URL: https://www.fast-report.com/fastreport-vcl-2021-features Summary: Let's briefly talk about the capabilities of the new generation of FastReport VCL 2022 report generators Delphi, C++Builder, RAD Studio, and Lazarus Let's briefly talk about the capabilities of the new generation of FastReport VCL 2022 report generators Delphi, C++Builder, RAD Studio, and Lazarus FastReport VCL 2022.0 is the next generation of reporting tool for Delphi, C++Builder, RAD Studio, and Lazarus Significantly improved work with images - as in image editors: - High-quality vector SVG images in reports - Improved image transparency in different formats New objects widen the concept of a "report": Two-Track Pharmacode for designing and printing medication and vaccine packages Report safety and security: Now reports in PDF are protected with a digital signature. It guarantees its uniqueness, allows to clearly establish the authorship, and protects it from editing. Your reports now correspond with the docflow standards. Resource optimization: - Page miniatures are formed faster - Less memory required for work ! New licensing model:  Starting March 2021 all FastReport VCL editions are subscription-based. It means that you will always have an up-to-date version as long as your subscription is valid.  In detail:  Loading and output images in vector SVG format through standard “Picture” object (only for Delphi). Enhance the look of your reports! Added support of Digital signature in PDF export with pfx and p12 certificates support. Sign up your PDF documents just in 3 simple steps: Add the “Digital signature” object (TfrxDigitalSignatureView), select type of signature (hidden, visible, image), and sign up documents with your certificate. Improved transparency support for images inside a report. Now FastReport VCL supports not only color mask but also an alpha channel in the report preview, on the printout, and exports which supports transparent images. Added experimental picture cache with the ability to generate thumbnails and control overall image quality. New picture cache saves memory usage and GDI descriptors. It loads only one instance of duplicated image (can be turned on with Report.PictureCacheOptions.CaсhedImagesBuildType=tbtOriginal property). The picture cache can be set up for thumbnail generation which’s using for a fast load of images in the preview window (can be turned on with Report.PictureCacheOptions.CaсhedImagesBuildType=tbtAtPrepare). The thumbnail quality controls by Report.PictureCacheOptions.ThumbnailQualityReducer properties and allows setting percent of compression and conditions. In addition, it is possible to control the overall quality of compression for all pictures through Report.PictureCacheOptions.OriginalQualityReducer property. Those images using for preview, printout, and export of a report.  Added new barcode type Two-Track Pharmacode. Added new TfrxRichView object for Lazarus with support of Linux for rtf document loading into a report. Added ability to replace Web browser for authorization window in cloud save filters (EdgeView2, CEF4Delphi). More information can be found in the article . Full list of changes: Version 2021 ---------------------------- + Added support of vector SVG format in TfrxPictureView object + Added Digital signature object and digital signature support for PDF Export (Supported types: skNone, skInvisible, skVisible, skEmpty) + Added experimental picture cache and thumbnail cache controlled by TfrxReport.PictureCacheOptions properties + Added support of alpha transparency for export filter and printing + Added Two-Track Pharmacode barcode + Added RichView object for Lazarus with Linux support + Added support for external web browsers components for authorization dialog (CEF4Delphi, new Edge interfaces) + Added support of Windows Environment Variables in client-server config file config like %ALLUSERSPROFILE% - Fixed preview's Thumbnail scale for HighDPI - Fixed bug in XLSX with empty lines - Fixed Print state for virtual printers - Fixed EMF to SVG export with SegoeUI font - Fixed IME input in syntax memo for a group of symbols more than two - Fixed bug with clip-in EMF to PDF export - Fixed TfrxPictureView clip - Fixed synchronization bug with dialog forms under Delphi 7 CS components - Fixed gaps for interactive text fields in PDF - Fixed bug with Cambria Math font in SVG/HTML exports - Fixed HasField function when exception raised - Fixed HatchBrush for Lazarus in Linux - Fixed stall of the main thread in Synchronizer #601673 - Skip chart reading errors to read files from others version for TeeCharts - Fixed PaperSizes max count for some printers. ### How ITF-14 barcode works in Delphi / Lazarus and how to fine-tune it URL: https://www.fast-report.com/blogs/itf-14-barcode-works-delphi Summary: We review the changes in the work of the ITF-14 barcode with step-by-step creation from the code in Delphi / Lazarus. We review the changes in the work of the ITF-14 barcode with step-by-step creation from the code in Delphi / Lazarus. We review the changes in the work of the ITF-14 barcode with step-by-step creation from the code in Delphi / Lazarus. A new ITF-14 barcode has been added in FastReport VCL 2021.2 . Let me remind you that ITF-14 (Interleaved Two of Five) is a two-band numeric code, or a high-density code that can encode an even number of digits only. Each such barcode encodes an odd digit with a bar and an even digit with a space between the odd ones. To encode an odd number of digits, you need to pad the leftmost (most significant) digit with a zero. You can read more theoretical information about ITF-14  in another article. Not long ago, our users found some non-critical errors. Nevertheless, sometimes they interfered with the use of the barcode. The fixes are already in the public domain. This article is intended to help those users who have not noticed the errors yet, and it will also introduce the implementation features. It was noticed that under some conditions, incorrect digits could be displayed under the barcode. Also, the strokes went beyond the borders of the frame at the bottom. These errors have already been fixed and if you use ITF-14 barcode in your projects, then we highly recommend you updating FastReport to the latest version. Now let’s move on to the features. The frame is mandatory for this barcode, since it is spelled out in the specification. So, there will be no way to completely disable the frame or make a lot of change. But you can still change it. First, you can turn off sidelines by turning on the TestLine property. Secondly, you can change the thickness of the inline by changing Frame->Width. This property will work even if the outer border is disabled.  Optionally, you can enable and configure an outer frame using the Frame property. The principle is exactly the same as for any other object in the report; the barcode will have 2 frames at once, and the outer one will be richer in design possibilities.  Generating the ITF-14 barcode using Delphi / Lazarus code ``` procedure TForm1.Button1Click(Sender: TObject); var bc: TfrxBarcodeView; begin bc := TfrxBarcodeView(frxReport1.FindObject('BarCode1')); {Set the type of the barcode} bc.BarType := bcCode_ITF_14; {Set a fixed barcode value} bc.Text := '12345678912345'; {Set the scale at which the barcode will be displayed} bc.Zoom := 2; {Set the rotation angle of the barcode. Can take values 0, 90, 180, 270} bc.Rotation := 0; {Set whether to change the width of the barcode depending on its content} {If set to False, Zoom property will be set to keep the barcode width fixed} bc.AutoSize := True; {Set background of the barcode} bc.Color := clNone; {Set the color of bars} bc.ColorBar := clBlack; {Set whether to display text at the bottom of the barcode} bc.ShowText := True; {Set the width of the inner frame} bc.Frame.Width := 3; {Set the outer frame} {Set how external frames from all sides are displayed} bc.Frame.Typ := [ftLeft, ftRight, ftTop, ftBottom]; {Set the width of the left frame line} bc.Frame.LeftLine.Width := 5; {Set the color of the left frame line} bc.Frame.LeftLine.Color := clRed; {Set the style of the left frame line} bc.Frame.LeftLine.Style := fsDashDotDot; {Copy the settings of the left frame line to the right one} bc.Frame.RightLine.Assign(bc.Frame.LeftLine); {Copy the settings of the left frame line to the top one} bc.Frame.TopLine.Assign(bc.Frame.LeftLine); {Copy the settings of the left frame line to the bottom one} bc.Frame.BottomLine.Assign(bc.Frame.LeftLine); frxReport1.ShowReport(); end; ``` ITF-14 is undoubtedly one of the most commonly used barcodes. If you notice any errors or have any questions, please write in our  Support .  Tags: VCL, Lazarus, FastReport, Barcode, Delphi ### How RFID Tags Work in FastReport VCL URL: https://www.fast-report.com/blogs/zpl-rfid-tags-vcl Summary: In this article, we'll check out how RFID tags work with the new TfrxDeviceCommand object in FastReport VCL with release 2025.2. In this article, we'll check out how RFID tags work with the new TfrxDeviceCommand object in FastReport VCL with release 2025.2. RFID tags are a modern way to ID products, quickly replacing barcodes. What makes RFID tags different is they use radio signals. This lets you scan large quantities of items fast, saving a bunch of time. RFID tags are also used to identify employees within companies. In this article, we'll check out how RFID tags work with the new TfrxDeviceCommand object in FastReport VCL. RFID tags are a modern way to ID products, quickly replacing barcodes. What makes RFID tags different is they use radio signals. This lets you scan large quantities of items fast, saving a bunch of time. RFID tags are also used to identify employees within companies. In this article, we'll check out how RFID tags work with the new TfrxDeviceCommand object in FastReport VCL . Features of RFID Structure The structure of an RFID tag consists of four data banks: Reserved Bank: Contains two passwords: access password and kill password. The first password allows management of access to specific banks or parts of the tag's memory. The second password is used for permanently disabling the tag or its reusability (if such a function is supported). Each password has a length of no more than 32 bits. Product Code Bank Tag ID Bank User Data Bank All banks except the first can have varying capacities or may be locked by suppliers; all this is described in the specifications of the tag. The standards for formatting data in these banks are described in this document . For local use, any data formatting that is convenient for the user to work with can be employed.  TfrxDeviceCommand object was created for the implementation of tags in FastReport VCL, where the RFID tag is one of the possible presets. Currently, this is the only preset, but we plan to expand this category in the future. In version 2025.1.8, this object is processed only via ZPL export (other exports currently skip it). We plan to extend its processing to other exports upon request. Features of the TfrxDeviceCommand Object It is not a visual object, meaning it does not appear in the preview (only in the designer). It does not have height and width. The position within the container (Page or Band) is used solely in the designer for better visibility. In other words, the position does not affect the processing order during export. It can be understood that during export, TfrxDeviceCommand has its own separate queue. A separate queue for a single preset is an excessive solution. However, it is still worth considering the parameters of the TfrxDeviceCommand object that influence the specified queue.  To configure the processing time, the object has a field called ProcessingTime, which can take 2 values: ptBeforeView processes before the entire content of the container); ptAfterView (after the content of the container). If the container has multiple TfrxDeviceCommand objects with the same ProcessingTime, the Order field (ranging from 0 to MaxInt) will be required. Suppose there are 3 TfrxDeviceCommand objects in the container with the following parameters: ProcessingTime = ptAfterView , Order = 1; ProcessingTime = ptBeforeView, Order = 0; ProcessingTime = ptAfterView , Order = 0; When exporting the container, the processing order will be as follows: The second object (ProcessingTime = ptBeforeView, Order = 0); The content of the container; The third object (ProcessingTime = ptAfterView, Order = 0); The first object (ProcessingTime = ptAfterView, Order = 1); Additionally, this object has the following fields: DeviceType — used to select a preset; currently, there is only one value, dtRFIDLabel, and it cannot be changed for now. DeviceProperties — contains fields, the list of which changes depending on the selected DeviceType. This is where the content of the current preset (RFID labels) is stored. How to Configure the Content of the Object The content can be configured not only in the object inspector but also in the editor. Translation into other languages besides English is not available to avoid confusion with specialized terminology. The editor is divided into tabs, each containing properties for a specific memory bank, along with one tab for additional label options. Some fields are duplicated to support filling expressions (for example, from the database). In the reserved data bank, passwords can only be entered in the format of a hexadecimal number consisting of eight characters. Furthermore, without a non-zero access password, it will not be possible to control access modes. In other data banks, you can choose the recording format: either a hexadecimal number or a string in ASCII encoding. For more information on RFID support in ZPL, you can refer to the official documentation.  This object for FastReport VCL is the first of its kind. However, new presets for this object will be implemented in the future. Tags: VCL, FastReport, Designer, ZPL ### How to add an EPC QR code to an invoice from Delphi and Lazarus URL: https://www.fast-report.com/blogs/eps-qrcode-invoice-delphi Summary: FastReport VCL now supports the European Payments Council standard for encoding payment information using a QR code. FastReport VCL now supports the European Payments Council standard for encoding payment information using a QR code. FastReport VCL now supports the European Payments Council standard for encoding payment information using a QR code. The standardization of payment systems results not only in new standards but also in new documents built on these standards. The reporting system should offer its users a fast and convenient way to create such standard documents. EPC is a European Payments Council standard. It was designed to simplify the coding of payment information in the Single Euro Payments Area using a QR code. Such a barcode contains all the necessary information for making a payment. You can see an example of encoded information in the table below. Service Tag: BCD Version: 001 Character set: 1 Identification: SCT BIC: BPOTBEB1 Name: Red Cross IBAN: BE72000000001616 Amount: EUR1 Reason (4 chars max): CHAR Ref of invoice: Empty line or REFINVOICE Or text: Urgency fund or Empty line Information: Sample EPC QR code FastReport VCL has special classes of presets to simplify the arrangement of such data and organize them as objects. The TfrxEPCPaymentPreset class is designed to quickly generate a QR code in the EPC format. Let's look at how to add an EPC QR code and connect to it the data from the example. It is based on a report from our demo application “Nested Groups”. The report has been slightly changed to display a list of purchased items for each company. We want to add an EPC QR code at the end of each company's payment document so that the client could make a quick payment. Select a barcode object with the “QRCode” type on the FastReport VCL components palette and place it on the footer band. Click on the barcode object and go to the ExpressionPreset property, expand it, and select TfrxEPCPaymentPreset in the PresetClass property. The settings have been assigned and can now be accessed by expanding the DataObject property in the Object Inspector. Next, we are going to link the fields with relevant data. Drag the required fields from the data tree to the desired property in the object inspector. To enter static data, you need to use single quotes, because these fields are expressions. For example, you would use the format 'BE00000000000000' to specify a fixed value in the IBAN property. Let's combine all the necessary data to make the code by assigning the appropriate properties. You can run the report and make sure that the barcode is generated in the desired format. These are not all the possibilities of this class of settings. The DrawOptions property allows you to control frame settings and additional information in accordance with the scan2pay standard. Let's take a closer look at these properties: FillColor: the background color of the barcode fill. FrameColor: frame color with rounded edges. FrameVisible: enables or disables the frame inside the barcode. FrameWidth: inner frame thickness. Hint: additional text information HintType: determines where to show additional information: htEPCNone –to hide additional information; htEPCLeft –along the left edge of the frame; htEPCRight - along the right edge of the frame; htEPCTop - along the top edge of the frame; htEPCRight - along the bottom edge of the frame; Fill in the fields as shown in the screenshot above and run the report for execution. As a result, we received a scan2pay barcode. These settings are unusual because the frame and text are drawn inside the object (unlike the frame around the object, for which the Frame property is responsible), and such a frame will be displayed correctly in all formats of exported files. Tags: VCL, VCL, Lazarus, Lazarus, FastReport, FastReport, Barcode, Barcode, Delphi, Delphi, QR Code, QR Code ### How to Build and Connect the Firebird Plugin in FastReport .NET URL: https://www.fast-report.com/blogs/fastreport-net-firebird-plugin Summary: In this article, we will go through the process of building and connecting the Firebird plugin in FastReport .NET through the report designer and via code. In this article, we will go through the process of building and connecting the Firebird plugin in FastReport .NET through the report designer and via code. When creating reporting systems, it's important to ensure that reporting tools are compatible with various databases. FastReport .NET is one of the most sought-after libraries for generating reports in .NET applications. In this article, we will go through the process of building and connecting the Firebird plugin in FastReport .NET through the report designer and via code. When creating reporting systems, it's important to ensure that reporting tools are compatible with various databases. FastReport .NET is one of the most sought-after libraries for generating reports in .NET applications. In this article, we will go through the process of building and connecting the Firebird plugin in FastReport .NET through the report designer and via code. First, open the directory where FastReport .NET is installed on your system. The default path is: C :\Program Files (x86)\Fast Reports\.NET\FastReport .NET WinForms\Extras\Core\FastReport.Data\FastReport.Data.Firebird This path must be correct since there is an outdated project at the path  (Extras\Connections\FastReport.Firebird) After that, you need to launch the FastReport.Data.Firebird.csproj project in Visual Studio. Important! In the folder, there are several files, but you specifically need to open this one. Next, select the FastReport.Data.Firebird project and right-click on it, then choose “Set as StartUp Project” from the context menu. Remove the FastReport project from the dependencies. Then add either the NuGet package FastReport.Net.Demo or the licensed package FastReport.Net from your private NuGet server. Detailed instructions for the package server are available here . After that, build the project as shown in the screenshot below. After building the project, the “Output” tab will show that the build was successful. Now it's time to launch the report designer. If you have the Ribbon interface enabled, click on “File” -> “Settings” and go to the “Plugins” tab. If you have the Ribbon interface disabled, during startup click “View,” then “Settings,” and go to the “Plugins” tab as well. Click the “Add” button and navigate to: Extras\Core\FastReport.Data\FastReport.Data.Firebird\bin\Release\net462 . Then sequentially select the FastReport.Data.Firebird.dll and FirebirdSql.Data.FirebirdClient.dll files, and then click the “Open” button. You must completely restart the report designer. After restarting, click “Data” -> “Add Data Source.” If everything was done according to the instructions, the connection to Firebird should appear in the list of connections as shown in the picture below.  Connecting to Firebird via Code Sometimes you need to connect to Firebird not through the report designer, but through code. In this case, you will need to install the FastReport.Data.Firebird package in Visual Studio and then register the connection in your application as follows ``` FastReport.Utils.RegisteredObjects.AddConnection(typeof(FirebirdDataConnection)); ``` Now you should be able to create a new data connection to Firebird from code: ``` Report report = new Report(); report.Load(@«YourReport.frx»); //... FirebirdDataConnection conn = new FirebirdDataConnection (); conn.ConnectionString = «connection string»; conn.CreateAllTables(); report.Dictionary.Connections.Add(conn); ``` In FastReport .NET, it is very easy to build and connect various connectors to a multitude of databases. For any questions, please contact our support service. Happy reporting! Tags: .NET, Visual Studio, FastReport, Data Source, Plugin, Firebird, NuGet ### How to build and install the Postgres plugin in FastReport .NET URL: https://www.fast-report.com/blogs/plugin-postgres-net Summary: This article describes how to connect to the database using the FastReport .NET plugin for the report designer from Visual Studio via the NuGet server. This article describes how to connect to the database using the FastReport .NET plugin for the report designer from Visual Studio via the NuGet server. Our FastReport .NET has quite rich features and wide functionality. This article describes how to connect to the database using the FastReport plugin for the report designer. In Visual Studio, you need to find the project file, go to the NuGet package management, connect to the NuGet server of Fast Reports and select the desired package. Our FastReport .NET has quite rich capabilities and wide functionality. Today we will look at connecting to the database using the FastReport plugin for the report designer. Below is an example of the FastReport .NET installation path that would be:  C:\Program Files (x86)\FastReports\WinForms 1.    Go to the installation folder and then follow the path Extras\Core\FastReport.Data\FastReport.Data.Postgres Important! The path should be exactly like this; there may be outdated projects along other paths. 2.    We find there the project file FastReport.Data.Postgres.csproj in Visual Studio.  Important! There are several files in this folder, you need to open this one. 3.    Several projects will open in Visual Studio. Select FastReport.Data.Postgres and right-click on it, and then click “Set as Startup Project” in the context menu. 4.    Select the “Release” build and the “net462” target. 5.    In the decision tree, expand the project -> Dependencies -> net462 -> Projects and Packages. Pay attention to the exclamation marks in the triangles. 6.    Delete “FastReport” in “Projects”. We don’t delete anything else in the dependencies. Now you need to add nuget packages FastReport.N et and Npgsql .  Important! FastReport.Net must be added as a package, since the method of adding FastReport.dll no longer works. 7.    In the “Dependencies” context menu, select “Manage NuGet Packages”. 8.    You need to add two package sources: nuget.org and the source referring to our nuget-server , or to the local folder  C:\ProgramFiles(x86)\FastReports\WinForms\Nugets. 9.    Select the nuget.org source. 10.    On the “Installed” or “Updates” tab, find the Npgsql package and click on it. 11.    We look on the right and see the following information: the current version associated with the project is 3.2.7, the latest version of the package is 8.0.3, the Uninstall and Update buttons. 12.    Click on the Update button. 13.    Select the second package source. The example uses the Nuget Server of Fast Reports Inc. 14.    Go to the Browse tab and enter fastreport.net in the search field  15.    Select the FastReport.Net package or FastReport.Net.Demo for the trial version.  Important! It should be one of these two packages, as the FastReport.Net.Pro package is outdated and no longer used.  16.    We carefully look at the version and select the one that we have installed. This manual covers 2024.2.12 version. 17.    Click the Install button. We accept the license agreement and wait for the package to be installed. 18.    Right-click on the FastReport.Data.Postgres project and click Build in the context menu. 19.    At the bottom left we see the inscription “Build succeeded.” This means that the plugin is built correctly and Visual Studio can be closed. 20.    Go to the folder where FastReport .NET is installed, as indicated at the beginning of the instruction, this is C:\Program Files (x86)\FastReports\WinForms. There should be "Designer.exe" here. 21.    We move from this folder to the following folders along the path: Extras\Core\FastReport.Data\FastReport.Data.Postgres\bin\Release 22.    We find 2 folders “net462” and “net6.0-windows7.0”, go to the net462 folder. 23.    Copy the following files from this folder:  FastReport.Data.Postgres.dll,  Npgsql.dll,  Microsoft.Bcl.AsyncInterfaces.dll,  Microsoft.Extensions.Logging.Abstractions.dll,  System.Threading.Tasks.Extensions.dll,  System.Memory.dll  24.    Paste the copied files into the folder where Designer.exe is located. 25.    Run “Designer.exe”, go to the File -> Options menu (View -> Options if the Ribbon interface is disabled). Go to the “Plugins” tab. 26.    If there is already a FastReport.Data.Postgres plugin, you need to remove it and repeat step 21. 27.    Click on the “Add” button, go to the designer folder, in this example it is  C:\Program Files (x86)\FastReports\WinForms  28.    Select the FastReport.Data.Postgres.dll file and click the “Open” button. The plugin appears in the list. 29.    Pay attention to the text at the bottom left, which indicates that the Designer needs to be restarted. Click the OK button. Close the designer. 30.    Launch Designer.exe again. If you have followed this instruction, the connection to Postgres should appear in the list of connections. 31.    If you see the following errors when trying to connect: Then you need to close the designer, copy the file indicated in the error from the С:\Program Files(x86)\Fast Reports\WinForms \Extras\Core\FastReport.Data\FastReport.Data.Postgres\bin\Release\net462 to the folder where you have Designer.exe. In FastReport .NET, it is very easy to assemble and connect various connectors to a variety of databases. Tags: .NET, FastReport, Data Source, Plugin, PostgreSQL, NuGet ### How to build daily graphics from csv files URL: https://www.fast-report.com/blogs/build-daily-graphics-csv Summary: Let's take a closer look at how to create daily charts from CSV files in FastReport works. Find more usefull tips and articles in our blog. Let's take a closer look at how to create daily charts from CSV files in FastReport works. Find more usefull tips and articles in our blog. Let's take a closer look at how to create daily charts from CSV files in FastReport works. Find more usefull tips and articles in our blog. Suppose you keep a record of employee sales in an Excel file. Would you like to see sales results for the month in the form of a graph. So it's faster and easier to assess the efficiency of the employee. It would be nice to see the difference in terms with the previous day. You need this report every morning. FastReport Desktop comes to the rescue. With the help of it we will create a report with a nice chart and create a task in the scheduler for the daily sending of the report to you by the email. Let's determine the data source. This will be a csv file, for example, with the following content: We have three columns: the order number, the order date, the seller's surname. Suppose this file is updated daily with new data. Then every morning the chief will receive a report with a schedule of sales for employees. Let's create a report. Add a new data source - CSV file. We place the Chart object on the report page. No matter in what band. Let it be the Data band. As you noted, the report header contains the date: We used the system variable [Date], and to display the date without time, we used the function FormatDateTime. We proceed to the diagram. Double-click on it: At the top right, you need to select the data source for the chart, which we call the Chart. The chart consists of series, which actually represent diagrams. We already have one added series - Series 1. Click on it. On the "Data" tab we need to determine which fields from the source we will display. For the value of X, select the FirstName field. For the value of Y, the OrderID. There is the "Filter" field above. Let's add here such a complex expression in it: FormatDateTime(ToDateTime([Chart.OrderDate]), "MMYYYY") ==FormatDateTime([Date], "MMYYYY") Here we get the month and year from the OrderDate field and compare it with the current month and year. Thus, we filter the actual data for the current year and month. Let's change the name of the series to "Today": Go to the "Data Processing" tab. Here we will enable the grouping of data by " X Value", and the function - Count: On the "Labels" tab, select "Pattern:" - VALY Now let's add one more series to the chart and call it "Yesterday": We adjust it with the same parameters as the first series, with only one change. In the filter there will be one more condition: (FormatDateTime(ToDateTime([Chart.OrderDate]), "MMYYYY") ==FormatDateTime([Date], "MMYYYY"))&&(ToDateTime([Chart.OrderDate])LoadFromFile("1.fr3"); frxReport1->PrepareReport(true); frxReport1->LoadFromFile("2.fr3"); frxReport1->PrepareReport(false); frxReport1->ShowPreparedReport(); ``` Load the first report and build it without displaying it on the screen. Then load the second report into the same TfrxReport object and build it with the ClearLastReport = False parameter. This adds the second report to the previous one. Obviously, we can repeat the two penultimate lines to add some more reports to our complex composite report. And this part is only possible from the code. When we have built everything, we can see the combined reports in the preview window and easily save this file in any format and location from it. Saving the combined report as PDF. After we managed to combine two reports into one we simply export it to PDF (or, in fact, to any file format – for example, RTF/DOC/ODT or tabular – but it is not so difficult to combine them after export while it is relevant for PDF). Here you can let the user select the file format for saving and settings: Click  on the Save icon in the preview. Select the required format  – PDF. We can see the Export settings window. Configure everything that we need. For more information about creating and configuring, see the article: Click OK when finished! Or something like that    "FrxReport1.Export (frxPDFExport1);" I described the parameters of saving in various formats from the Delphi, Lazarus, and C ++ Builder code in more detail in previous articles. We can open the resulting document after creation. Having opened the file, we will see a consistent display of our reports in one PDF document. Combining two PDF reports from Delphi, Lazarus, and C++ Builder is not as difficult as it might seem. Tags: VCL, Export, Lazarus, FastReport, PDF, Delphi ### How to Configure a Report with Business Objects in Code and the FastReport .NET Designer URL: https://www.fast-report.com/blogs/business-objects-net Summary: This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects in FastReport .NET. This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects in FastReport .NET. FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects (Category → Products). FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects (Category → Products). Why Use Business Objects as a Data Source? Business Objects offer several advantages over traditional data sources: Support for complex object models — Works seamlessly with nested collections, making it ideal for Master-Detail reports (demonstrated later in this article). Database independence — Reports can be generated without a direct database connection. Easy maintenance — Changes to the data model typically require little or no modification to existing reports. High performance — Data is serialized directly from application objects. Flexibility — Suitable for WinForms, WPF, ASP.NET Core, microservices, and other .NET applications. Preparing the Business Objects 1. Create the model classes First, install the FastReport.Net.Demo NuGet package (or the licensed FastReport.Net package from our private NuGet server ), then create the following model classes: ``` public class Category { public string Name { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; public List Products { get; set; } = new List();   public Category() { }   public Category(string name, string description) { Name = name; Description = description; } }   public class Product { public string Name { get; set; } = string.Empty; public decimal UnitPrice { get; set; }   public Product() { }   public Product(string name, decimal unitPrice) { Name = name; UnitPrice = unitPrice; } } ``` 2. Populate the Business Objects Next, implement a simple method to populate the data: ``` static private void CreateBusinessObject() { FBusinessObject.Clear();   Category category = new Category("Beverages", "Soft drinks, coffees, teas, beers"); category.Products.Add(new Product("Chai", 18m)); category.Products.Add(new Product("Chang", 19m)); category.Products.Add(new Product("Ipoh coffee", 46m)); FBusinessObject.Add(category);   category = new Category("Confections", "Desserts, candies, and sweet breads"); category.Products.Add(new Product("Chocolade", 12.75m)); category.Products.Add(new Product("Scottish Longbreads", 12.5m)); category.Products.Add(new Product("Tarte au sucre", 49.3m)); FBusinessObject.Add(category);   category = new Category("Seafood", "Seaweed and fish"); category.Products.Add(new Product("Boston Crab Meat", 18.4m)); category.Products.Add(new Product("Red caviar", 15m)); FBusinessObject.Add(category); } ``` 3. Designing the Report To create a report based on the Categories BusinessObject data source, use the following code: ``` [STAThread] static void Main(string[] args) { Report report = new Report(); CreateBusinessObject(); report.RegisterData(FBusinessObject, "Categories BusinessObject"); report.Design(); } ``` Important: Call RegisterData after loading the report (report.Load) and before calling report.Prepare(). After launching the report designer, select the data source by opening "Data → Choose Report Data". Next, create a simple Master-Detail report, or use one of the sample templates included with the FastReport demo projects. Once the report is ready, run it in Preview mode to verify the output. 4. Displaying the Report in a Console Application Once the report template has been created, you can display it from a Console application using the following code: ``` [STAThread] static void Main(string[] args) { Report report = new Report(); report.Load(@"Business Objects.frx"); CreateBusinessObject(); report.RegisterData(FBusinessObject, "Categories BusinessObject"); report.Prepare(); report.Show(); report.Dispose(); } ``` Complete WinForms Application Example ``` public partial class Form1 : Form { static private List FBusinessObject = new List();   public Form1() { InitializeComponent(); CreateBusinessObject(); }   private void CreateBusinessObject() { FBusinessObject.Clear();   Category category = new Category("Beverages", "Soft drinks, coffees, teas, beers"); category.Products.Add(new Product("Chai", 18m)); category.Products.Add(new Product("Chang", 19m)); category.Products.Add(new Product("Ipoh coffee", 46m)); FBusinessObject.Add(category);   category = new Category("Confections", "Desserts, candies, and sweet breads"); category.Products.Add(new Product("Chocolade", 12.75m)); category.Products.Add(new Product("Scottish Longbreads", 12.5m)); category.Products.Add(new Product("Tarte au sucre", 49.3m)); FBusinessObject.Add(category);   category = new Category("Seafood", "Seaweed and fish"); category.Products.Add(new Product("Boston Crab Meat", 18.4m)); category.Products.Add(new Product("Red caviar", 15m)); FBusinessObject.Add(category); }   private void btnCreateNew_Click(object sender, EventArgs e) { // create report instance Report report = new Report();   // register the business object report.RegisterData(FBusinessObject, "Categories BusinessObject");   // design the report report.Design();   // free resources used by report report.Dispose(); }   private void btnRunExisting_Click(object sender, EventArgs e) { // create report instance Report report = new Report();   // load the existing report report.Load(@"..\..\Business Objects.frx");   // register the business object report.RegisterData(FBusinessObject, "Categories BusinessObject");   // run the report report.Show();   // free resources used by report report.Dispose(); } }     public class Category { public string Name { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; public List Products { get; set; } = new List();   public Category() { }   public Category(string name, string description) { Name = name; Description = description; } }   public class Product { public string Name { get; set; } = string.Empty; public decimal UnitPrice { get; set; }   public Product() { }   public Product(string name, decimal unitPrice) { Name = name; UnitPrice = unitPrice; } } ``` Conclusion Business Objects are one of the most modern and convenient ways to work with data in FastReport .NET. They allow you to integrate report generation into your application's architecture in a clean and maintainable way, without introducing unnecessary complexity into your codebase. This approach is especially well-suited for medium-sized and large projects, where clear separation of concerns, maintainability, and rapid report development are essential. By using Business Objects, you gain maximum flexibility and full control over how data is supplied to your reports, while keeping your reporting layer closely aligned with your application's domain model. Tags: .NET, FastReport, Data Source, Designer, C#, Preview ### How to configure Content Security Policy for FastReport .NET WEB reports URL: https://www.fast-report.com/blogs/net-content-security-policy Summary: Learn how to configure Content Security Policy for FastReport .NET WEB reports: an overview of CSP directives and values, changes in the FastReport architecture, typical bypass scenarios, and ways to protect against them. Learn how to configure Content Security Policy for FastReport .NET WEB reports: an overview of CSP directives and values, changes in the FastReport architecture, typical bypass scenarios, and ways to protect against them. Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions of FastReport .NET WEB, the architecture of the client-side has been significantly reworked, which simplifies compliance with a strict CSP without losing report functionality. In this article, we will examine how to properly configure CSP for FastReport reports and take into account typical risks. Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions of FastReport .NET WEB, the architecture of the client-side has been significantly reworked, which simplifies compliance with a strict CSP without losing report functionality. In this article, we will examine how to properly configure CSP for FastReport reports and take into account typical risks. How CSP works and why it is needed Content Security Policy (CSP) is a security mechanism or even a standard for web applications that allows you to control which resources (scripts, styles, fonts, images, connections, etc.) can be loaded and executed on a page. CSP is implemented through the HTTP header Content-Security-Policy or HTML meta tag. The main goal of CSP is to prevent Cross-Site Scripting (XSS) attacks and the introduction of malicious code. The policy prohibits the execution of unsigned or unauthorized scripts, even if an attacker manages to inject a
``` As you can see from the code, we just load the HTML report file by requesting it from the service link. Open the file WebApiConfig.cs from the folder App_Start. Add one more MapHttpRoute for the Index page: ``` public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "Index", routeTemplate: "{id}.html", defaults: new { id = "index" } );   config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } ``` In the same folder, the RouteConfig.cs file is located. It can be deleted. Open the file Global.asax. Delete the line: ``` RouteConfig.RegisterRoutes(RouteTable.Routes); ``` Now routing will be carried out only through WebApiConfig. Launch the application and click the "Download" button: We receive our report. From the example considered, it is clear that working with web service for reports using Ajax is very simple. Tags: .NET, .NET, FastReport, FastReport, Web API, Web API ### How to handle errors when calling WebReport.DesignerSaveCallBack URL: https://www.fast-report.com/blogs/handle-errors-calling-webreport Online Designer is an excellent tool for creating reports on the Internet. Let's look at the situation. You create a report template, save it, and ... See the message "was not saved". But what is wrong? How do you know what the error is? Now, the web report has the Debug property, with which you can "catch" errors right in the online report designer. We need to enable the WebReport.Debug property and create an error handler in the method of saving the report. The error will be passed to the designer when the WebReport.DesignerSaveCallBack event is called. Let's look at the process of saving a report from an online designer in a simplified way, then it happens like this: 1. Press the button to save the report in the report designer; 2. The designer calls our handler while saving; 3. The handler processes the report and calls a callback in the MVC application; 4. If an error occurs, it is sent to the handler; 5. The handler sends an error to the online designer. Let's look at an example. Create an ASP.Net MVC application. Open the controller HomeController.cs. Preliminarily add links to the FastReport and FastReport.Web libraries in the links. The section «uses» will contain the following links: ``` using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.UI; using System.Runtime.Caching; using System.Text; using System.IO; using FastReport; using FastReport.Web; using FastReport.Utils; using System.Web.UI.WebControls; using FastReport.Export.Html; using FastReport.Data; using System.Net.Http.Headers; using FastReport.Export.Image; using System.Net.Http; ```  In the Index method, we will create an empty report and open it in the online designer (OnlineDesigner). But, beforehand, you need to add an online designer to the project. Unzip the downloaded online designer into the WebReportDesigner folder at the root of the solution: ``` public ActionResult Index() { WebReport webReport = new WebReport(); // Create a new web report Report report = new Report(); // Create a new report ReportPage page = new ReportPage(); // Create a new report page report.Pages.Add(page); // Add a page to the report webReport.Width = Unit.Percentage(100); // Web Report Width 100% webReport.Height = Unit.Percentage(100);// Web Report Height 100% string report_path = this.Server.MapPath("~/App_Data/");// Report folder System.Data.DataSet dataSet = new System.Data.DataSet();//Create a data set dataSet.ReadXml(report_path + "nwind.xml");// load the database into it webReport.Report = report; // Assign a blank report to the report in the program webReport.RegisterData(dataSet, "NorthWind");// Register the data source in the report webReport.DesignReport = true; // Enable report design mode webReport.DesignerPath = "~/WebReportDesigner/index.html";// Set the path to the designer webReport.DesignerSaveCallBack = "~/Home/SaveDesignedReport";// Set the view to save the reports, which we will create a little later webReport.ID = "DesignReport"; //Report id webReport.Debug = true; ViewBag.WebReport = webReport; return View(); } ``` Now we need a method of saving the report in Online Designer: ``` [HttpPost] public ActionResult SaveDesignedReport(string reportID, string reportUUID) { ViewBag.Message = String.Format("Confirmed {0} {1}", reportID, reportUUID); if (reportID == "DesignReport") { try { Stream reportForSave = Request.InputStream; string pathToSave = Server.MapPath("~/App_Data/DesignedReports/test.frx"); using (FileStream file = new FileStream(pathToSave, FileMode.CreateNew)) { reportForSave.CopyTo(file); } } catch (Exception e) { throw new Exception(e.Message); } } return View(); } ```  Here, we add error handling. To return an error to an online designer, you need to throw an exception: ``` throw new Exception(e.Message); ```  For this action, we create a separate view named SaveDesignedReport.cshtml and the following code: ```

@ViewBag.Message

```  Now consider the view for the Index page (Home-> Index.cshtml): ``` @{ ViewBag.Title = "Home Page"; }   @ViewBag.WebReport.GetHtml(); ```  At the top we display the title of the page. Next, we display the report received from the controller.  In the file _Layout.cshtml you need to connect scripts: ``` @WebReportGlobals.Scripts() @WebReportGlobals.Styles() ```  Now you need to make changes to the two web configs. The files are called the same, but they are located in different folders. The first one is located in the Views folder. Add to it: ``` ```  The second file is located at the root of the project. In it we add a handler: ``` ``` Run our application. Go to the "Report" tab. Click "Save". The first time should be successful. Press the save button again. And we get an error. From the text it is clear that the report template file with this name already exists. So we got a debugging tool for our reports and the web application as a whole. Tags: .NET, .NET, FastReport, FastReport, MVC, MVC, Online Designer, Online Designer, WebReport, WebReport ### How to hide a report page if you don't have data on it URL: https://www.fast-report.com/blogs/hiding-reportd-page-with-no-data Summary: The article describes how to hide report page without data. The article describes how to hide report page without data. The article describes how to hide report page without data. Data sources do not always contain data. And when you build reports, even if the data source is empty, the page will be created, at least with headlines. On report generator forums, you can find questions from users about how to hide blank pages: "Please tell me how to skip (not print) a blank page if DataBand on it contains no data." For example, the report generator Stimulsoft Reports developers propose to hide the page by using the tool Conditions. Setting a condition to check the number of records in the source, you can specify the page display component option. A good solution, simple enough. The topic of the article is relevant to any report generator, so let's look at the way to do this in FastReport.NET Data Bend has PrintIfDatasourceEmpty property which is false by default. This means that the band will not be displayed if the data is not there. But still the page is displayed to the user as it contains the data headers, or page title. Therefore, we need to write a simple script that will hide the page, if the band with this empty. There are two options: 1)      Check the void data source in the band with the data. To do this, use the StartPage event page of the report: ``` private void Page2_StartPage(object sender, EventArgs e) { if (Data2.DataSource.RowCount == 0) Page2.Visible = false; } ```  But in this case, you need to enable the DoublePass option for the report. The fact is that we can check the void of the band with data only at the stage of page formation, and we need to hide it. The DoublePass option includes a double pass when building a report. During the second pass, it will already be known that the data source in the band is empty and the page will be hidden before it is built. 2)      The second method does not require a round trip of the report. We just need to add a handler for the event StartReport report object: ``` private void _StartReport(object sender, EventArgs e) { DataSourceBase ds = Report.GetDataSource("Category"); if (!ds.HasMoreRows) { Page2.Visible = false; } } ```  In this case we check directly to the data source of the report, table Category. And then we can find out whether the source is empty before the start of the report creation page.  Thus, we have considered a way to hide the page when there is no data in the source. Tags: .NET, .NET, FastReport, FastReport ### How to hide columns in a list if there is no data URL: https://www.fast-report.com/blogs/hiding-no-data-columns Summary: Showing how to hide the column in the table in FastReport .NET report generator if data is not displayed in it. Showing how to hide the column in the table in FastReport .NET report generator if data is not displayed in it. Showing how to hide the column in the table in FastReport .NET report generator if data is not displayed in it. When making the report, we want it to be "friendly" to the consumers as much as possible. Too much data and design elements processing makes people's understanding of information more unfavourable. As a result, many people want to delete spaces in a table without data. FastReport.Net report generator allows you to perform this function. As you understand, it is necessary not only to hide the column, but also a title for it. If hiding a column is a matter of a couple of clicks with a mouse, then hiding the title task is not trivial. Suppose we have a table from which we want to display the data in a report. However, some data may be missing or set to zero. In this case, we can use the “Conditional Selection” tool to hide zero-data cells. Select the desired cell and click on the icon on the toolbar: When you add conditions, by default there will be a check for zero. That is what we need. We only select display options. In our case, we remove the flag visible: Therefore, these non-ingenious operations, we have realized a hidden zero-data cells. But that doesn't solve all the problems. Our task is to hide the title of the entire column if no value is greater than zero. The gap in this column will check the output of each page. To check that there is no data on the page in a given column, we'll use the “result”. This result is summed up by a given column and summarizes all the values in it. If the total is zero, then there is not a single value in the column more than zero, and you need to hide the column's header. So. Let's add the result: The result put in the band "Page Footer": The result can then be hidden using the “visible” property. Now let's set the logic to hide the headline of the last column. Instead of the RUB text, we introduce the expression: [IIf([Total]!=0,Text14.Text = "RUB",Text14.Text = "")] However, that is not all. Since the result is formed after the title and data are displayed on the page, at the time of execution of expression that we have introduced above, total value is not relevant. Therefore, we need to use the deferred expression calculation option in the column header and double pass on the report. Choose a text box with the RUB column header. In the properties of the text field we find ProcessAt and change to PageFinished: After this we need to open report properties and install “Doublepass” option: This option allows you to build a report twice. In the first construction will be calculated all the results, and in the second one these results can be used in the headlines. All this is necessary, because the report is built elementally consistently. That is, when building the next element, you will not be able to change the previous one. Therefore, you need a re-build that takes into account the results of the next elements. Let's see how our report works in terms of when all the data in the RUB column is 0: On some pages the data can appear so the column will appear as well: This way we can dynamically display or hide the columns according to the data in them. Tags: .NET, .NET, FastReport, FastReport ### How to hide toolbar in web-reports URL: https://www.fast-report.com/blogs/hide-toolbar-web-reports By default, web - reports have the toolbar above them in case to control the report display: In the object properties of “WebReport” you can control this toolbar, add and remove elements, change the layout and style. For example, to display the toolbar at the bottom of the report window, use the “ShowBottomToolbar” property. If you want to hide the toolbar use the “ShowToolbar” property. You can also remove the rest of the elements of control: buttons of moving through the report pages, export and printing. There are two panel styles (ToolbarStyle) - Large and Small. It is also possible to choose from five sets of icons. And, of course, you can choose any color for the toolbar background. For  example  : If you do not like the standard panel, you can make your own one. Let us place the component “Panel” under “WebReport1”. Add a button to the panel: Сall the button “Show / Hide toolbar”. Double-click the button. The button will hide or show the toolbar, so the click event code will be following: ``` WebReport1.ShowToolbar = false; ```  The result of the button clicking: Now add other buttons that will have some functions of the toolbar buttons: For the button “Prev.” add the code: ``` WebReport1.PrevPage(); ``` For the button “Next” - similarly: ``` WebReport1.NextPage(); ``` And for export to PDF: ``` WebReport1.ExportPdf(); ``` Check the added buttons. Report pages are switched: By clicking on “ExportPDF” the save file dialog box appears. The article provides support for creating a custom toolbar similar to the existing one. The toolbar will not be attached to the window of the report and it can be designed according to your taste. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport, Designer, Designer, Customization, Customization ### How to hide unnecessary items in the Web Report toolbar URL: https://www.fast-report.com/blogs/hiding-items-from-webreport-toolbar Summary: The article describes how to hide any toolbar items for FastReport .Net WebReport The article describes how to hide any toolbar items for FastReport .Net WebReport The article describes how to hide any toolbar items for FastReport .Net WebReport Most advanced report generators let us generate reports for web applications. When displaying reports to users, consider the ability to navigate on their web pages, send to print, export to any format, and other functions. This is usually a special toolbar in the report output window. Quite often, the question on the forums reporting tools developers is “how to remove the toolbar from unwanted items, or how to disable printing the report”. And the truth is not always the toolbar appears appropriate, report such a panel can not fit into the web application design. Although it is possible to customize the icons on the panel, and even its color, still would like to be able to hide it at all, or remove unnecessary controls for a cleaner look. Let's see how to hide the controls or the entire toolbar entirely in FastReport.Net. So, web FastReport.Net report object has a toolbar on top of which we spoke above. Creating a report in a Web application, you just need to adjust some of its properties. Consider the properties that are responsible for the appearance of the toolbar: ``` WebReport report = new WebReport(); report.Width = 800; report.Height = 800; report.Report.Load(Server.MapPath("App_Data/Master-Detail.frx")); report.ShowPrevButton = false; //Hide previous page button report.ShowNextButton = false; // Hide next page button report.ShowBottomToolbar = true; //Show the toolbar at the bottom report.ShowFirstButton = false; //Hide first page button report.ShowLastButton = false; // Hide last page button report.ShowExports = false; //Hide export display button report.ShowMhtExport = false; //Hide export to MHT report.ShowOdsExport = false; // Hide export to ODS report.ShowOdtExport = false; // Hide export to ODT report.ShowPdfExport = false; // Hide export to PDF report.ShowPowerPoint2007Export = false; // Hide export to PwerPoint report.ShowRtfExport = false; // Hide export to RTF report.ShowTextExport = false; // Hide export to Text report.ShowWord2007Export = false; // Hide export to Wors=d report.ShowXmlExcelExport = false; //С Hide export to Excel report.ShowXpsExport = false; // Hide export to XPS report.ShowDbfExport = false; // Hide export to DBF report.ShowCsvExport = false; // Hide export to CSV report.ShowOutline = false; //Hide report plan display report.ShowPageNumber = false; //Hide the current number of the page report.ToolbarBackgroundStyle = ToolbarBackgroundStyle.Dark; //Select the theme of toolbar report.ToolbarColor = Color.Aqua; //Select colour of toolbar report.ToolbarIconsStyle = ToolbarIconsStyle.Blue; //Hide export to format from the toolbar report.ShowRefreshButton = false; //Hide the report update button report.ShowZoomButton = false; //Hide the scaling button report.ShowToolbar = false; //Hide the toolbar report.ShowPrint = false; //Hide print button ```  As you can see, the number of settings is quite large. It is possible to customize the appearance of the panel - customize the color, panel style and icons. For example, the background style of the Medium panel, and the icons - Red: Separately, it is worth noting that it is possible to exclude certain types of exports of the report from the list. But if you don't need an export in principle, you can just remove the button. For example, if you remove all the buttons from the panel except print, it will look like this: For those who are not happy with the toolbar at the top, there is an option of displaying it in the bottom (ShowBottomToolbar = true): And those who do not need toolbar at all, there is an option to entirely hide it: Thus, using the selection of necessary properties you can easily customise your toolbar according to your personal needs. Tags: .NET, .NET, FastReport, FastReport, WebReport, WebReport, Toolbar, Toolbar ### How to highlight data by condition in FastReport .NET URL: https://www.fast-report.com/blogs/highlighting-data-condition-fastreport-net There are times when you need to highlight some of the data when analyzing tables. Usually, when we review a paper version of the document, we highlight a data using a marker. But why not do it at once, during the formation of the table? FastReport .NET allows you to highlight the data depending on the specified conditions. A striking example of the use of conditional highlighting - the statistical data in the summary tables (matrices). Let's create a matrix report. We use the data from the database nwind.xml, which is used in the demo reports of FastReport .NET. Use the table MatrixDemo. The result here is a simple template: If you run the report, we can see the dry statistics on the profitability of the company, brought by employees for months. But let's say we want to highlight cells with a yield of more than 3000r per month. Select the cell [Revenue]. On the toolbar, click the icon: In the next window you can set conditions for the highlighting and style of text or background. Add Condition Value> 3000. Color can be a gradient or "glass". You can add any number of conditions for the same object. Add another one: Value> 1000. Since we have two conditions, it is necessary to take into account their order. If you move up the second condition, the cell with a value > 1000 will be yellow, as well as the value > 3000. This will happen because FastReport .NET handles the conditions in the order. Since the condition Value> 1000 covers the values > 3000, the second condition would not apply. Keep this in mind when using multiple conditions for a single object. Now let's see the result of our efforts: If you want to highlight the columns Total, will have to add the same conditions for the cells in this column. So, by simple manipulations we get a summary table that does not require further analysis with marker in hand. Tags: .NET, .NET, FastReport, FastReport ### How to host FastReport ASP .NET Core application in IIS Windows Server 2012 URL: https://www.fast-report.com/blogs/hosting-app-in-windows-server-2012 Summary: Launching our web application on IIS (Internet Information Services) under server operating systems with a Windows kernel. Launching our web application on IIS (Internet Information Services) under server operating systems with a Windows kernel. Launching our web application on IIS (Internet Information Services) under server operating systems with a Windows kernel. To host the created applications on Internet servers, you need a web server. Today we will launch our web application on IIS (Internet Information Services). It is a web server for hosting sites on the Internet. It is more often used to host web servers under server operating systems with a Windows kernel. First, we will create the application on ASP .NET Core with the FastReport.Web  library or simply use the FastReport.Core.Web21.MVC demo project from the  FastReport application .NET Trial   which is located in the path: ``` "FastReports\FastReport.Net Trial\Demos\Core\FastReport.Core.Web21.MVC" ``` We open the project through Visual Studio, build it and run it to make sure everything works: As you can see, the project works properly. Let's prepare it for publication on iis! We launch "Solution Explorer" and right-click on the project, find "Publish...". At this stage, select the local storage "\bin\Release\Debug", then click publish. A little patience and ta da, the project is ready to be published on IIS. Now let's go to Windows Server 2012 itself. The path is something like this:  Server Manager ->  Local Server -> Roles and Features -> Tasks -> Add Roles and Features. Then a window pops up in which we click Next up to Server Roles. We carefully find the Web Server (IIS) and install it. Now we need to install dotnet hosting  from the official site .  Follow step-by-step instructions. Step 1. Select the required .NET version. Step 2. Find ASP.NET Core Runtime and click on Hosting Bundle. Just download and install - it seems pretty straightforward. Step 3. After installation, go to the console and restart IIS using the command: ``` "iisreset" ``` Congratulations, IIS is now fully ready to work with ASP .NET Core! After all these manipulations, go to the C:\inetpub\wwwroot directory on Windows Server 2012. Create a folder with any name inside. Let's say it will be "coretest". Now we add the project files to this folder. Open IIS Manager using Server Manager, as shown in the picture. After opening IIS Manager, you will need to add a new website. Right click on “Sites” and then click on “Add Website”. A window should appear where you will need to specify the name, port (if the default port is busy) and the path to the project: That's it, we created the website. To view it, just right-click on the created website, then click on Manage Website, and then on Browse. Then your project will open in the browser: Let’s sum up. Running your project on Windows Server 2012 is neither scary nor difficult. If you have any questions, contact our support. Tags: .NET, .NET, Visual Studio, Visual Studio, FastReport, FastReport, ASP.NET, ASP.NET, Core, Core, Web API, Web API, Windows, Windows ### How to import a report from StimulSoft into FastReport .NET URL: https://www.fast-report.com/blogs/import-report-stimulsoft-dotnet Summary: In FastReport .NET has added a plugin for importing reports from StimulSoft, which automatically converts your documents to .frx format. In FastReport .NET has added a plugin for importing reports from StimulSoft, which automatically converts your documents to .frx format. In FastReport .NET has added a plugin for importing reports from StimulSoft, which automatically converts your documents to .frx format. Import of StimulSoft reports is now available with the 2022.2.13 release. To use it, go to the “File” menu in the FastReport .NET designer, FastReport CoreWin and FastReport Mono and click on the “Open ...” item. Select the filter "StimulSoft files (*.mrt)" in the window that appears. The uploaded file will be automatically converted into a FastReport report and opened in the designer. The resulting imported report may differ. Most likely, you should finalize it by adding connections and changing functions with variables in text objects. StimulSoft report code cannot be converted to work properly for FastReport reports due to technical features of the product. Thus, the program code will be converted into a comment. Also, StimulSoft reports may contain implementation objects that are not supported by the FastReport designer. These objects will not be exported or will be replaced by others in the way that the generated report is as similar as possible to the one created in StimulSoft. It is important to note that cross-bands are imported by moving their contents to the parent band. StimulSoft. Otherwise, the locations, sizes and types of objects with some properties will match those in the StimulSoft report. Comparative table of StimulSoft and FastReport reports: Possibility FastReport StimulSoft Report objects   Text + +   Figure + +   Image + +   SVG + +   Subreport + +   Service text + +   Diagram + +   Barcode + +   2D barcode + +   Map + +   Postcode + +   Text in cells + +   Rich Text + +   Gradient + +   Cross-tab (Matrix) + +   AdvMatrix + -   Table + +   Container + -   Indicator + +   Checkbox + +   Sparkline + +   HTML + +   Digital signature + +   Clone - +   Mathematical formulas - + Report Features   Dialogue Forms + +   Report Inheritance + +   Master-detail-subdetail + +   Drill-downs + +   Grouping + +   Sorting + +   Headers and footers + +   URLs аnd hrefs + +   HTML tags in text objects + +   Dimensionless Pages + +   Preview Component + +   Report designer in development environment + +   Report designer in the executable program + +   High DPI support + +   Visual SQL Query Builder + -   Interface languages 39 38 A report imported from StimulSoft to FastReport Original report built in trial version of StimulSoft: The result with some modifications: You can notice one difference in these examples — there is no band that closes the footer of the table in the imported report. This is explained by different implementation of the data footer (DataFooterBand). Let’s look at another report that contains Code 39, Code 39 Extended, Code 93, Code 93 Extended, UPC-Sup2, UPC-Sup5 barcodes. You can see the result of converting to the FastReport designer in the following screenshot: This import feature will enable FastReport users to very quickly convert a report from StimulSoft and as accurately as possible. This will save labor effort for converting and building familiar reports in the FastReport designer. Please contact our support  for all questions related to importing. Tags: .NET, Mono, Export, FastReport, Core, Barcode, Report, Converter ### How to insert a report into the body of a email URL: https://www.fast-report.com/blogs/report-email-body Summary: The article describes how to insert report in text format to email body The article describes how to insert report in text format to email body The article describes how to insert report in text format to email body By default, FastReport.Net allows you to send e-mails with an attached report file in one of the available export formats. However, it is sometimes necessary to include the report content in the body of the email. This feature may be useful if you intend to discuss the report content in correspondence. Responses to an email with an attached report file will no longer have that file. Therefore, you will need to take the time to find an email with an attachment in order to view the report and understand what it is about. It can also be useful if you are viewing mail on a mobile device. Downloading a report file and opening it in another application is not very convenient. In FastReport.Net we can send emails from the code of a user application, which means that we can set up the settings for emails. Unfortunately, an e-mail message can contain only plain text, without pictures and html markup. Therefore, we can use exporting the report to the txt format to insert it into the body of the message. Of course, the txt export format imposes many limitations - complete absence of graphics, interactive objects and complex markup - only text. Therefore, it should be used only in simple reports with clear data hierarchy and simple markup. The ideal example - simple lists. Let's consider an example of sending a email with a report in the message: ``` //Create export to txt format FastReport.Export.Text.TextExport text = new FastReport.Export.Text.TextExport();   //Execute export to the file or stream report.Export(text, "Template.txt");   //Create export to email FastReport.Export.Email.EmailExport email = new FastReport.Export.Email.EmailExport();   //Set email subject email.Subject = "Test";   //Set message body – reply in text format email.MessageBody = File.ReadAllText("Template2.txt");   //Set recipient address email.Address = "gromozeka@gmail.com";   //Set sender address email.Account.Address = "gromozeka@yandex.ru";   //Set email host email.Account.Host = "smtp.yandex.ru";   //Set recipient name email.Account.Name = "gromozeka";   //Set username email.Account.UserName = "gromozeka";   //Set user password email.Account.Password = "******";   //Set email server port email.Account.Port = 25;   //Enable encryption if needed email.Account.EnableSSL = true;   //Send email email.SendEmail(report); ```   The mechanism of sending emails to FR.Net implies sending an email with an attached report, so a report template will be attached by default if you have not specified a certain export format for the attached file. Now let's see what we get in the e-mail. But first, take a look at the original report:  There's beautiful frames, gradient headlines and pictures. There's not gonna be any of that in the text view of the report. This is what the email with the report in the message looks like: The report is quite recognizable. If it is not important for you to show the appearance of the report, but only to deliver the information, then this method of sending the report in the body of the message will be quite suitable. Tags: .NET, .NET, FastReport, FastReport, Email, Email ### How to install and use FastReport FMX 2.8 for FmxLinux URL: https://www.fast-report.com/blogs/install-fmx-linux Summary: How to install and use FastReport FMX 2.8 for FmxLinux. Quick start guide. How to install and use FastReport FMX 2.8 for FmxLinux. Quick start guide. How to install and use FastReport FMX 2.8 for FmxLinux. Quick start guide. Recently we've released  FastReport FMX 2.8  which includes support of  FMXLinux  framework. In this article I'd like to describe installation process and requirements based on trial version of  FastReport FMX 2.8 ,  Embarcadero RAD Studio 10.4.1 ,  FmxLinux 1.52  from  GetIT  package manager and  Ubuntu 20.04.1 . We won't go deep inside installation and compilation process for Linux under RAD Studio. There are already good articles on Embarcadero website about it:  Linux Application Development  and  FireMonkey for Linux . Here is a short check-list of steps which should be made before installation of FastReport FMX 2.8 (If you have already made a setup of RAD Studio IDE and compiler for Linux and FmxLinux application compiles successfully, just skip these steps):  Install Linux distribution or use installed one (This article based on  Ubuntu 20.04.1  distribution ); Install dev packages of gcc and curl. Embarcadero recommends do it through : ``` sudo apt install joe wget p7zip-full curl openssh-server build-essential zlib1g-dev libcurl4-gnutls-dev libncurses5 ``` In this case dev package of 7zip installs all dependencies includes gcc (binary files of trial version FastReport FMX 2.8 builds with gcc 9 !); Install dev packages of zlib. For Ubuntu it should be: ``` sudo apt-get install zlib1g-dev ``` Install x11, gtk3 dependencies packages through: ``` sudo apt install libgl1-mesa-glx libglu1-mesa libgtk-3-common libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 ``` I made a clean installation on new virtual machine and join all installation commands to one:  ``` sudo apt install joe wget p7zip-full curl openssh-server build-essential zlib1g-dev libcurl4-gnutls-dev libncurses5 zlib1g-dev libgl1-mesa-glx libglu1-mesa libgtk-3-common libgstreamer1.0-0 libgstreamer-plugins-base1.0-0 ```  Install PAServer(check  Linux Application Development );  Install FmxLinux through GetIt package manager ( Tools > GetIt Package Manager ); Connect to Linux machine and download SDK. Installation of FastReport FMX 2.8 for FmxLinux is the same as for the usual FastReport FMX 2 installation. It needs to download installation, for example trial version from here and close developer environment. All paths for compiler installation add automatically. That's it. FastReport FMX 2.8 is ready to be used!  Now we can check how FastReport FMX works on Linux. Let's run IDE(in my case Embarcadero RAD Studio 10.4.1) and open a demo example with reports. The Main demo example can be found in installation folder of FastReport FMX 2 by default in  C:\Program Files (x86)\FastReport FMX 2 Trial\Demos\Main . Open the project and select platform. Before running the demo application we need to check that all files required for the demo application will be sent via PAServer ( Project>Deployment ). In my case one checkbox in front of MIDAS library is missing. Just make sure it's selected for the used platform. It's time to compile and run the demo application. Now we can select a report and run the report designer. Build a report and show it in the preview window. And, of course, we can make an export to available formats. Just like for other platforms it's possible to use recompile utility for language change and recompilation of binary files. It's necessary to select path to FmxLinux libraries (by default C:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\FmxLinux-1.52\lib\Release for Embarcadero RAD Studio 10.4.1), compiler version, gcc version, and FastReport version. It's important to notice that recompile uses SDK paths from IDE Registry, that's why Linux SDK should be already properly set from RAD Studio before start to use recompile. Let's change a language. Compile and run the demo application again. Language was changed. As we can see, installing and using FastReport FMX 2.8 for FmxLinux is quite simple. Tags: FMX, FastReport, Linux, Install, Delphi, Ubuntu ### How to install FastReport .NET and its components on Windows URL: https://www.fast-report.com/blogs/install-net-windows Summary: Step-by-step instructions for online and manual installation via the FastReport registration code.NET and its components in Windows. Step-by-step instructions for online and manual installation via the FastReport registration code.NET and its components in Windows. Step-by-step instructions for online and manual installation via the FastReport registration code.NET and its components in Windows. To install the FastReport.NET software and its components, you need to download the installer distribution in the cpanel  and run it. When using an operating system with UAC (User Account Control), you need to agree to run the software. After launching the installer, a welcome window with an authorization button will appear. Click on the authorization button. In the system, the default web browser application will open. Use the login and password of your account to authenticate and access the purchased products. After authorization, a message about successful authorization will be displayed. You can close the web browser application and switch to the FastReport .NET installer. If you were unable to log in, please contact technical support . In the next step, familiarize yourself with the license agreement for the use of FastReport .NET software. The current version of the license agreement is available at this link. If you agree to the terms of the license agreement, you need to check the "I accept the terms of the license agreement" checkbox. Then, press the active "Next" button. If you do not agree with the terms of the license agreement, close the FastReport .NET installer and delete the downloaded files. In the next installation stage, we invite you to join the FastReports Inc. service quality and notification improvement program. This will help our company improve the quality of products, overall reliability, and the performance of all tools and libraries. This step is optional, you don't have to join our program. Select "Yes" or "No" depending on your decision, and then continue the software installation. When you join the Service Quality and Notification Improvement Program, your computer or device automatically transmits information about the use of FastReports Inc. products and software development technologies to FastReports Inc. For more information on the privacy policy, please refer to this link. Select the product you need in the installer window. The messages "Unavailable", "An old version of the product has been detected" mean that an old version of the product is installed by an old installer. If you want to update the old version, close the installer, uninstall the old version using the standard "Add/Remove Programs" tool, and then start the installation of the new version again. If you see this message after removing all old versions, please contact our technical support. Also, at this stage, you can select: Product version; Sources—Installation of source codes; Examples—Report templates; Framework—Installation of local .dll files. Then, you can select the path where the FastReport .NET software will be installed. Now everything is ready for the installation, click "Next" to start the installation process. This may take some time, depending on the selected components and the speed of your internet connection. At this stage, you can monitor the progress of the installation. The completion dialog will be shown after the installation of all selected components. To close the installer, click the "Finish" button. Offline installation In rare cases, the ability to perform an offline installation is necessary to install the "FastReport.NET" software on computers without direct access to the Internet. Our installer allows you to do such an installation with remote activation. First, you will need data packages, so it is recommended to do a preliminary installation on a computer with Internet access. After the installation, go to the installation directory and copy all .dat files and the setup.exe file to a temporary medium. Connect the temporary medium to the computer without Internet access and start the installation. If you are unable to authenticate through the Internet, the following dialog will be available to you. Check the "Use manual registration" checkbox. After that, copy the key from the "Registration information" field and send it to the technical support service with a request for activation. Insert the response from the technical support service into the "Registration code" field and click "Next". The subsequent installation process will be similar to the standard installation of the "FastReport.NET Components" software. Now that the installation of FastReport .NET and its components in Windows is complete, you are ready to start using this powerful tool to create high-quality reports in .NET applications. Remember that FastReport .NET provides extensive reporting customization and generation capabilities, making it indispensable for developers. Use all of its features, experiment, and create reports that reflect your needs and requirements. Wishing you success in your work with FastReport .NET! Tags: .NET, FastReport, Install, NuGet, Windows ### How to install FastReport .NET Trial URL: https://www.fast-report.com/blogs/installation-fastreport-net-trial This article is outdated. Updated information is available at the following link. You can download the trial version of FastReport .NET from the developer site www.fast-report.com . Run the installation file FRNetDemo.msi with administrator rights. You will see a window with installation steps. Click Next to start the installation. The next window offers to read the terms of the license agreement. If you agree with the terms of the license, check the box "I accept the license agreement." If you do not check the box, you can not continue with the installation. In the next step, select the type of installation: Complete Setup - installs all program components; Minimum Setup - will install a minimum set of components to save space on the disk; Personalized Setup - will be installed components are selected manually. By default, the first type of installation is chosen. Choose desired one and click the Next button. If you have chosen the type of installation Personalized Setup, it displays the Select Features window: Here are all the features of the package. If you want to exclude some of them, then right-click on the desired. In the context menu, choose the last option. Following options of a feature installation are avaliable: Will be installed on local hard drive; Entire feature will be installed on local hard drive; Entire feature will be unavailable. In the first case, the feature will be installed on local drive. If the feature contains several components, you can select your desired one. The second option assumes that all the feature components are selected. In the third case, we exclude from the installation the selected feature. Click the Next button. Go to the window select the installation path: Defining the installation folder. By default, program components are installed in the Program Files directory (for Windows x86) or Program Files (x86) (for Windows x64). Click the Next button. Further, we are invited to enter a name for FastReport.Net folder in the Start menu. Also, here you can set the option of adding a shortcut to all local users of the computer or only for the current. Click Next. Preparing to install complete. Run the installation program. If you decide to change one of the previous steps, use the Back button to return to the desired window. Click Next. Installation of FastReport.Net Trial starts. When the installation is complete you will see the following window: You can start the installed program immediately after clicking on the Finish button. If not required, uncheck the "Run FastReport.Net Trial has been installed successfully". Click the Finish button. demonstration program will be launched with a list of all available reports, which will help in the study of the product. The installation is completed. Tags: .NET, FastReport, Install ### How to install FastReport Business Graphics .NET URL: https://www.fast-report.com/blogs/installing-fastreport-business-graphics Summary: Instructions for installing FastReport Business Graphics .NET on to your computer, as well as adding Business Graphics components to Visual Studio. Instructions for installing FastReport Business Graphics .NET on to your computer, as well as adding Business Graphics components to Visual Studio. Instructions for installing FastReport Business Graphics .NET on to your computer, as well as adding Business Graphics components to Visual Studio. This article shows how to install  FastReport Business Graphics .NET  on your computer and how to add Business Graphics components in Visual Studio.  First, download the FastReport Business Graphics installer. You will find it in your user panel. Agree to the terms of the license agreement and enter your serial number, then choose the installation location. After this, FR Business Graphics will be installed successfully. Today FastReport Business Graphics supports .NET Framework 4.x, but we plan to add support for other frameworks in the future. Let’s look at how you can add Business Graphics components to your application. Let’s create a new WinForms application. Create a new tab in the toolbox, and click on “Choose items…” in its context menu: In the menu, click on “Browse…” and select the FastReportBG.dll file in the installation folder: After that, FastReport Business Graphics components will appear in the list of components. Select all elements related to FastReport Business Graphics and click “Ok”. After that, all the necessary elements will be added to the component panel, and you will be able to add them to the form.  In addition, add FastReportBG.dll to the list of dependencies. If you purchased the FastReport Business Graphics edition with the source code, it will be located in the FastReport.BG installation folder, and to build it you need to open the FastReport.BG.csproj project. At this stage, you have completed all the steps required to start working with FastReport Business Graphics. Enjoy! Tags: .NET, .NET, Visual Studio, Visual Studio, FastReport, FastReport, Install, Install, Business Graphics, Business Graphics ### How to install FastReport Desktop URL: https://www.fast-report.com/blogs/installing-fastreport-desktop Summary: The article describes how to install FastReport Desktop product The article describes how to install FastReport Desktop product The article describes how to install FastReport Desktop product This product is designed for generating reports by database administrators, as well as exporting them to the popular electronic document format and sending them to print, uploading to cloud storages or sending by e-mail. Run the msi extension installer downloaded from the developer’s website. The FastReport for DBA InstallAware Wizard displays a welcome window. Click Next to continue the installation: The next step prompts you to read the license agreement. Read it and (if agreed) check “I accept the terms of the license agreement”. Otherwise, you cannot continue the installation.  Click Next to continue the installation. The next InstallAware Wizard’s step prompts you to choose the type of the installation you want: There are three types of installation available: Complete – installation of a complete software package; Compact – installation with the minimum set of features; Custom – installation with the ability to choose the features that should be installed. For example, let’s choose the Custom installation type: The current version of the program does not have individual components that can be included or excluded from the installation. Therefore, just click the Next button to continue. At this step, you can specify the destination folder. “Program Files (x86)” is the default directory for installing the product. You will go to this installation step immediately after choosing Complete or Compact installation type. Click the Next button: Here you can change the name of the program folder if you did not do this in the previous step. Click Next to continue the installation. This is a preparatory step before actual installation. It allows you to go back and change the settings or cancel the installation. By clicking Next, you will start the installation: After the installation progress bar is full, you will see the completion window: This step only indicates the successful installation of the program. By clicking the Finish button, you will exit the InstallAware Wizard. Tags: FastReport, FastReport, Install, Install, Desktop, Desktop ### How to Install FastReport Desktop on Windows and Linux URL: https://www.fast-report.com/blogs/install-desktop-windows-linux Summary: In this article, we will outline the detailed steps for installing, configuring, and launching the FastReport Desktop installer, with examples for each platform. In this article, we will outline the detailed steps for installing, configuring, and launching the FastReport Desktop installer, with examples for each platform. FastReport Desktop allows users to work with reports and data in a convenient interface on their local computers running Windows or Linux. The application installation is supported on current versions of both operating systems. In this article, we will outline the detailed steps for installing, configuring, and launching the FastReport Desktop installer, with examples for each platform. FastReport Desktop allows users to work with reports and data in a convenient interface on their local computers running Windows or Linux. The application installation is supported on current versions of both operating systems. In this article, we will outline the detailed steps for installing, configuring, and launching the  FastReport Desktop installer, with examples for each platform. Online Installation of FastReport Desktop on Windows To install the FastReport Desktop software, you need to download the installer distribution from your personal account and run it. If you are using an operating system with UAC (User Account Control), you will need to agree to run the software. The default web browser application will open on the system. Use your account's login and password to authorize and access the purchased products. After authorization, a message indicating successful authorization will be displayed. You can close the web browser application and switch back to the FastReport Desktop installer. If you were unable to authorize, please contact  technical support . In the next step, review the license agreement for the use of the FastReport Desktop software. The current version of the license agreement is available at this link: https://www.fast-report.com/license/license-desktop If you agree to the terms of the license agreement, you must check the box "I accept the terms of the license agreement." After that, click on the active "Next" button. If you do not agree to the terms of the license agreement, close the FastReport Desktop installer and delete the downloaded files. At the next stage of the installation, we invite you to join the service quality improvement and notification program of Fast Reports Inc. This will help our company improve the quality of products, overall reliability, as well as the performance of all tools and libraries. This step is optional, and you are not required to join our program. Choose "Yes" or "No" depending on your decision, and then continue with the installation of the software product. When you join the "Quality Service Improvement and Notification Program," your computer or device automatically transmits information about the usage of products from Fast Reports Inc. and software development technologies to Fast Reports Inc. For more details about the personal data processing policy, please read  this link. Select the product you need in the installer window. Messages such as "Unavailable" or "Old Product Version Detected" indicate that an old version of the product is installed via an old installer. If you wish to upgrade the old version, close the installer, remove the old version using the standard "Add or Remove Programs" tools, and then start the installation of the new version from the beginning. If you encounter this message after removing all old versions, please contact technical support . In addition, at this stage, you can select the version of the product. Next, you can choose the path where the FastReport Desktop software will be installed. Everything is now ready for installation; click "Next" to start the installation process. This may take some time, depending on the selected components and the speed of your internet connection. At this stage, you can monitor the progress of the installation. The installation completion dialog will be displayed after all selected components have been installed. To close the installer, click the "Finish" button. Offline Installation of FastReport Desktop on Windows In rare cases, installing the "FastReport Desktop" software on computers without direct internet access requires the ability to perform an offline installation. Our installer allows for this type of installation with remote activation. First, you will need the data packages, so it is recommended to do a preliminary installation on a computer with internet access. After installation, navigate to the installation directory and copy all .dat files and the setup.exe file to a temporary storage device. Connect the temporary storage device to the computer without internet access and start the installation. If you are unable to authenticate via the internet, the following dialog will be available to you. Check the box "Use Manual Registration." Then, copy the key from the "Registration Information" field and send it to the technical support service with a request for activation. Paste the response from the technical support service into the "Registration Code" field and click "Next." The subsequent installation process will be similar to the standard "Installation of FastReport Desktop Components." Uninstalling FastReport Desktop Uninstallation is carried out using the standard Windows tools ("Apps - Installed Apps," select the desired application, and click "Uninstall"). Installation of FastReport Desktop on Linux To install the FastReport Desktop software, you need to download the installation package from your personal account. The following package options are available: deb and rpm, for x64 and arm64 architectures. Download the package option that is supported by your Linux distribution: deb (Ubuntu, Mint). rpm (RedHat, CentOS, SUSE, Fedora). Launch the installation of the package (please note that an administrator password is required for installation):  by double-clicking on the downloaded file (if the window manager supports this); or from the terminal by executing the installation command (which depends on the package manager used in your distribution). Below are examples of installation commands for various types of distributions: Ubuntu, Mint: sudo apt install ./fastreport-desktop-professional_ru-2026.1.0-x64.deb Fedora: sudo dnf install ./fastreport-desktop-professional_ru-2026.1.0-x64.rpm After installing the package, an application called "FastReport Desktop Install/Uninstall" will be added to the applications menu. The exact location depends on the window manager used in your distribution: Ubuntu, Fedora: in the general application list; RedHat: in the applications menu under the "Other" category. Launch it to complete the installation. In the first step, select the action type—"Install components" and click "Next": In the second step, select the necessary components and click "Finish": Uninstalling FastReport Desktop on Linux To uninstall the installed application, use the "FastReport Desktop Install/Uninstall" program. In the first step, select the action type—"Uninstall components/program" and click "Next." In the second step, select the necessary components, check the "Uninstall program" box, and click "Finish." The system will prompt for the administrator password and will uninstall the installed package. Manual Uninstallation of FastReport Desktop on Linux The package name for FastReport Desktop is  `fastreport-desktop` . To uninstall the package, use the package manager specific to your Linux distribution. Below are examples of commands for uninstalling the package in different Linux distributions: Ubuntu, Mint: sudo apt remove fastreport-desktop Fedora: sudo dnf remove fastreport-desktop Removing User Files on Linux FastReport Desktop uses the following locations to store user files. You can clear them if necessary. Configuration files folder: ~/.local/share/FastReport Folder for reports, tasks, schedules, and logs: ~/FastReport Conclusion Now that you've wrapped up the installation of FastReport Desktop, you're all set to dive into this powerful tool for crafting top-notch reports. Keep in mind that FastReport Desktop provides a wealth of customization options and report generation features, making it a must-have for users. So, explore all its capabilities, get creative, and design reports that meet your needs. Tags: FastReport, Linux, Install, Desktop, Windows ### How to install FastReport for DBA URL: https://www.fast-report.com/blogs/installing-fastreport-for-dba Summary: The article describes how to install FastReport for DBA. The article describes how to install FastReport for DBA. The article describes how to install FastReport for DBA. This product is designed for generating reports by database administrators, as well as exporting them to the popular electronic document format and sending them to print, uploading to cloud storages or sending by e-mail. Run the msi extension installer downloaded from the developer’s website. The FastReport for DBA InstallAware Wizard displays a welcome window. Click Next to continue the installation: The next step prompts you to read the license agreement. Read it and (if agreed) check “I accept the terms of the license agreement”. Otherwise, you cannot continue the installation.   Click Next to continue the installation. The next InstallAware Wizard’s step prompts you to choose the type of the installation you want: There are three types of installation available: Complete – installation of a complete software package; Compact – installation with the minimum set of features; Custom – installation with the ability to choose the features that should be installed. For example, let’s choose the Custom installation type: The current version of the program does not have individual components that can be included or excluded from the installation. Therefore, just click the Next button to continue. At this step, you can specify the destination folder. “Program Files (x86)” is the default directory for installing the product. You will go to this installation step immediately after choosing Complete or Compact installation type. Click the Next button: This is a preparatory step before actual installation. It allows you to go back and change the settings or cancel the installation. By clicking Next, you will start the installation: After the installation progress bar is full, you will see the completion window: This step only indicates the successful installation of the program. By clicking the Finish button, you will exit the InstallAware Wizard. Tags: .NET, .NET, FastReport, FastReport, Install, Install, DBA, DBA ### How to Install the FastReport .NET Report Designer with Pre-installed Plugins URL: https://www.fast-report.com/blogs/designer-net-with-plugins Summary: Read the article as from version 2025.2.5 for FastReport .NET WinForms and FastReport .NET WEB allows you to install a report designer with all plugins without building dll files. Read the article as from version 2025.2.5 for FastReport .NET WinForms and FastReport .NET WEB allows you to install a report designer with all plugins without building dll files. The FastReport .NET designer is an excellent tool for creating report templates. Various databases and file types can be used as data sources. By default, the standard designer includes data sources from: XML, CSV, JSON, MS Access, OLE DB, ODBC, and MS SQL. Also, in the report designer, you can connect to Postgres, MySQL, Firebird, MongoDB, Oracle, SQLite, Couchbase, RavenDB, Excel, and ClickHouse through separate plugins. The FastReport .NET designer is an excellent tool for creating report templates. Various databases and file types can be used as data sources. By default, the standard designer includes data sources from: XML, CSV, JSON, MS Access, OLE DB, ODBC, and MS SQL. Also, in the report designer, you can connect to Postgres, MySQL, Firebird, MongoDB, Oracle, SQLite, Couchbase, RavenDB, Excel, and ClickHouse through separate plugins. However, installing these plugins can be complicated. For each connection type, you need to download the project, assemble it, and configure it in the designer or your project. For programmers, this is a simple task—it is enough to connect a NuGet package. But even here, they may have problems. For ordinary users without programming experience, the process becomes more complex. First, you need to install Visual Studio, if it is not already installed. Then download the plugin project, open it in Visual Studio, fix the links, and possibly install additional libraries. After assembling the plugin, you will get a dll file. Next, you need to launch the FastReport .NET designer, go to the settings, add the dll file on the plugins tab, and restart the designer. Despite detailed instructions, errors may occur at any stage, requiring time and effort to resolve them. Install immediately with plugins We have simplified the lives of users by saving them from installing plugins themselves. Now, starting with version 2025.2.5, the WinForms and Web delivery options for FastReport .NET can be installed with all plugins or only with standard connections, as before. If desired, you can install both versions, but this does not make much sense. When installing FastReport .NET WinForms , at the “.NET Setup” stage, you can select the “WinForms” and “WinForms with Plugins” options. Similarly, when installing FastReport .NET WEB , you can select the “Web” and “Web with Plugins” options. When installing the “WinForms with Plugins” and “Web with Plugins” options, you will receive all the necessary files for their operation, including pre-installed plugins for connecting to databases. Shortcuts will appear in the “Start” menu: FastReport Demo New with Plugins,  FastReport Demo with Plugins,  FastReport Designer with Plugins,  FastReport Localizer with Plugins, FastReport Viewer with Plugins. If you select the “WinForms” and “Web” versions, only the basic files will be installed without additional plugins. Shortcuts will appear in the “Start” menu: FastReport Demo New, FastReport Demo, FastReport Designer, FastReport Localizer, and FastReport Viewer. This option was installed by default previously. Conslusion FastReport .NET is a powerful tool for creating report templates that supports many data sources. However, installing additional plugins to connect to various databases and file types can be difficult for users without programming experience. With the release of version 2025.2.5, using the template designer has become much easier. You can focus on creating reports without spending time on technical configuration and connecting plugins separately. If you have any problems using FastReport .NET, please contact our support team . We are always ready to help and provide the necessary solutions.     Tags: .NET, FastReport, Install, Data Source, Designer, Plugin ### How to localize report in FastReport .NET URL: https://www.fast-report.com/blogs/localize-report-fastreport-net One of the non-trivial task that can be given to a developer is the report localization. In other words - creation of multilingual reports. What does it mean? For different languages the same report template is applied. Language header and data can be specified by user or a program. Such reports are in demand in global market companies. Besides that, automation of template translation into different languages will facilitate further support of complex reports and eliminate the need to store templates for each language. Report localization would be easy for programmers using FastReport .NET reporting tool. So, what are the ways to solve this problem? 1. The user application transfers headers or data for the report in the desired language by parameters; 2. All of the fields that need to be localized are added to the database. Each row in the table will contain the data in a particular language. The report uses fields of the table in headers that need to be localized.  All that's left to do is to choose the desired language. Both ways have their advantages and disadvantages. In the first case, with increasing amounts of data that needs to be localizes, the amount of code in the user application is increasing as well. But instead it does not require creating of a separate database or tables in an existing one. Such method is more suitable for a small amount of localized data. In the second case, all the data is stored in the database and not in user application's code. The table from the database is convenient to scale and add new data. But it's necessary to create a separate table, connection to it and a certain amount of code in the report script. Such method is better for large volumes of localized data. Let's look at the two suggested ways in practice: Creating a report. In order to do this, you first need to create a Windows Forms Application application. Now add to the form the component Report from the FastReport .NET tab. 3. Double-click on the added component report1. Close the form of the data source. The report designer is run. 4. Invoice type of report has been selected to demonstrate localization. Here we need to localize all the titles and labels. Customer and product data will be taken from the sample database (nwind.xml), which comes with FastReport .NET. 5. Create the connection to the data nwind.xml. And choose the 4 tables: Orders, Order Detail, Customers, Products. 6. In order to demonstrate the first method of localization, we need to create a number of report parameters. Each header or label in the report should be replaced with the appropriate parameters: As you can see from the figure, all the headers presented by the report parameters. Parameters can be set to the default in case you do not want to pass some of them. For this purpose use the property Expression of the parameter. Text value is given in double quotes. For example, setting pOurCompany default "Fast Reports Inc." 7. For demonstration of the second method, we need a table that contains the same fields as in the report parameters and the data in the three languages. We use, for example, a Microsoft Access database. Field name Data type Id Counter pInvoice Text pOurCompany Text pOurCompanyAddress Text pOurCompanyPhone Text pCustomerId Text pCustomerCompany Text pCustomerName Text pCustomerAddress Text pCustomerPostalCode Text pCustomerPhone Text pCustomerFax Text pCurrency Text pProductName Text pQuantity Text pUnitPrice Text pAmount Text pTotal Text pSignature Text pName Text pDate Text pLang Text pAgree Text And fill the table: 8. Add another data source in the report. Select created in the Access database. 9. Now, in the report script you should assign the values from the Localization table fields to the report parameters. Create StartReport event: ``` private void _StartReport(object sender, EventArgs e) { string lang =(string)Report.GetParameterValue("pLang"); DataSourceBase ds=Report.GetDataSource("Localization"); ds.Init(); while (ds.HasMoreRows) { string val=(string)Report.GetColumnValue("Localization.pLang"); if (val==lang) { Report.SetParameterValue("pInvoice", (string)Report.GetColumnValue("Localization.pInvoice")); Report.SetParameterValue("pOurCompany", (string)Report.GetColumnValue("Localization.pOurCompany")); Report.SetParameterValue("pOurCompanyAddress", (string)Report.GetColumnValue("Localization.pOurCompanyAddress")); Report.SetParameterValue("pOurCompanyPhone", (string)Report.GetColumnValue("Localization.pOurCompanyPhone")); Report.SetParameterValue("pCustomerId", (string)Report.GetColumnValue("Localization.pCustomerId")); Report.SetParameterValue("pCustomerCompany", (string)Report.GetColumnValue("Localization.pCustomerCompany")); Report.SetParameterValue("pCustomerName", (string)Report.GetColumnValue("Localization.pCustomerName")); Report.SetParameterValue("pCustomerAddress", (string)Report.GetColumnValue("Localization.pCustomerAddress")); Report.SetParameterValue("pCustomerPostalCode", (string)Report.GetColumnValue("Localization.pCustomerPostalCode")); Report.SetParameterValue("pCustomerPhone", (string)Report.GetColumnValue("Localization.pCustomerPhone")); Report.SetParameterValue("pCustomerFax", (string)Report.GetColumnValue("Localization.pCustomerFax")); Report.SetParameterValue("pCurrency", (string)Report.GetColumnValue("Localization.pCurrency")); Report.SetParameterValue("pProductName", (string)Report.GetColumnValue("Localization.pProductName")); Report.SetParameterValue("pQuantity", (string)Report.GetColumnValue("Localization.pQuantity")); Report.SetParameterValue("pUnitPrice", (string)Report.GetColumnValue("Localization.pUnitPrice")); Report.SetParameterValue("pAmount", (string)Report.GetColumnValue("Localization.pAmount")); Report.SetParameterValue("pTotal", (string)Report.GetColumnValue("Localization.pTotal")); Report.SetParameterValue("pSignature", (string)Report.GetColumnValue("Localization.pSignature")); Report.SetParameterValue("pName", (string)Report.GetColumnValue("Localization.pName")); Report.SetParameterValue("pDate", (string)Report.GetColumnValue("Localization.pDate")); Report.SetParameterValue("pAgree", (string)Report.GetColumnValue("Localization.pAgree")); } ds.Next(); } } ``` In the first line of code, we get the value of the parameter pLang. Looking ahead, I'll say that this parameter contains the ID of the selected language in the program. Then we get the source Localization of data to find the record for the selected language in the cycle. After that we assign the values from the table to the report parameters. The report is ready. Save it. Create app Add the two switches, drop-down list and a couple of buttons to the form. Add the three languages in the drop-down list: The main application code is invoked when you click Show report: ``` using (Report report = new Report()) { report.Load(Environment.CurrentDirectory + "\\Invoice.frx"); // Here begins the code responsible for the first method of localization if ((radioButton1.Checked) && (LanguagesCmdBox.SelectedIndex == 0)) { report.SetParameterValue("pInvoice", "Invoice"); report.SetParameterValue("pOurCompany", "FastReports Inc"); report.SetParameterValue("pOurCompanyAddress", "US Alexandria VA 22314"); report.SetParameterValue("pOurCompanyPhone", "Phone: 800-985-8986"); report.SetParameterValue("pCustomerId", "Customer Id:"); report.SetParameterValue("pCustomerCompany", "Company:"); report.SetParameterValue("pCustomerName", "Name:"); report.SetParameterValue("pCustomerAddress", "Address:"); report.SetParameterValue("pCustomerPostalCode", "Postal Code: "); report.SetParameterValue("pCustomerPhone", "Phone:"); report.SetParameterValue("pCustomerFax", "Fax:"); report.SetParameterValue("pCurrency", "Currency: $"); report.SetParameterValue("pProductName", "Product Name"); report.SetParameterValue("pQuantity", "Quantity"); report.SetParameterValue("pUnitPrice", "Unit Price"); report.SetParameterValue("pAmount", "Amount"); report.SetParameterValue("pTotal", "Total"); report.SetParameterValue("pSignature", "Signature"); report.SetParameterValue("pName", "Name"); report.SetParameterValue("pDate", "Date"); report.SetParameterValue("pAgree", "I declare that the above information is true and correct to the best of my knowledge"); } if ((radioButton1.Checked) && (LanguagesCmdBox.SelectedIndex == 1)) { report.SetParameterValue("pInvoice", "Rechnung"); report.SetParameterValue("pOurCompany", "Fast Reports Inc"); report.SetParameterValue("pOurCompanyAddress", "US Alexandria VA 22314"); report.SetParameterValue("pOurCompanyPhone", "Telefon: +4930568373928"); report.SetParameterValue("pCustomerId", "Kundennummer:"); report.SetParameterValue("pCustomerCompany", "Unternehmen:"); report.SetParameterValue("pCustomerName", "Name:"); report.SetParameterValue("pCustomerAddress", "Anschrift:"); report.SetParameterValue("pCustomerPostalCode", "Postleitzahl:"); report.SetParameterValue("pCustomerPhone", "Telefon:"); report.SetParameterValue("pCustomerFax", "Faxen:"); report.SetParameterValue("pCurrency", "Währung: eur"); report.SetParameterValue("pProductName", "Produktname"); report.SetParameterValue("pQuantity", "Menge"); report.SetParameterValue("pUnitPrice", "Stückpreis"); report.SetParameterValue("pAmount", "Höhe"); report.SetParameterValue("pTotal", "Gesamt"); report.SetParameterValue("pSignature", "Signatur"); report.SetParameterValue("pName", "Name"); report.SetParameterValue("pDate", "Datum"); report.SetParameterValue("pAgree", "Ich erkläre, dass die oben genannten Informationen wahr und korrekt auf die nach meinem besten Wissen"); } // Here begins the code responsible for the second method of localization if (radioButton2.Checked) { switch (LanguagesCmdBox.SelectedIndex) { case 0: report.SetParameterValue("pLang", "En"); break; case 1: report.SetParameterValue("pLang", "De"); break; } } ```  Let's look at the code in close-up. As you can see, it is divided by a comment on the two blocks - the first method and the second method of localization. Initially, the developed earlier report is loaded. Next, there is a check point on which method of localization is selected. And also there is a check point on which language of localization is selected. Three conventional designs for the three languages. There is assigning values to parameters of the report within each condition. The method SetParametrValue has two parameters: the name of the report parameter and its value. Thus, we fill all the parameters values in the selected language. The second method uses a similar localization conditional constructions. But inside  only one parameter of the report is defined - pLang - selected language. Having this parameter, the report will select necessary record from the localization tables. There is another advantage of this method, which was not mentioned at the beginning. It can be stored database localizations (Localization) within the report to facilitate its subsequent maintenance and exclusion of additional data source. To do this, select the Localization table in the data tree and set property StoreData = True. The table is saved in the report template. In this case it will be possible to skip the setting of one of the bases in the program. However, there is one disadvantage of using a stored database (tables) - if you want to add new fields to a data source you will need to reconnect to the source table. So, we have considered two ways of localization a report in FastReport .Net. Which way is better - it's a developer choice, it depends on the individual case. Next will be the results of the work done - three reports in different languages. In English: And in German: Tags: .NET, FastReport ### How to make a label type report in FastReport .NET URL: https://www.fast-report.com/blogs/make-label-type-report-net In this article, I want to review the label master in FastReport.Net: Labels can be bar codes, business cards, addresses, transport waybills, etc. They can be printed on self-adhesive or plain paper. You can use the built-in FastReport templates of labels or create your own. The label template is a report template with the specified page size and the number of labels on the printed page. For the selected label template, you must specify two sizes - the size of the label and the size of the paper to be printed on. Two more parameters "String" and "Columns" allow you to set the number of labels on the printed page. Here's how it looks like: That is, on paper size 14.81x21.01 can be placed 4 labels with a size of 7.4x10.5. Labels are placed in two lines and in two columns. Now add one more line: We will see a message that the labels do not fit on the page. You either have to reduce the number of lines, or increase the paper size. I think the mechanism of adding labels to the page is clear from this example. Let's go back to the master of labels. We have at our disposal a very impressive database of label templates for various manufacturers: At the bottom of the list, there is a "Custom" item, to select a previously created custom template. Let's choose the manufacturer Formtec: Among the templates available for this manufacturer are Address, Shipping and Business Card. Close the current window. The label wizard has a New button. Click it to create your own template: Having adjusted a template, we press OK and we return to the master of labels. Now, if you select "Custom" in the manufacturers, you will see a list of templates created by us. Choose "Label6" and click Ok. Now the report template is empty. According to the label settings, the report template has two columns with a width of 8.84 cm. Fill the template with data: If you fill the label with data from the database, each data line will generate a new label. Thus the entire page will be filled with labels, according to the template. However, in our case, we filled the data manually, and we get only one label when printing. Let's correct this situation. In the settings of the "Data" band, change the value of the RowCount property to 10. Run the report in the preview mode: Agree, it is very convenient to store the report page templates in the labels. There is no need to save a separate report file with the correct page sizes. Tags: .NET, .NET, FastReport, FastReport ### How to make a PDF document from a text file URL: https://www.fast-report.com/blogs/make-pdf-document-text-file Summary: Today we will talk about the cases when you need to make a PDF document, but there is no Adobe Acrobat on the computer. You only have a text file with original data and FastReport Desktop. Today we will talk about the cases when you need to make a PDF document, but there is no Adobe Acrobat on the computer. You only have a text file with original data and FastReport Desktop. Today we will talk about the cases when you need to make a PDF document, but there is no Adobe Acrobat on the computer. You only have a text file with original data and FastReport Desktop. Today we will talk about the cases when you need to make a PDF document, but there is no Adobe Acrobat on the computer. You only have a text file with original data and FastReport Desktop. To begin with, you need a test file, in which there is a division into paragraphs (carriage return to a new line). Such a data source will allow you to use paragraphs as data strings. Now let's create a report in the designer. Create a new data source: Note the Separator field. By the way, you can enter any character that does not exist in the document, and this will allow you to use carriage return at the end of each paragraph as a separator. Then select the column Field0: In the data window appeared a source with one field: Drag this field to the "Data" band and stretch it to the full width: To fit the entire paragraph text on the band, enable the CanGrow property (can grow) for the added field and for the Data band. You can do this from the context menu: Also, we call the context menu for the band by right clicking on the band header. Add a title: Let's see how the report looks in the preview mode: As you can see, from a regular text file we received a paragraph-broken document. So, half the work is done. It remains only to configure the export of the report to PDF format using FR Desktop. Launch the Configurator tool. Choose the report we created: We mark the option Export as. And choose the PDF format: The next step is to select the folder where our PDF document will be saved. To do this, select the Save to option and select the value of Folder: To select a folder, click the Settings button. Now, save the configuration with the Save button. You can run the configuration file for execution immediately using the Run button, or use it later with the scheduler. Press the Run button: We will check the folder specified in the config. And there is! File created: As we have seen, you can easily create PDF documents from text files using FastReport. Tags: .NET, FastReport, Desktop, CSV, PDF ### How to make a PDF from Delphi / C++Builder / Lazarus URL: https://www.fast-report.com/blogs/export-pdf-delphi-lazarus Summary: Get PDF-document from Delphi or Lazarus application with FastReport - from code and without code. PDF settings. Get PDF-document from Delphi or Lazarus application with FastReport - from code and without code. PDF settings. Get PDF-document from Delphi or Lazarus application with FastReport - from code and without code. PDF settings. Quite often, you need to get a PDF document from a Pascal application - either Delphi or Lazarus. Usually it is recommended to use specialized solutions, PDF converters (such as itext, Synopse PDF Engine, PowerPDF, HotPDF, PDF Creator Pilot, PDFtoolkit VCL, Debenu Quick PDF Library etc.). In this article we will not consider their advantages and disadvantages. Unexpectedly for us, it turned out that even if there is no “PDF” in the product name, the capabilities of FastReport VCL for PDF output in Delphi cover many of the developer’s needs. And many of our customers use ONLY FastReport features to make PDF! So, first of all – you can send any arbitrary complex report to PDF. Let’s try! Create a new VCL application in Delphi Add TfrxReport, TfrxPDFExport and TButton components from the FastReport tab to the form. Double-click on TfrxReport, enter FR Designer. Create a new report (File -> New report). Add TfrxMemoView with the text “Test text” to MasterData1. Set MasterData1.RowCount = 200 (to repeat the line 200 times and generate a 3-4-page report, since our example does not use the dataset), exit the designer and write the OnClick handler for Button1: ``` procedure TForm1.Button1Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} if frxReport1.PrepareReport then frxReport1.ShowPreparedReport; {and show preview window} end; ``` In fact, this code is enough for comprehensive work, generating a report and exporting to PDF. Now create a document of any complexity in Design time (you can connect any data sources and take the information from there) – tables, lists, illustrations, maps, QR codes – for this make sure to add the appropriate components to the project first (otherwise they will not exist in Run time), composite and multi-page documents with anchors, inline links and a table of contents – anything you need and any size – a one-page receipt, a one-page catalog, an annual report of factory staff movements on thousands of pages. And don’t forget to put the PDF export component to our project! Launch and click on the only button on the form. We can see the preview window and the export to PDF button. Go ahead – save a PDF from our Delphi application! Click on the button – call the export from the preview below I’ll show you how to do all this from the code, you can just click on the link – send to PDF from the code ). Immediately we see the resulting PDF settings dialog. As you can see, any professional PDF converter will envy such a set of options! We can choose which pages of our document to send to PDF, which version of PDF to use, compression reduces the size of the resulting file, embedding fonts allows to save the appearance of the document of any third-party device. We can choose if the background will be attached to the PDF document; our PDF can also be optimized for printing (image quality will be better but the size will be larger) or only for on-screen presentation. We can set if the resulting PDF will contain an external table of contents as in the original report (I don’t have it in my example so it is not possible to select it), transparency, compression ratio of bitmap images. By the way, one of the important features of FastReport VCL 6.6 is that vector images will remain a vector form in a PDF file, in other words – lossless, and this will be especially noticeable on 2D barcodes and maps. Another feature – all text, including RTF, will be vectorized when saved to PDF, i.e. the quality will not be lost while retaining the ability to copy a section of text from PDF (unless you prohibit the appropriate option which I will mention below). Save to: where exactly we will send our PDF (local file or e-mail or clouds). Open after export - the resulting file will be opened immediately after export by the PDF viewer assigned by default to the operating system (for example, Adobe Acrobat Reader). You can export the generated document in archive formats such as PDF/A-1a, PDF/A-1b, PDF/A-2a, PDF/A-2b, PDF/A-3a, PDF/A-3b – they are specially designed for keeping documents unchanged in electronic form. For example, fonts, images, third-party objects that are present in a document are automatically embedded in the document in this standard. Quite often one of these standards is used for electronic document management in large organizations. By the way, here you can read a little more about the difference between PDF and PDF/A. The non-archive PDF format also has several versions (and you can choose which one to save). Service information, which will also go to a PDF file: title, author, subject, keywords (you can upload PDF to the web, it will be perfectly indexed), PDF authoring tool, document producer. Security – protecting the document from opening by using a password (using RC4 encryption). The ability to prohibit printing and modifying a document, copying of text and graphics, adding or modifying text notes. Setting up the PDF viewer when you open the document: Hide toolbar, hide menubar, hide window user interface, fit window, center window, print scaling. Usually, when exporting I use the parameters set by default but this time I reviewed all the parameters. So, if we or our users do not need all this visual diversity, then we can immediately send to PDF from Delphi or Lazarus code saving to PDF from Delphi with PDF parameters ``` procedure TForm1.Button1Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported.} frxPDFExport1.PageNumbers := '2-3'; {Set the PDF standard  TPDFStandard = (psNone, psPDFA_1a, psPDFA_1b, psPDFA_2a, psPDFA_2b, psPDFA_3a, psPDFA_3b); It is required to add the frxExportPDFHelpers module to the uses list: uses frxExportPDFHelpers;} frxPDFExport1.PDFStandard := psNone; {You can set the PDF standard version for PDFStandard = psNone TPDFVersion = (pv14, pv15, pv16, pv17); It is required to add the frxExportPDFHelpers module to the uses list: uses frxExportPDFHelpers;} frxPDFExport1.PDFVersion := pv17; {To get smaller file size, you can set the compression} frxPDFExport1.Compressed := True; {Set whether to embed fonts in the resulting document.  Embedding fonts significantly increases the size of the resulting document} frxPDFExport1.EmbeddedFonts := False; {Set whether we need to export the background image} frxPDFExport1.Background := True; {Disable export of objects with optimization for printing. With option enabled images will be high-quality but 9 times larger in volume} frxPDFExport1.PrintOptimized := False; {Set whether the resulting PDF will contain an external table of contents, as in the original report} frxPDFExport1.Outline := False; {Set whether to export images with transparency} frxPDFExport1.Transparency := True; {You can set the desired DPI of images. Enabling this option disables SaveOriginalImages option, which allows you to save images in their original form} frxPDFExport1.PictureDPI := 150; {Set the compression ratio of bitmap images} frxPDFExport1.Quality := 95; {Set whether to open the resulting file after export} frxPDFExport1.OpenAfterExport := False; {Set whether to display export progress   (show which page is currently being exported)} frxPDFExport1.ShowProgress := False; {Set whether to display a dialog box with export filter settings} frxPDFExport1.ShowDialog := False; {Set the name of the resulting file. Please note that if you do not set the file name and disable the export filter dialog box, the file name selection dialog will still be displayed} frxPDFExport1.FileName := 'C:\Output\test.pdf'; {Fill in the corresponding fields of the Information tab} frxPDFExport1.Title := 'Your Title'; frxPDFExport1.Author := 'Your Name'; frxPDFExport1.Subject := 'Your Subject'; frxPDFExport1.Keywords := 'Your Keywords'; frxPDFExport1.Creator := 'Creator Name'; frxPDFExport1.Producer := 'Producer Name'; { Fill in the corresponding fields of the Security tab } frxPDFExport1.UserPassword := 'User Password'; frxPDFExport1.OwnerPassword := 'Owner Password'; frxPDFExport1.ProtectionFlags := [ePrint, eModify, eCopy, eAnnot]; {Set the Viewer settings (Viewer tab)} frxPDFExport1.HideToolbar := False; frxPDFExport1.HideMenubar := False; frxPDFExport1.HideWindowUI := False; frxPDFExport1.FitWindow := False; frxPDFExport1.CenterWindow := False; frxPDFExport1.PrintScaling := False; {Export the report} frxReport1.Export(frxPDFExport1); end;   ```  There you go – use it! Here are considered the functions and recording options from Lazarus and Delphi to PDF FastReport VCL version 6.6. The cost of a license is comparable (and often less) to the monthly salary of a developer, while only the options for setting up and saving to different versions of PDF here are equal to at least work-months of a developer with high qualifications and knowledge of the subtleties of different dialects of PDF. By the way, you can even check the quality of the PDF conversion on our demo reports or some of your own for fun. We constantly check and test them for compliance with PDF standards (there are special validators but at the same time the validation passage does not always guarantee the correspondence of what you see and what will be printed, we have all those individual stories about it). For example, do you know how beautiful illustrations in your PDF will be? Read more here:  Updated export engine in FastReport VCL . Tags: VCL, Export, Lazarus, FastReport, PDF, Delphi ### How to make a repeating band URL: https://www.fast-report.com/blogs/making-repeating-band Summary: Output the same information - for business cards, invoices, invitations, etc. Output the same information - for business cards, invoices, invitations, etc. Output the same information - for business cards, invoices, invitations, etc. Sometimes it is required to display the same information several times in a report. This may be required in reports that will be printed, for example, invoices, business cards, announcements, invitations, and others. This was not a trivial task before. You had to use a report script to “multiply” the band. For example, like this: ``` public class ReportScript { int i = 0; int count = 3; private void PageHeader1_AfterPrint(object sender, EventArgs e) { for (int i = 0; i < count - 1 ; i++) Engine.ShowBand(Data1); } private void Data1_BeforePrint(object sender, EventArgs e) { if (i == count) Data1.Visible = false; } } ```  Here we had to use two event handlers. First, after showing the header band, that is, before showing the Data band, we needed to generate the required number of data bands. Then, before displaying the Data band, check whether the required number of bands has been reached. This option is quite workable, but still requires a report developer to have some programming skills and good knowledge of the generator engine to understand how bands will be displayed on the page. All this imposes restrictions on the developer. From now on, from version 19.3.4, there is a “regular” solution to this issue - the RepeatBandNTimes property for the band. You simply set the desired number of output band instances. As a result, we get the same result as with the script: It's nice that the report generator is becoming more and more convenient and does not burden the report designer with unnecessary work. Tags: .NET, .NET, FastReport, FastReport ### How to make a report based on the FastCube .NET cube URL: https://www.fast-report.com/blogs/make-report-based-fastcube-net Analysts, when dealing with cubes, sometimes need to generate reports, based on slices. When is it necessary? When you need to make regular reports based on cubes. When you need to export a cube to some popular data format, which is not available in the built-in FastCube.Net export. Built-in FastCube export offers us 7 formats: And FastReport .NET report - 24 formats. And additionally saving to cloud services, sending by e-mail and FTP: In this article, I want to talk about such an excellent opportunity as to make a report based on a cube cut. By tradition, we will consider the example. Create a WindowsForms application. Add to the project links to the libraries: FastReport, FastReport.Olap, FastReport.Bars. They can be found in the folder with installed FastCube.Net. Add the following components to the form from the toolbar: Cube, Slice, SliceGrid, Button Let's configure the Slice1 component. For its cube property, we select cube1. For the SliceGrid1 component we need to set the slice-slice1 property. For the button, create the event handler for the click event: ``` private void button1_Click(object sender, EventArgs e) { SliceCubeReportLink SliceLink = new SliceCubeReportLink(); SliceLink.Slice = slice1; cube1.Load("C:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/simple.mdc"); Report FReport = new Report(); FReport.RegisterData(SliceLink, "TestCubeLink"); FReport.Design(); } ```  In the first line of code, we have created a SliceCubeReportLink object, which is responsible for providing the slice data for the report. Next, we assign the slice property a value of slice1 for the created object. That is, we specify where to get the data. Now you need to load the cube file into the cube object. Since we are using a file with the mdc extension, it already contains the data inside and there is no need to create a connection to the data source for the cube. Then we create a Report object, load the report template file into it, register the data source in it, and run the report in the designer. If we do not need to make edits to the report template, then instead of starting the designer, it is better to run the report in the preview mode: ``` FReport.Prepare(); FReport.ShowPrepared(); ```  Let's now look at the report template. After all, we just pass the data from the cube into the report, and we'll have to create the cross-table template manually. That is, you will not be able to generate a report on the fly from any slice. You will always need a pre-prepared template. To create a report template, we need to run the application, and then the report designer. This is the only way we get the data source for the report. Thus, the code for our button in its initial form, we use the designer's call: ``` FReport.Design(); ```  Run the application. And press the report generation button: This will start the report designer with an empty report. Notice the data area on the right: It has a cube data source - TestCubeLink. And now look at the vertical toolbar on the left. Namely icon . This is a CrossView component that will form a crosstab from the cube data source. "Drag" it to the "Data" band. On the right find the CubeSource in the Property inspector In the end, we'll get such report template: We save it to the desired place. In my example it is stored in: C:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/Test.frx. We close the application. Now modify the code for the button: ``` SliceCubeReportLink SliceLink = new SliceCubeReportLink(); SliceLink.Slice = slice1; cube1.Load("С:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/simple.mdc"); Report FReport = new Report(); FReport.Load("С:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/Test.frx"); FReport.RegisterData(SliceLink, "TestCubeLink"); FReport.Prepare(); FReport.ShowPrepared(); ```  Run the application and click the button. And we get a report: From the preview mode of the report, we can export the report, send it by email and so on. This was the simplest example of a report. You can decorate a crosstab using the style property and get a much more attractive appearance: Tags: .NET, .NET, FastCube, FastCube, Report, Report ### How to make a report from C# to FastReport Cloud URL: https://www.fast-report.com/blogs/c-sharp-fastreport-cloud Summary: In this article, we will look at how to create reports in FastReport Cloud using SDK and export them to any convenient format. In this article, we will look at how to create reports in FastReport Cloud using SDK and export them to any convenient format. In this article, we will look at how to create reports in FastReport Cloud using SDK and export them to any convenient format. As we know, our world is constantly evolving, and new technologies emerge almost every day. Nowadays, it is no longer necessary to set up the entire infrastructure in one's office, hire personnel to monitor equipment, and deal with issues that arise with this equipment and other difficulties. Nowadays, more and more services offer business cloud solutions, for example, FastReport Cloud . Our service saves the development team from unnecessary work; you no longer need to think about how to deploy the project, where it would be best and most profitable to rent or buy servers, and what technologies to use for deployment. We have already settled all this, and all you need to do is take advantage of it. How to use FastReport Cloud? In this article, we will look at how to create reports in FastReport Cloud using SDK and export them to any convenient format. First, let's create a project and add the FastReport.Cloud.SDK.Web nuget package to it. Thanks to this package, we will conveniently communicate with FastReport Cloud without an API. We will also need a report template. This example will use Box.frx from our Demo: After creating the project and adding all the necessary dependencies to it, you can move on to analyzing the example. At the very beginning, you need to create an API key in the FastReport Cloud workspace; to do this, follow the link https://fastreport.cloud . Click on the tab with API keys and create a new one. If the key already exists, then you can copy it by right-clicking on it and selecting an action from the drop-down list. After receiving the API key, we return to our application. We write the key into a separate variable as in the example below: ``` private const string ApiKey = "your API key"; ``` Next, we need to create the main objects that we will use in the program: ``` var httpClient = new HttpClient(); httpClient.BaseAddress = new Uri("https://fastreport.cloud"); httpClient.DefaultRequestHeaders.Authorization = new FastReportCloudApiKeyHeader(ApiKey); var subscriptions = new SubscriptionsClient(httpClient); var rpClientTemplates = new TemplatesClient(httpClient); var rpClientExports = new ExportsClient(httpClient); var downloadClient = new DownloadClient(httpClient); var subscription = (await subscriptions.GetSubscriptionsAsync(0, 10)).Subscriptions.First(); var templateFolder = subscription.TemplatesFolder.FolderId; var exportFolder = subscription.ExportsFolder.FolderId; ``` After this, we move on to the stage of creating a report for the cloud. You can do it like this: ``` TemplateCreateVM templateCreateVM = new TemplateCreateVM() { Name = "box.frx", Content = Convert.FromBase64String(TestData.BoxReport) //we send the frx file in byte format }; ``` In the example above, we already have a report in byte format. If you have a file in frx format, then you can use this example: ``` TemplateCreateVM templateCreateVM = new TemplateCreateVM() { Name = "box.frx", Content = File.ReadAllBytes("path to report") //we send the frx file in byte format to the path }; ``` We upload the TemplateCreateVM object along with the report into our FastReport.Cloud workspace: ``` TemplateVM uploadedFile = await rpClientTemplates.UploadFileAsync(templateFolder, templateCreateVM); ``` Now we export the report to the format we need. First, you need to decide on the format and name of the future file. ``` ExportTemplateVM export = new ExportTemplateVM() { FileName = "box", Format = ExportFormat.Pdf //format to be exported }; ``` We export to PDF format: ``` ExportVM exportedFile = await rpClientTemplates.ExportAsync(uploadedFile.Id, export) as ExportVM; string fileId = exportedFile.Id; int attempts = 3; exportedFile = rpClientExports.GetFile(fileId); while (exportedFile.Status != FileStatus.Success && attempts >= 0) { await Task.Delay(1000); exportedFile = rpClientExports.GetFile(fileId); attempts--; } ``` We finished the main part of the work with the report. We received a pdf file from our report: If you want to download the file manually, then go to your workspace and download it as in the following example:  You can also download the file with the SDK using this example: ``` using (var file = await downloadClient.GetExportAsync(fileId)) { using (var pdf = File.Open("report.pdf", FileMode.Create)) { file.Stream.CopyTo(pdf); } } ``` Now you know how to create, export, and download files in FastReport Cloud using the SDK. You can find the example from this article at this link: https://github.com/FastReports/FastReport-Cloud . Tags: FastReport, Cloud, C#, Report, NuGet ### How to make a report like Drill-Down URL: https://www.fast-report.com/blogs/drill-down-alike Summary: Data analysis requires reports with a drop-down list. Using data grouping, but with the ability to hide or display data by mouse click. This is not only very convenient, but also beautiful. Data analysis requires reports with a drop-down list. Using data grouping, but with the ability to hide or display data by mouse click. This is not only very convenient, but also beautiful. Data analysis requires reports with a drop-down list. Using data grouping, but with the ability to hide or display data by mouse click. This is not only very convenient, but also beautiful. Reports with grouping are necessary for data analysis. But when there are a lot of data and there is no need to display them all, a regular report with grouping becomes cumbersome and redundant. You want to find a universal solution for such cases. And there is one. A report with a drop-down list is essentially a report with grouping data, but with the ability to hide or display data in a group by mouse click. It is not only very convenient, but also beautiful. After all, the report becomes an interactive object. The user is pleased when he can participate in the display of information. Consider an example of how to make such a report. First of all, as in the Master-Detail report, we need a data source with linked tables. Suppose we have two tables: customer and orders. One customer can do many orders - one-to-many relationship. Let's add it. Click the Actions button and select New Relation from the drop-down list ... Parent table is main one, then choose ‘custome’r. Child table is respectively ‘orders’. In ‘customer’ there is a primary key CustNo. Choose it among the columns. In ‘orders’ there is a foreign key CustNo. Also choose it. As a result, we get the connection: Now let's start creating the report template. Add a band "group header". On it we will place the fields from the link: “orders.customer.Company”, “orders.customer.Addr1”, “orders.customer.Phone”, “orders.customer.Contact”. In addition to these fields, let's add a checkbox control to this band. In its CheckedSymbol property, select Plus, and in UncheckedSymbol - Minus. Add the fields from the ‘orders’ table: OrderNo, SaleDate, PaymentMethod, AmountPaid to the “Data” band. Also, add a header band for the data and field headers: Double-click on the group title “Headline”. Select the field to group: Now select the checkbox that we added earlier. Give it a Hyperlink property: Select the "Group Header" band and create a BeforePrint event handler for it: ``` private void GroupHeader1_BeforePrint(object sender, EventArgs e) { string groupName = (String)Report.GetColumnValue("orders.customer.Company"); // get the group name bool groupVisible = expandedGroups.Contains(groupName); // Check group visibility DataHeader1.Visible = groupVisible; Data1.Visible = groupVisible;// Set the visibility of data in accordance with the visibility of the group GroupFooter1.Visible = groupVisible;// Set the visibility of the basement of the group in accordance with the visibility of the group CheckBox1.Checked = !groupVisible;// Set the state of the flag depending on the visibility of the group } ```  Also add to the class a list of expanded groups: ``` private List expandedGroups = new List(); ```  Let's return to our checkbox. For it, create a Click event handler: ``` private void CheckBox1_Click(object sender, EventArgs e) { string groupName = (sender as CheckBoxObject).Hyperlink.Value; // We get the name of the group from the hyperlink if (expandedGroups.Contains(groupName)) // If the list of visible groups contains the selected group expandedGroups.Remove(groupName); // Then remove the selected from the list of visible groups. else expandedGroups.Add(groupName); // Otherwise add the group to the list of visible Report.Refresh(); // Update Report } ```  Run the report in preview mode: Now click on any plus sign: When you click on the minus sign group collapses. Agree, this is very convenient. Tags: .NET, .NET, FastReport, FastReport ### How to make a report like Master-Detail URL: https://www.fast-report.com/blogs/master-detail-alike Summary: The essence of a Master-Detail report is a one-to-many relationship between data entities. That is, one record in the main table corresponds to several in the subordinate table.The essence of a Master-Detail report is a one-to-many relationship between data entities. That is, one record in the main table corresponds to several in the subordinate table. The essence of a Master-Detail report is a one-to-many relationship between data entities. That is, one record in the main table corresponds to several in the subordinate table.The essence of a Master-Detail report is a one-to-many relationship between data entities. That is, one record in the main table corresponds to several in the subordinate table. The essence of a Master-Detail report is a one-to-many relationship between data entities. That is, one record in the main table corresponds to several in the subordinate table. The variety of electronic documentation sometimes seems to be limitless. However, in practice, not many types of documents are commonly used. In electronic reporting, the most common type of document is a simple list. Then, there go complex lists. There can be many variations of complex lists, but the main one is a report of the type “Main” - “subordinate”. The essence of this type is that there is a dependency between data entities in a one-to-many scheme. That is, one record in the main table can correspond to several records in the subordinate. In practice, it looks like this: Entries from the main table contain the name of the categories, their brief description and picture. Each category contains specific products. This example shows only one dependency “Main” - “subordinate”. But the subordinate table can also have its subordinate table, and then it will already be the main one for the second connection. Such hierarchical dependencies can be arbitrarily many. And now in practice, let’s consider how to create such a report. First of all, we need a data source in which there will be two logically related tables, as in the example shown above. Add a data source to the report. In our case there will be two related tables: customer and orders. In the “Data” window it looks like this: Now we need to link these tables. To do this, click the Actions button in the data window. A drop-down list will open: You need to select the item “New Relation”. In the relation edit form, we need to define the main and subordinate table, as well as the field by which they should be linked: The main table is ‘customer’, its primary key is CustNo. The subordinate table is ‘orders1’, its foreign key CustNo. After successfully creating the connection, we will see it in the data window: As you can see, a link to customer appeared in the orders1 table. If you open it, we will see all the same fields that are in the customer table. We have prepared the data, now you need to create a report template. By default, a single band Data is available in a blank report. Let's add some fields from the customer table: customer.Company, customer.Addr1, customer.Phone, customer.Contact. We will place these fields so that we get a certain company card: Right click on the band header ‘Data’: And select the item “Add detailed data band”. Click on the Configure bands ... link: And add a header band for the Data2 band. To do this, select the Data2 band with the mouse and click the Add button. In the drop-down list, select Header. After that, you can add fields from the orders1 table to the detailed “Data” band: orders1.OrderNo, orders1.SaleDate, orders1.AmountPaid. At the same time column headings will be added automatically. Format the headers, and our template is almost ready: Double-click on the header of the “Data” band: We select the customer table as a data source. Now let's do the same for the detailed “Data” band: Now our report is ready to run. Let's see what we got: Tags: .NET, .NET, FastReport, FastReport ### How to make a simple FastCube .NET cube editor URL: https://www.fast-report.com/blogs/make-simple-net-cube To view and edit cubes and slices from FastCube .NET, you need a special application that you need first create. Since FastCube .NET comes in the form of a library and components, we can easily embed the cubes editor into your existing WinForms application, or create a separate one, specially for it. In this article, we'll look at the way how to create a simple cubes and slices editor in two ways: using controls or from program code. 1)      The first way - visual controls Create a Windows Form Application. We add a tabControl component with three tabs: Slice, Cube and Chart. As you could already guess, on the first tab we will display the slice of the OLAP cube, on the second one - the data from the cube, on the third - the diagram on the slice. It is necessary to connect libraries to the project: FastReport.Olap and FastReport.Bars. In the Toolbox, we have a set of controls for the FastCube: Drag the Cube control to our form. We have 4 types of data source for the cube in the DataSource property: DataSource - data from the database; File - data from the cube file; Stream - data from the stream; Manual - manual filling. In our example, we use the cube file containing the data (File Type). You can download the cube file from the application code. For example, in the OnLoad event: cube1.Load("C:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/Data/Cubes/2_0_sample_en1.mdc"); Now add the Slice component to the form. In its properties we only need to choose a cube: Now, you need to display the cube and slice. On the Slice tab, place the SliceGrid control. All we need is to set the Slice property for it. Choose the value of slice1. Add the CubeGrid control to the Cube tab. In its Cube property choose cube1. On the third tab - Chart - we add the Chart control: In the properties of the added control, find Slice and select the value of slice1. If we run the application right now, we'll see the loaded cube, the slice and the diagram, but we will not be able to load another cube, or save the changes in the current one. You need to add toolbars for each component: SliceGrid, CubeGrid, and Chart. To do this, drag the following components onto the form from the toolbox: SliceGridToolbar, CubeGridToolbar, ChartToolbar. The components will appear below the form: In the chartToolbar properties, find Chart and select the value chart1. For cubeGridToolbar, set the Grid property to cubeGrid1. In the sliceGridToolbar properties for the Grid field select sliceGrid1. Now we need to bind these toolbars to the corresponding tabs. Add three lines of code to the load event of the OnLoad form: sliceGridToolbar1.Parent = tabPage1; cubeGridToolbar1.Parent = tabPage2; chartToolbar1.Parent = tabPage3; Now let’s run the application: SliceGridToolbar is located at the top. A slice is a sample of data from a cube for specified dimensions and measures. Here all the data from the cube are displayed. The graph is based on the data from the slice. There is also a toolbar. 2)      The second way is in the code of the program  All that we added to the form with the mouse, you can manually write in the application code. In the reference, add the following libraries: FastReport.Olap, FastReport.Bars, System.Windows.Forms.DataVisualization; On the form, add a TabControl control with three tabs. Open the form code. In the using section, we need libraries: ``` using System; using System.Windows.Forms; using FastReport.Olap.Controls; using FastReport.Olap.Chart; ```  We place all the code for creating and configuring components, for example, in the class constructor: ``` public Form1() { InitializeComponent();     FastReport.Olap.Cube.Cube cube = new FastReport.Olap.Cube.Cube(); FastReport.Olap.Slice.Slice slice1 = new FastReport.Olap.Slice.Slice(); slice1.Cube = cube;     SliceGrid sliceGrid = new SliceGrid(); sliceGrid.Dock = DockStyle.Fill; sliceGrid.Parent = tabPage1; sliceGrid.Slice = slice1;     SliceGridToolbar sliceGridToolbar = new SliceGridToolbar(); sliceGridToolbar.Dock = DockStyle.Top; sliceGridToolbar.Parent = tabPage1; sliceGridToolbar.Grid = sliceGrid;     CubeGrid cubeGrid = new CubeGrid(); cubeGrid.Dock = DockStyle.Fill; cubeGrid.Parent = tabPage2; cubeGrid.Cube = cube;     CubeGridToolbar cubeGridToolbar = new CubeGridToolbar(); cubeGridToolbar.Dock = DockStyle.Top; cubeGridToolbar.Parent = tabPage2; cubeGridToolbar.Grid = cubeGrid;     Chart chart = new Chart(); chart.Dock = DockStyle.Fill; chart.Parent = tabPage3; chart.Slice = slice1;     ChartToolbar chartToolbar = new ChartToolbar(); chartToolbar.Dock = DockStyle.Top; chartToolbar.Parent = tabPage3; chartToolbar.Chart = chart;     cube.Load("J:\\Program Files (x86)\\FastReports\\FastCube.Net Professional\\Demos\\Data\\Cubes\\2_0_sample_en1.mdc"); } ```  That's all. The application is ready. Drag and drop controls with the mouse, or create them in the code –  you choice. Tags: .NET, .NET, FastCube, FastCube ### How to make a simplified web designer for reports URL: https://www.fast-report.com/blogs/simple-web-report-designer Summary: The article describes how you can make the web report designer easier, remove unnecessary functionality. The article describes how you can make the web report designer easier, remove unnecessary functionality. The article describes how you can make the web report designer easier, remove unnecessary functionality. Report designer has a lot of useful features. This is a complete development environment with many options, a full study of which will require a lot of time. But what if you need to develop simple reports, or do not need to be developed, but only edit existing ones. Then the complex interface and report designer redundant only interfere with work. The optimal solution would be to leave only the necessary functionality for the user's needs. The problem of simplifying the web report designer announced one of Stimulsoft Reports Generator users: https://forum.stimulsoft.com/viewtopic.php?f=8&t=56115 We want to integrate decent feature of Stimulsoft Reports - the Designer into our application for end-users. As you know, in the Designer, user can create report online\web. By this oportunity i would to thank you for this feature. The issue that was raised during the testing, it is bit complicated for not "IT guys", and, therefore, is there a "light" version of this for typical "manager assistants" with simpler interface ? He hope for yes but if no, can you please inform how can we do make the current version of the Designer more basic\simpler by ourselves (please provide docs\links if available)? The developers offered to edit the designer's source codes to address this issue. This option will not suit everyone. I would like to be able to customize the designer, as it is done in FastReport Online Designer. Let's see how this is implemented. FastReport.Net web report designer has great potential display settings, composition and functionality. And although you cannot add your own designer functionality without editing the source code, but to hide or customize the display of the current, you can easily. In order to download the Web designer from the developer’s website, firstly you need to configure it in special wizard: https://dsg2014.fast-report.com:3000/#/builder/themes . Online designer Configuration Wizard offers us the following configuration steps: design theme; configuration; Components; bands; dialog controls; settings and plug-ins. Theme It implies not only a difference in the colour scheme, but also in displaying the menu and toolbars. There are three themes: none, classic and mini. The first has a simplified design, no menu panel and toolbars. The second is the most complete theme, including all menus and toolbars. The third is the most ascetic, minimum of possibilities. Configuration This section allows you to turn on/disable various features, such as: adding bands, changing band sizes, displaying preview buttons, and more. You can limit your users with band settings so that they don't break the template when editing reports. In the same section, we have a choice of the type of designer by the place of its application: for conventional ASP .Net projects, for projects ASP.Net Core and arbitrary application. This item is very important for the health of the online designer in your project. Components At this point of configuration of components, you are suggested to choose only needed ones: These components will be available while creating the report: Bands In addition to the various components, the report also consists of bands that are containers for the placement of these components. At this point, you can limit the available bands. For example, if you're supposed to create simple list reports, only headline bands, data bands, and possibly page footage are enough. Dialogue controls We've already set up a list of available controls for the report pages. These are the controls for dialogue forms. Dialogue forms are called before a report is built and in them you can determine the value of the variables or set data filtering criteria. Settings and plugins This can be considered the last step of the configuration. Here you can disable some of the main, in my opinion, functionality to create a report: data work, properties and events of reporting objects, preview. Some of the designer's features are implemented as additional modules - plug-ins. These plug-ins can both enhance functionality and simply enhance the convenience of reporting. For example, a code plug-in includes a report script, and guides allow you to include guide lines to align objects on the report page. By disabling unnecessary components and features, you can reclaim the designer's reporting interface, as well as reduce its size, which is important for web projects. Now, let's see what the report designer will look like for each of the three design themes you need to choose in the first step of the configurator. So, a report designer with a None design type: There are no menus and toolbars. The most simple design, which allows only edit existing reports. Classic design template most comprehensive. It includes all the menus and toolbars, and very similar to the classic report designer for desktop versions of FastReport. And the Mini design template: This template is best used with additional controls that you can embed into the web page. Fortunately, the report designer provides the ability to manage from the outside. As you can see, setting up web designer reports is very simple. When you create your designer build, you have to go through all the steps of his configuration. So, in any case, you will think about the composition of your Online Designer. Tags: .NET, .NET, FastReport, FastReport ### How to make a Swiss QR code bill in Delphi or Lazarus URL: https://www.fast-report.com/blogs/swiss-qr-in-delphi-lazarus Summary: What is Swiss Code and how to create a European standard payment document in VCL application What is Swiss Code and how to create a European standard payment document in VCL application What is Swiss Code and how to create a European standard payment document in VCL application Lately many countries have been digitizing payment processes. In other words, they convert existing payments to digital format. The most common way to automate payments is to use QR codes that are easily read by smartphones. The ability to encode a sufficiently large amount of information, high damage resistance, no need in special equipment to read – these are the main advantages of the QR code that made it popular all over the world. Swiss authorities also decided to use QR codes to secure electronic payments. This means that all payment receipts and bills will have these codes. In this regard, Swiss QR code support appeared in the FastReport and although Swiss QR is just a kind of QR code, it is used in a specific form of Swiss bill. It is quite simple and contains information about: payee, payer, invoice, payment link and amount. Let’s add a Swiss QR code to the report template. Here we added a regular QR code. To turn it into a Swiss QR, click on it and select TfrxSwissPaymentPreset for the ExpressionPreset.PresetClass property in the object inspector. The QR code has changed and a Swiss cross appeared in its center. After that, the Swiss QR code building parameters will become available in ExpressionPreset.DataObject. Let’s consider the parameters in more detail: Additional Information The invoice issuer may enter any additional structured/unstructured information for the payer. Alternative Schemes It is expected that in the future invoices may offer other alternative procedures in addition to bank transfers. There are two fields for this in Swiss QR. Creditor Fill in the data of the invoice issuer. Name of organization and address. Creditor Information Iban In Switzerland, the IBAN (International Bank Account Number) standard is used to represent a bank account number. From the name it is clear that this standard is international and it is registered in ISO with number 13616. Payment Amount Info Amount Here you need to specify the payment amount. Currency Since this is the Swiss payments system, you can choose between two types of currencies: EUR and Swiss francs (CHF). Payment Reference Link to the payment needed by payee. Type: frRT_QRR - QR link: Swiss standard link 26 characters long (numbers only); frRT_SCOR - Lender Link: international standard from 5 to 25 characters long; frRT_NON - the link may be empty. Ultimate Creditor Information about the invoice issuer (for additional information only, if used in the future) Ultimate Debitor Here you need to fill in the payer information: full name or name of organization and address. Next, fill in the parameter values. They are expressions, so you can either drag and drop fields from the data tree (this feature was added in FR VCL 6.7), or enter fixed data. Note that fixed string parameters must be enclosed in quotation marks (single quotes in Pascal Script). Turn off text display below the code in the properties of the Barcode object – ShowText = false. If all the data is filled in correctly, then no warning messages will follow and the QR code in the preview window will change. Now you can easily create a Swiss QR bill in FastReport and this is another reason for upgrading or updating to FR VCL 6.7. Tags: VCL, VCL, Lazarus, Lazarus, FastReport, FastReport, Barcode, Barcode, Delphi, Delphi, QR Code, QR Code ### How to make a web report authentication URL: https://www.fast-report.com/blogs/web-report-authentification Summary: Every time we generate a web report, ajax request leads to the execution of handlers: WebResource.axd and FastReport.Export.axd. Files with the axd extension are used in ASP .NET applications to get resources from dll libraries: images, javascript and styles. Every time we generate a web report, ajax request leads to the execution of handlers: WebResource.axd and FastReport.Export.axd. Files with the axd extension are used in ASP .NET applications to get resources from dll libraries: images, javascript and styles. Every time we generate a web report, ajax request leads to the execution of handlers: WebResource.axd and FastReport.Export.axd. Files with the axd extension are used in ASP .NET applications to get resources from dll libraries: images, javascript and styles. Every time we generate a web report, ajax request leads to the execution of handlers: WebResource.axd and FastReport.Export.axd. Files with the axd extension are used in ASP .NET applications to get resources from dll libraries: images, javascript and styles. As a result, we get an HTML report file. But, since the report is generated and located in the IIS cache, then, knowing the generated report ID (which is generated upon request), a malefactor can easily get it. And this is a potential security issue if the report contains confidential data. The way out of this situation can be user authentication. That is, if the report is called by a specific user, then only he can get a copy of it. We could check the http request for user authentication, but this is not a way out. A malefactor can always spoof a request. The best solution would be session authentication. Until recently, FastReport.Net did not provide such functionality. But in version 2019.3.13 there appeared an event for ajax authentication of report resources loaded via asp handler in WebReport. The WebReport.CustomAuth event is executed before the report is displayed. At this point, you can check the user in the session. Here is an example of using a new event: ``` public ActionResult Index() { Session["User"] = "Father Brown"; ... webReport.CustomAuth += WebReport_CustomAuth; ... } ... private void WebReport_CustomAuth(object sender, CustomAuthEventArgs e) { e.AuthPassed = (e.Context.Session["User"] as string) == "Father Brown"; } ... ```  As you can see, first, before creating the report, we set the username in the Http session, subscribe to the event. In the event handler, we perform a user check. If the report is requested by another user, then his name in the session will be different and the report will not be displayed. This example shows user authentication, but you can implement your own version. Thus, we can significantly improve data security by implementing report authentication. Tags: FastReport, FastReport, ASP.NET, ASP.NET, MVC, MVC, Core, Core ### How to make an interactive chart in FastReport VCL 5 URL: https://www.fast-report.com/blogs/interactive-chart-fastreport-5 In this article we are going to examine one of the latest features of FastReport VCL 5 - interactive diagrams. With the help of them one can display a detailed report for the selected area of a graph. How it works First, you create a chart. For example, a circular one: The chart is divided into sections, showing the proportion of parameters of the total mass. When you hover the mouse pointer over one of the sections, it is highlighted with a color. When you right-click on it, a hyperlink to the detail report is triggered. In this case, the value of the parameter (a section name) is transferred to this report. The detail report shows detailed information for the selected section: How to create it The implementation of such interactivity is rather simple. You need to create a report with a chart and a detail report. Then, configure a hyperlink from the first report to the second one. Now create an empty report with any band. 1. First of all, we need some data for the diagram. Therefore, we go to the Data tab. There we add a connection to the ADO Database. Then, we use demo.mdb, a demo database from FR VCL delivery. Next, it is necessary to add the ADO Query component. Double-click on the query editor to open the database. After this, we write the following request: ``` SELECT c.Continent, SUM(c.Area) AS Area FROM country c GROUP BY c.Continent ```  2. Go back to the report page. Place the Chart object on the band. Double-click on it and open the editor. Add a new series. Let us choose a type of the series - "Horizontal bar". Then we specify the data source. On the Y axis, we display the Area field. In the capacity of the Label, use the Continent field. 3. Now we need to create a detail report. 4. Go to the Data tab. Add a connection to the same database and the ADO Table component. Choose a name of the table - "country". 5. Using a variable editor, add FilterVariable, where we will pass the name of the continent, and where we will filter the table. 6. Place the variable to the report header. Then put the fields on the MasterData band: Name, Capital and Population: 7. Double-click on the data band. Open the editor. In the "Filter" field enter the expression: = Save the report as "Detail". 8. Go back to the report with the diagram. Click on our diagram. In the property inspector we are interested in a hyperlink. Expand it: Here it is important to pay attention to the View property. In the drop-down list you can choose one of the following values for it: For the present example with the interactive diagram, the options are DetailPage and DetailReport . As you understand, you can place a detailed report either on the other page of the current report or in a separate report. Since we chose the second option, the DetailPage property remains empty. For DetailReport we specified the path to the detail report file. This can be either an absolute path or a relative path (relative to the application's working directory). The Expression property also is not useful for us. You can specify a value for a hyperlink and other types of hyperlinks in it. Since we transfer the selected value from the chart to the detail report, we specify the variable name in the ReportVariable field. In the TabCaption property, we can specify the name of the tab, where the drillthrough report opens. The Value field allows you to set the default values. Then it will be assigned a real value from the diagram. ValuesSeparator specifies a delimiter if multiple parameter values are passed. 9. To complete the example, just add the OnPreviewClick event handler for the Chart object. We write the following code in it: ``` if TfrxChartView (Sender) .ClickedVal1 <> '' then TfrxChartView (Sender) .Hyperlink.Value: = '' '' + TfrxChartView (Sender) .ClickedVal1 + '' '' ```  From the code it is clear that if any value was selected, it will be written to the Value property. Now you can run the report and enjoy your work: Choose "South America". Then get a detailed report with information of the number of people by country: If you need to change the color of the selection of the chart element when hovering - use the HighlightColor property of the Chart object. Summing up, we can conclude that the fifth version of FastReport VCL allows to select individual chart elements and get their meanings. Also, the functionality of hyperlinks has expanded significantly comparing to a single URL. Thanks to these changes, one can easily make reports compact and attractive by hiding detailed information.  Tags: VCL, VCL, FastReport, FastReport ### How to make an interactive report with a detailed page in FastReport VCL 5 URL: https://www.fast-report.com/blogs/interactive-report-detailed-page-vcl There have been many innovations in FastReport VCL 5 recently. One of them is new hyperlink options. Now a hyperlink can point on the other report or a report page. Due to this option, we can make interactive reports. An example of such a report with hyperlinks detailing the report is shown in the article "How to make an interactive chart in FastReport VCL5». This time we will consider another option - a hyperlink to the detailing page. Here we go! Create a simple report with a list of customers. 1) On the Data tab, add the ADO database component. By double-clicking on the added object, open the connection editor. We configure the connection to the demo.mdb database from the delivery. Data Provider - Microsoft Jet OLEDB 4.0 Provider. The database file is located in the folder C: \ Program Files (x86) \ FastReport 5 VCL Enterprise \ Demos \ Main \ demo.mdb. Now place the ADO Query component. In its SQL property, enter the query: ``` SELECT * FROM customer a, orders b, items c, parts d WHERE a.custno = b.custno AND b.orderno = c.orderno AND c.partno = d.partno ORDER BY a.company, b.orderno ```  2) Go to Page1 (a report page). In addition to already existing bands Report Title and MasterData, we need a GroupHeader. Add it. In this case  you will be asked to configure the grouping. Select the CustNo field: From the data source, drag the following fields to the "Group header" band: Company, Phone, Fax. Below we have the MasterData band. Double click on it and select an available data source: We will not display data in this band. We use it only for a data source for grouping. We set the band's Visible property to false. Here you are what happens next: 3) Now start creating a detail page, where we will display detailed information for the group, selected on the first page. For this, add one more page to the report, using the icon  in the top toolbar. The page is empty. Add the following bands to it: GroupHeader, one more GroupHeader, MasterData, GroupFooter. For the first group header, select the grouping field - CustNo. For the second one – OrderNo. For the MasterData band, select an available data source. We will place the following fields: Company, Phone and Fax on the first band GroupHeader . As you might have noticed, this grouping matches with the grouping on the first page of the report. Now change the background color and add the titles. On the second band "GroupHeader" we place the fields: OrderNo and SaleDate. In the same band, display the headings for the fields in the MasterData band: Part, Description, Price, Qty, Total. Finally, we place the fields on the MasterData band: PartNo, Description, ListPrice, Qty. And for Total, we add the following expression: [ * ] Now the MasterData band looks like this:  In the GroupFooter band add a text field and enter the following expression: Total: [Sum ( * )] As you understand, this is the sum of all results. The overall result is: 4)      You need to create the SelectedValue variable in the report. We will save the name of the selected company on the first page in it. Then we will filter the data on the second page: 5) Double-click the MasterData band. In the Filter field, enter the expression: = 6) Let us move to the first page. We need the Company field in the MasterData band. Select it. In the Property inspector, find a Hyperlink and expand it. Since a detailed report is on the second page, in the DetailPage property, we write Page2. In the Expression property, we specify an expression to be passed to the report variable. Next, we set the type of the hyperlink in the Kind property. The value of hkDetailPage. Then, we enter the name of the SelectedValue report variable in the ReportVariable property. Now run the report: Choose a name of a company: This way we get a detailed report. Now we can conclude, that instead of the second page in your report, you can use a separate report. But if you do not like individual files and think, that a report should be self-sufficient, then an option with detailing page is for you. Tags: .NET, .NET, VCL, VCL, FastReport, FastReport, Interactivity, Interactivity, Report, Report ### How to make an interactive report with toggle sorting URL: https://www.fast-report.com/blogs/interactive-toggle-sorting Summary: Steb-by-step tutorial on creating an interactive report where the order of data sorting can be changed after querying Steb-by-step tutorial on creating an interactive report where the order of data sorting can be changed after querying Steb-by-step tutorial on creating an interactive report where the order of data sorting can be changed after querying Occasionally, our users face the task of making an interactive report. It may be a report where the order of data sorting can be changed after querying. Today, we will consider the process of creating such a report. Let us assume that we have a ready file with configured sorting. As an example, we will take a Simple List report from the FastReport .NET demo application. The report has a configured sorting: First, the bands are sorted by name, then by surname. Sorting is carried out in the ascending order, that is, from A to Я in the case of the Cyrillic font, or from A to Z in the case of the Roman one. Now we add interactivity to our report. Select a text object – a title, for example, and add an event handler Click. Thus, after clicking on the object, the preview shows the function, which we will configure. Also, we change the Cursor property to Hand, so that the cursor changes into a hand when pointing at an object. Thus it becomes apparent that the object is clickable. Let us see how sorting works in FastReport so that we are able to write the function code. Data sorting is stored as a collection of values. There are several options to implement sort changing, but all of them are reduced to modifying this collection. If we look at sorting in the code, we will see a list of methods and properties. We will work with the properties Descending and Expression. The Expression property coincides with the “Sort by…” field in the designer, while the Descending property coincides with the “ascending/descending order” toggle. Note that only three sorting rules can be configured from the designer, while an unlimited number of them can be added from the code. Accordingly, the designer does not support more than three rules. When opening the band properties with four saved rules, the first three of them will be shown, and only they will be saved after changing. The order of sorting rules begins with the rule with the index 0; then the rule with the index 1 is applied, and so on. In our case, the Sort collection has two values: 1) Expression = [Employees.FirstName], Descending = false 2) Expression = [Employees.LastName], Descending = false Now, we start writing the code. We add the “sorting” variable, which will set the order of sorting: ``` bool sorting = false; ``` To change the order of sorting, one has to change the Descending property. We will change it for the zero element of the Sort collection, then the Sorting is inverted and the report is updated: ``` private void Text1_Click(object sender, EventArgs e) { Data1.Sort[0].Descending = sorting; sorting = !sorting; Report.Refresh(); } ``` If we launch the report and click the title – “EMPLOYEES” – we will see the following: As you can see, sorting was inverted; the final records are now in the first positions. It is worth noting that the Sort collection can be not only modified, but also its elements can be added or removed. For example, the sort change can be done in a different way: ``` private void Text1_Click(object sender, EventArgs e) { Data1.Clear(); Data1.Sort.Add(new Sort("[Employees.FirstName]", false)); Data1.Sort.Add(new Sort("[Employees.LastName]", sorting)); sorting = !sorting; Report.Refresh(); } ``` In this code, we clear the collection and add two new sorting rules into it, one of them with a changeable property. Thus, we have examined how sorting can be changed from the script. Besides changing the sorting by a click, you may use the above functions in combination with others. For example, you may change a band sorting by clicking a button in a dialogue tab, making an interactive list of fields of a data source, or change sorting depending on any other value. Tags: .NET, .NET, FastReport, FastReport, Interactivity, Interactivity, Filtering, Filtering ### How to make auto creation of aliases for database field URL: https://www.fast-report.com/blogs/automatic-creation-aliases-database-fields Summary: Let's take a closer look at how to Automatically Create Aliases for Database Fields in FastReport works. Find more usefull tips and acticles in our blog. Let's take a closer look at how to Automatically Create Aliases for Database Fields in FastReport works. Find more usefull tips and acticles in our blog. Let's take a closer look at how to Automatically Create Aliases for Database Fields in FastReport works. Find more usefull tips and acticles in our blog. Sometimes with some data sources we have to create aliases for the table fields. This happens when the field names are not understood intuitively or their native language is not used in their naming. For the convenience of working with such a database, FastReport .NET allows you to create aliases. But it is inconvenient to create them manually since every time you have to create a new report. So I'll show you how to create aliases in the code. This allows you to use this data source in multiple reports. To demonstrate it, I'll create an application with German localization. That is, the interface and the field names are in German. Keep in mind that data source with aliases should be accessible when you create a report using the File-> New menu. In order to do this, we need listen for the event of selection menu New item. Let's use a Windows Forms application. Add two buttons to the form. The first button launches the designer with a blank report. Second - opens a demo account in the designer. Add the libraries: ``` using FastReport; using FastReport.Utils; using FastReport.Data; using FastReport.Design; using FastReport.Wizards; using System.IO; ```  First of all, create a procedure for registering a data source for the report: ``` private void RegisterData(Report report) { // cteate any DataSet DataSet dataSet = new DataSet(); dataSet.ReadXml(Path.Combine(appPath, "nwind.xml"));   // register data source in the report report.RegisterData(dataSet, "NorthWind");   // Loop through the tables. Override aliases have necessary tables. Activate visibility of the tables foreach (DataSourceBase dsItem in report.Dictionary.DataSources) { if (dsItem.Name == "Employees") { dsItem.Enabled = true; dsItem.Alias = "Mitarbeiter"; dsItem.Columns.FindByName("EmployeeID").Alias = "Identifier"; dsItem.Columns.FindByName("LastName").Alias = "Nachname"; dsItem.Columns.FindByName("FirstName").Alias = "Vorname"; dsItem.Columns.FindByName("Title").Alias = "City"; dsItem.Columns.FindByName("TitleOfCourtesy").Alias = "Titel"; dsItem.Columns.FindByName("BirthDate").Alias = "Geburtsdatum"; dsItem.Columns.FindByName("HireDate").Alias = "Datum der Beschäftigung"; dsItem.Columns.FindByName("Address").Alias = "Anschrift"; dsItem.Columns.FindByName("City").Alias = "Stadt"; dsItem.Columns.FindByName("Region").Alias = "Bereich"; dsItem.Columns.FindByName("PostalCode").Alias = "Index"; dsItem.Columns.FindByName("Country").Alias = "Land"; dsItem.Columns.FindByName("HomePhone").Alias = "Haustelefon"; dsItem.Columns.FindByName("Extension").Alias = "Area Code"; dsItem.Columns.FindByName("Photo").Alias = "Photographie"; dsItem.Columns.FindByName("Notes").Alias = "Hinweise"; dsItem.Columns.FindByName("ReportsTo").Alias = "Vorlage"; } }   // set report parameters report.SetParameterValue("Die Testparameter 1", "Der Parameter 1 vor dem Aufruf des Berichts"); report.SetParameterValue("Parameter 2", "\"Der Parameter 2 Standard\""); } ```  As you can see, we have created a DataSet. Then, we loaded XML database into it. Then, registered the data source in the report. In the cycle in the data source we find the “Employees “ table. Enable it (Enabled = true). We made it for the table to appear in the designer’s data window. Now we assign an alias to each field of the table - the name of the German language. Handling the designer load event: ``` private string appPath;   private void Designer_Load(object sender, EventArgs e) { appPath = Path.GetDirectoryName(Application.ExecutablePath); // load the German local for designer Res.LoadLocale(Path.Combine(appPath, "German.frl")); // intercept the load event of designer for further overriding the event handlers Config.DesignerSettings.DesignerLoaded += DesignerSettings_DesignerLoaded; } ```  Set localization language in the designer resources - in this case German. Then assign the event handler DesignerLoaded to our own event, which we write below. Write a handler for DesignerLoaded: ``` // load event of designer private void DesignerSettings_DesignerLoaded(object sender, EventArgs e) { // intercept action of creating a new report for the registration of our sources and parameters (sender as Designer).cmdNew.CustomAction += new EventHandler(cmdNew_CustomAction);   // except cmdNew. Similarly, you can intercept other Designer.cmd * and do anything inside, // for example, load report from database field and save it back } ```  Here, we assign the event of New menu selection our handler. This is a way of intercepting the event. We write the handler to select the menu item New: ``` void cmdNew_CustomAction(object sender, EventArgs e) { Designer designer = sender as Designer; // Use blank wizard to create blank report BlankReportWizard wizard = new BlankReportWizard(); //StandardReportWizard wizard = new StandardReportWizard(); // you can use other wizards // run wizard wizard.Run(designer); // register our data and parameters RegisterData(designer.Report); // update data tree designer.SetModified(this, "EditData"); } ``` Here we use a blank designer. Create an instance of Blank Report Wizard. As the name implies – it’s a blank report. Then we run the designer, registering a data source and update the data tree in the data window. It's time to create handlers for the two buttons. The button of creation a new report:      ``` // create new report private void btnNewReport_Click(object sender, EventArgs e) { using (Report report = new Report()) { RegisterData(report); report.Design(); } } ```  Here, the report object is created. The data is recorded for it. Run the designer. The button of report editing. Basically, it’s the same thing, but add the loading of existing report:     ``` // edit report private void btnLoadReport_Click(object sender, EventArgs e) { using (Report report = new Report()) { report.Load(Path.Combine(appPath, "report.frx")); RegisterData(report); report.Design(); } } ```  Do not forget that in the folder with the executable file there should be: the report, the database file and the locale (German.frl). Run the application. Click on the second button. We get the report template. Let us open a data source in the tree: All fields, as well as the table name, are displayed in German, thanks to aliases. Now, create a new blank report using the File-> New menu. Once again, we see our data source alias. We have created a data source and assigned aliases to the table fields. Now we can use this source in this form in any report. By using aliases it is much easier to create reports for people who are not familiar with the field names in a particular database. You can use aliases only once in the database, and get rid of the many questions from the report developers. And lastly the report itself: Tags: .NET, FastReport, Data Source ### How to make auto refreshable web reports URL: https://www.fast-report.com/blogs/make-auto-refreshable-web-reports When there is a need to reflect the current situation in your enterprise with the help of web reports, you might need to update information automatically on a site without any user's involvement. If you use more than one of these reports with auto refresh function on a single page of a web site, you get the “Dashboard”. Fortunately, FastReport provides auto refresh of a report by timeout.  Let us take a close look at the following example of my report “Date” that displays the current date and time.  By this means we can see the time of the report refreshing. Create a simple web report. Add a data source to the web form - the component “SQLDataSource”. From the drop - down menu select “ConfigureDataSource”. Set the connection to the database. Now place the “WebReport” component on the web form. Select the item “Select Data Source” from the drop - down menu. Choose the only available option. From the drop - down menu select "Design Report " Create a simple report.  The system variable Date was added to the title of the report: Close the report editor. Disable the toolbar of the report window.  In “WebReport” object you should set “ShowToolbar” property to “false”. Set “RefreshTimeout” property. In this property the refresh period is set. For example, set the interval 5. Time is set in seconds. Run the application: Wait for 5 seconds: By this means it is possible to update information in a report continually. This can be useful when displaying statistical data or displaying information in the form of graphs. FastReport provides the opportunity to solve the problem of displaying dynamic information. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport ### How to make columns highlighting, depending on the value of the column URL: https://www.fast-report.com/blogs/highlighting-columns-depending-on-value Matrix reports are a great tool for analyzing data. In essence, the matrix in analytical reports is a summary table. "Conditional allocation” is often used to facilitate the analysis. This is a regular tool in FastReport.Net. Conditional highlighting implies highlighting the data cells with color, font, or icons, depending on a given condition. But, conditional highlighting works with individual cells. But what if we want to select entire columns depending on the value in the header? For example, to highlight the weekends. In this case, you will have to resort to the "omnipotent" script of the report, regular color highlighting will not help here. Create a template with a matrix based on the MatrixDemo table from the nwind.xml demo database: The idea is to find columns with values in the headers that satisfy the condition. In this matrix, we derive the income of employees by year. Let's make a highlighting of columns with headers 2012 and 2014. To do this, we need to highlight the heading in this column and all subsequent cells, including the total. Create the BeforePrint event for the matrix: ``` // List of selected columns private List markedColumns; // Counter for columns in the first row private int firstLineColumn; // Counter for columns in the following lines private int secondLineColumn;     // Matrix event handler private void Matrix2_BeforePrint(object sender, EventArgs e) { // Create a new list for selected columns markedColumns = new List(); // Reset the first row counter firstLineColumn = 0; // Reset the next row count secondLineColumn = 0; } ```  In the beginning, we added several variables that we will use in event handlers. These variables store marked columns for rows. Further, before displaying the matrix, we initialize the variables. Create another handler for the BeforePrint event for the cell with the value of [Year]: ``` // Event handler for cells in the first row of the matrix private void Cell18_BeforePrint(object sender, EventArgs e) { // Use sender as TableCell TableCell cell = sender as TableCell; // Check the required value in the cell if (cell.Text == "2012" || cell.Text == "2014") { // Sets the fill color for this cell. cell.FillColor = Color.Brown; // Save to selected list of columns markedColumns.Add(firstLineColumn); } // Increase column count for first row firstLineColumn++; } ```  Here I need to make a small remark so that you understand the essence of what is happening. The point is that the matrix output when building a report in FastReport is done line by line. Therefore, we save the column numbers for the first row of the matrix. In our case 2 values will fall into the list of marked columns. Now add an event handler for the cell with the value [Revenue]: ``` // The event handler for the cells in the following rows of the matrix. You need to set it for the second row and the totals. private void Cell21_BeforePrint(object sender, EventArgs e) { // Use sender as TableCell TableCell cell = sender as TableCell; // Find the current index in the markedColumns list if (markedColumns.IndexOf(secondLineColumn) != -1) { // Sets the fill color for this cell. cell.FillColor = Color.Red; } // Increase counter secondLineColumn++; // Reset counter for next row if (secondLineColumn >= firstLineColumn) secondLineColumn = 0; ```  In this handler, we find the columns corresponding to the selected columns from the first row and paint their cells in red. Upon reaching the last column, reset the variable for the next line. As you understand, when building a report, the second row of the matrix is dynamic. This means that it will be displayed for each row of data in the source. Therefore, we need to check each row and color the cells in the correct columns. The solution given in the script is unusual, but the only possible one for this situation, because the matrix is built dynamically and does not store the final structure, coordinates and positions of the cells until it is directly drawn on the sheet. Only the template (the one we see in the designer) and the text values of the matrix headers are stored in memory. Therefore, we have to go through all the rows and memorize the columns for coloring. According to the script, we had to create three event handler BeforePrint for the matrix, the cell [Year] and the cell [Revenue]. But, in our matrix there is another, third row. It displays the results, and it would be good to paint them as well according to the selected columns. To do this, for the cell located under [Revenue], simply hook the BeforeFrint event handler from the same [Revenue]: And now, run the report:     If you want to paint the totals in a different color, you will have to create your own BeforePrint event handler for the cell of the totals, similar to the handler for the [Revenue] cell. Tags: .NET, .NET, FastReport, FastReport ### How to make custom ToolBar in report preview URL: https://www.fast-report.com/blogs/custom-toolbar Summary: We will discuss how to remove unnecessary buttons and add your own "features" to the toolbar FastReport .NET. We will discuss how to remove unnecessary buttons and add your own "features" to the toolbar FastReport .NET. We will discuss how to remove unnecessary buttons and add your own "features" to the toolbar FastReport .NET. Most report generators have a report-viewing mode with a toolbar from which you can make various manipulations of the report. For example, flipping through pages, printing, exporting and more. However, sometimes there is not enough buttons with any functionality. This can be a quick export to some format, or sending a report to a review, or maybe you might want to do a mass mailing of the report. Either way, the standard toolbar FastReport.Net does not allow you to add your custom features. But the developers have provided the possibility of creating their own preview mode. And it is great, not everyone likes the standard Preview. Many would love to remove some unnecessary buttons, but would add their own “features”. Therefore, let's look at how to quickly and easily make your Preview for reports. All features from the standard preview mode are available to us in the FastReport.dll library. Let's take a look at this example. A typical Windows Forms application. We are connecting FastReport.dll library to it. On the form we add the toolbar component ToolStrip and PreviewControl - a standard report viewer. This component already has its own toolbar, but it's easy to hide in the toolbar properties. On the toolbar, we created buttons with the necessary functionality: Open the report, print, export, flipping pages and a special button with its functionality. It will keep a report in csv format in the specified folder. Such a QuickSave. Suppose we often use this particular functionality, so we moved it to a separate button. Now let's look at the application code: ``` public partial class Form1 : Form { private Report FReport; private DataSet FDataSet;   public Form1() { InitializeComponent(); }   private void LoadBtn_Click(object sender, EventArgs e) { FReport = new Report(); FReport.Preview = previewControl1;   using (OpenFileDialog file = new OpenFileDialog()) { if (file.ShowDialog() == DialogResult.OK) { FDataSet = new DataSet(); FDataSet.ReadXml("K:/My documents/nwind.xml"); FReport.Load(file.FileName); FReport.RegisterData(FDataSet, "NorthWind"); FReport.Prepare(); FReport.ShowPrepared(); } } } ```  Download report button opens a standard File Open dialog window. Then we upload the database to a data source, upload the selected report template in the report object, register it as a source of data to collect and display the report in the component Preview. ``` private void SaveBtn_Click(object sender, EventArgs e) { SaveBtn.DropDownItems.Clear(); List list = new List(); RegisteredObjects.Objects.EnumItems(list);   ToolStripMenuItem saveNative = new ToolStripMenuItem("Save to .fpx file..."); saveNative.Click += new EventHandler(item_Click); SaveBtn.DropDownItems.Add(saveNative);   foreach (ObjectInfo info in list) { if (info.Object != null && info.Object.IsSubclassOf(typeof(ExportBase))) { ToolStripMenuItem item = new ToolStripMenuItem(Res.TryGet(info.Text) + "..."); item.Tag = info; item.Click += new EventHandler(item_Click); if (info.ImageIndex != -1) item.Image = Res.GetImage(info.ImageIndex); SaveBtn.DropDownItems.Add(item); } } } ```  Export/ save button actually has a drop-down list with a variety of export formats. First, I clear the drop-down list, and create a list of objects for export. Loading the list of all registered objects. Then, I add the first element to the list of exports - exports native format, i.e. fpx format. All the other available formats are added to the list in a loop. Some of the exports have picture. Each element of the list is assigned to item_Click event that handles pressing the item. ``` private void item_Click(object sender, EventArgs e) { ObjectInfo info = (sender as ToolStripMenuItem).Tag as ObjectInfo; if (info == null) { previewControl1.Save(); } else { ExportBase export = Activator.CreateInstance(info.Object) as ExportBase; export.CurPage = previewControl1.PageNo; export.Export(previewControl1.Report); } } ```  The event handler item_Click is exporting the report, which is currently displayed in the Preview component. ``` private void PrintBtn_Click(object sender, EventArgs e) { previewControl1.Print(); } ``` Print button opens PrintDoc dialog window. ``` private void FirstBtn_Click(object sender, EventArgs e) { previewControl1.First(); } ```  “First” button shows the first page of the report.       ``` private void PrevBtn_Click(object sender, EventArgs e) { previewControl1.Prior(); } ```  “Prev” button shows the previous page of the report. ``` private void NextBtn_Click(object sender, EventArgs e) { previewControl1.Next(); } ```  “Next” button shows the next page of the report. ``` private void LastBtn_Click(object sender, EventArgs e) { previewControl1.Last(); } ```  And finally “Last” button shows the last page of the report.        ``` private void PageNo_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Enter) { previewControl1.PageNo = int.Parse(PageNo.Text); } } ```  The text field between buttons shows the number of the current page. Changing this value you can switch between the report pages. ``` private void PreviewControl1_PageChanged(object sender, EventArgs e) { PageNo.Text = previewControl1.PageNo.ToString(); } ```  But if to switch between pages using buttons the page number in the text field will change as well. According to page change event in Preview component. ``` private void QuickSaveCSVBtn_Click(object sender, EventArgs e) { FastReport.Export.Csv.CSVExport ex = new FastReport.Export.Csv.CSVExport(); FReport.Export(ex, "Text.csv"); } ```  In conclusion - our custom button. Its functionality is taken from nowhere, just for demonstration. It saves a report in csv format. Thus you can make a convenient report viewer for yourself or the customer, providing it with the necessary functions. Dream on additional features in the Preview can be infinite, the main thing that the developers have given us this opportunity. And if you want to use your preview component when displaying reports from the application code, we use the following code: ``` CusomPreviewForm prev = new CusomPreviewForm (); Report report = new Report(); report.Load("K:/My documents/lines.frx"); report.Preview = prev.previewControl1; report.Show(); prev.ShowDialog(); ```  Here we override the view component of the report. Telling truth we had to make previewControl1 public. That's all. I hope you take advantage of this great opportunity, how to make a custom viewer reports. Tags: .NET, .NET, FastReport, FastReport ### How to make label type report in FastReport VCL URL: https://www.fast-report.com/blogs/label-type-report-vcl Printing labels is one sphere of application of report generators. In this article, we will look at some aspects of creating a report with labels. In label reports, data headers are usually placed in a column, rather than in a row, as usual. What does it mean? I will show you by an example. Here is an ordinary list of data output row by row: And here is the columned placement of data: As you can see, the main point of the report with the labels is to form a label of the right size and content. To do this, you must specify the size of the report page according to the size of the label. Let's look at the example. Create an empty report with one MasterData band. Our goal is to make business cards. Since the report consists of one band, the size of the business card will be equal to the size of this band. Let's set the height of the MasterData band in the Property inspector. Set the value to 4.5 cm. To specify the width of the band, we need to use a division into columns. To split a page into columns, open the File -> Page Properties menu. On the Other options tab, set the number of columns to 2. You can also change the width of the columns. For example, we set 8.84 cm. At the same time, the band became already more than the half page of the report. You can adjust the position of the band in the Positions property. And now we will create not a complicated business card template: Since we do not use the database in the MasterData band, we need to manually set the number of records in the properties of the band. In our case - RowCount = 12. Let's look at the report in the preview mode: As you can see, all 12 labels fit one report page, which (in our case) is printed in A4 format. If you use data from the database, you should leave the RowCount property for the MasterData band to 0. Tags: VCL, VCL, Lazarus, Lazarus, FastReport, FastReport, Report, Report, Delphi, Delphi ### How to make lottery tickets by FastReport .NET URL: https://www.fast-report.com/blogs/lottery-tickets-net Suppose you decided to hold a lottery in the office and you have only FastReport.Net at hand. It is necessary to create two sets of tickets with unique numbers. The first set for users, the second for the lottery. We will generate unique numbers for the lottery in the report script and use them as data sources. Let's get started. Run the report designer. Now we do not have data for the report yet. Go to the Code tab (Code). I made the list of numbers global: ``` private List num = new List(); ```  We create a method for generating unique numbers: ``` private void RandomShaffle() { const int n = 20; // A series of 20 tickets Random r = new Random(10); int curnumber = 0; for(int i = 0; i < n ; i ++) { curnumber = r.Next(100000, 999999); // Generate a number in a given range if (!num.Contains(curnumber)) // Check the list of numbers for a match with the current one num.Add(curnumber); // Add to list else i--; // We roll back the iteration backward } } ```  We specify the number of tickets n in the party. And also, the range in which to generate a number. I want six-digit numbers, so I specified a range from 100000 to 999999. Now, select the Report object in the Property inspector:  For it, we create a ReportStart event: In the event handler, we generate a list of numbers and register it in the report as a data source. ``` private void _StartReport(object sender, EventArgs e) { RandomShaffle(); Report.RegisterData(num, "Numbers"); } ```  It's time to create a report template. Now the report still does not know anything about the data source that we are preparing for it. Let's run the report for execution as is. Of course, we will get an empty page. Go back to editing the page. Now we can select the data source: Create a simple template with two tickets on the data band: Run the report:  And see the list of tickets. It remains to print them and cut them. Tags: .NET, .NET, FastReport, FastReport, Desktop, Desktop ### How to make PDF on Raspberry PI with .NET Core URL: https://www.fast-report.com/blogs/creating-pdf-on-raspberry-pi Summary: Very pleased with the ability to run .NET Core applications on ARM32 / ARM64 platforms. Server manufacturers have already begun selling hardware platforms on ARM processors. Well, now we have the opportunity to practice on the Raspberry PI with an eye on the server. Very pleased with the ability to run .NET Core applications on ARM32 / ARM64 platforms. Server manufacturers have already begun selling hardware platforms on ARM processors. Well, now we have the opportunity to practice on the Raspberry PI with an eye on the server. Very pleased with the ability to run .NET Core applications on ARM32 / ARM64 platforms. Server manufacturers have already begun selling hardware platforms on ARM processors. Well, now we have the opportunity to practice on the Raspberry PI with an eye on the server. Raspberry PI is a miniature single-board computer with ARM processor. This microcomputer is often used as an educational platform or for development of embedded solutions. For our experiments we use Raspberry PI 3B board with 1GB of RAM and the installed Linux Raspbian Buster with desktop operating system. I will omit the installation and configuration of the system - we will assume that everything is already installed and working for you. Despite its tiny size, we are using a computer with powerful  capabilities. Let's try to install the .NET Core framework on it and write a simple C # application that will generate a PDF document. Firstly, we need to connect to the Raspberry via SSH or open the terminal application on the desktop if you connected the board to the monitors and keyboard. Of course, the board must be connected to the Internet to install the components we need. The Raspbian operating system supports the execution of .NET Core applications for the ARM32 architecture. A link to the .NET Core SDK can be found on the official download page . Download and unzip the archive: ``` $ sudo wget https://download.visualstudio.microsoft.com/download/pr/f2e1cb4a-0c70-49b6-871c-ebdea5ebf09d/acb1ea0c0dbaface9e19796083fe1a6b/dotnet-sdk-3.1.300-linux-arm.tar.gz $ mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.1.300-linux-arm.tar.gz -C $HOME/dotnet ``` Then we need to add the path to the .NET Core folder in the PATH environment variable and also create the DOTNET_ROOT variable: ``` $ export DOTNET_ROOT=$HOME/dotnet $ export PATH=$PATH:$HOME/dotnet ``` Last lines are best added to the user profile configuration file: ~/.bash_profile, ~/.bashrc, ~/.kshrc, ~/.profile, ~/.zshrc, ~/.zprofile. Correct installation of the .NET Core SDK can be verified by the following command: ``` $ dotnet --info .NET Core SDK (reflecting any global.json): Version: 3.1.300 Commit: b2475c1295   Runtime Environment: OS Name: raspbian OS Version: 10 OS Platform: Linux RID: linux-arm Base Path: /home/pi/dotnet/sdk/3.1.300/   Host (useful for support): Version: 3.1.4 Commit: 0c2e69caa6   .NET Core SDKs installed: 3.1.300 [/home/pi/dotnet/sdk]   .NET Core runtimes installed: Microsoft.AspNetCore.App 3.1.4 [/home/pi/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 3.1.4 [/home/pi/dotnet/shared/Microsoft.NETCore.App]   To install additional .NET Core runtimes or SDKs: https://aka.ms/dotnet-download ``` For further work you need to install the additional packages (all the rest are already installed with Linux Raspbian Buster with desktop): ``` $ sudo apt-get install libgdiplus $ sudo wget http://ftp.de.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb $ sudo apt-get install -y ttf-mscorefonts-installer_3.6_all.deb ``` We installed the font set that comes with Windows, so the applications will look similar on both Windows and Linux. Now you can create our application. Let's run the command: ``` $ dotnet new console -o testpdf ``` We see a template of the console application with the files testpdf.csproj and Program.cs in the testpdf folder. Replace the code of testpdf.csproj file: ``` Exe netcoreapp3.1     ``` File contains links to the Nuget FastReport.Core and FastReport.Compat packages. They will be downloaded during the build process and placed in the ~/.nuget/packages. The Program.cs file should be replaced with the following code: ``` using System; using FastReport; using FastReport.Export.Pdf; using FastReport.Utils;   namespace testpdf { class Program { static void Main() { Console.WriteLine("Test FastReport Core"); // create report object using Report report = new Report(); // create page using ReportPage page = new ReportPage(); // add page in report report.Pages.Add(page); // create band page.ReportTitle = new ReportTitleBand() { Height = Units.Centimeters * 10 }; // create text object placed on band using TextObject text = new TextObject() { Left = Units.Centimeters * 7, Top = Units.Centimeters * 5, Font = new System.Drawing.Font("Arial", 24), CanGrow = true, AutoWidth = true, Text = "Hello Raspberry!", Parent = page.ReportTitle };   // make the document report.Prepare(); // save the document as PDF file using PDFExport pdf = new PDFExport(); report.Export(pdf, "file.pdf"); } } } ``` The code creates a report instance, adds a page to it, and a band on it. Then a text object is created at the coordinates Left and Top. The CanGrow and AutoWidth properties allow the object to automatically calculate height and width depending on the size of the text. Creating objects in program code is not the only way to generate documents. You can use the Designer.exe template editor bundled with FastReport .NET. The file with the *.frx extension generated by the editor can then be loaded using the Report.Load method. In the xml template you can specify bindings to user data, variables, use built-in and user-defined functions. You can learn more about capabilities of FastReport .NET on the official website. After preparing the document we save it to a PDF file. All objects used in the code contain many properties that affect their behavior in the document. More details can be found in documentation for the FastReport .NET product. Let's run the program: ``` $ dotnet run ``` If everything is done and all the necessary packages are installed, we will get the file.pdf. Otherwise you need to read the text of the errors and eliminate them. The resulting PDF file is fully compliant with the standard, contains text and an embedded font. Text can be selected and copied to another document. In the upper left corner of the page there is text indicating that we used the demo version of FastReport .NET Core. The maximum number of pages in the demo version is limited to five. The commercial version of FastReport .NET does not contain these restrictions. It can be purchased at Fast Reports Home Site . There is a way to get a similar PDF file without the DEMO VERSION label absolutely for free. You can use the FastReport Open Source product . Let's change the csproj file and ItemGroup section: ``` ``` The file Program.cs needs to be changed as follows: ``` using System; using FastReport; using FastReport.Export.PdfSimple; using FastReport.Utils;   namespace testpdf { class Program { static void Main() { Console.WriteLine("Test FastReport Open Source");   // ... // same code here ... // ...   // save the document as PDF file using PDFSimpleExport pdf = new PDFSimpleExport(); report.Export(pdf, "file.pdf"); } } } ``` Then we run the program with the dotnet run command and get a PDF without  the “demo version” label and any restrictions on the number of pages. Unfortunately, there is a significant drawback of the Open Source version: inside PDF files contain the images instead of text. Copying such text will not work and the file size will be significantly larger. For simple applications this should be enough. When creating a PDF using FastReport Open Source, you may encounter the problem of rendering characters as empty squares. This .NET Core bug has long been fixed for x86 and x64 platforms. In our case you need to wait for a fix in the latest .NET Core builds or use the .NET Core SDK 2.2. I am very pleased with the ability to run .NET Core applications on ARM32 / ARM64 platforms. Server manufacturers have already begun selling hardware platforms on ARM processors . It is possible that in the very near future we will see an increase in the popularity of ARM Bare-Metal offers on hosting providers. Well, now we have the opportunity to practice on the Raspberry PI with an eye on the server. The examples described in the article can be found in my profile on GitHub . Tags: .NET, .NET, FastReport, FastReport, Linux, Linux, Core, Core, PDF, PDF ### How to make price tags with product composition in FastReport VCL URL: https://www.fast-report.com/blogs/price-tags-vcl Summary: Starting from version 2023.3, another powerful tool has been added to the FastReport VCL reporting engine – text reduction in the Text object. Starting from version 2023.3, another powerful tool has been added to the FastReport VCL reporting engine – text reduction in the Text object. Starting from version 2023.3, another powerful tool has been added to the FastReport VCL reporting engine – text reduction in the Text object. When printing labels, price tags, and other formats with limited sizes, there is a challenge where design approaches for such reports are constrained. In such conditions, the text object can only grow to certain sizes, and splitting or migrating the text to another page is not possible. How can we fit product composition and other data on a single label without cutting the information? The answer is simple—to reduce the content! Starting from version 2023.3, we have added to the reporting engine FastReport VCL another powerful tool— reducing the text in the “Text” object by scaling the content. Let’s look at a simple example of a price tag with product ingredients. Such a price tag is printed on prepared paper using a label printer, so there are physical restrictions on the amount of printed text. But the composition can vary from 3 to several dozen words. To create such a report, we will use the function of creating multi-column reports. You can find how to create such a report in the user manual . Let’s use the example of creating a simple report with two columns, as in the figure below. We will not delve into creating a report but will concentrate on the necessary functionality. A ready-made example of a report can be downloaded here . Let’s run the report for the building. As a result, the preview shows that the table contains products whose composition consists of dozens of words, and it does not fit on the price tag with the current font size. The way out of this situation is obviously to reduce the font size. Let’s return to the report designer, select the object and the text that does not fit into the borders, and then open the object inspector. The functionality we need is controlled by the ContentScaleOptions property set. Let’s take a closer look at it. AutoScale —disabled by default, the property sets the auto text scaling mode. casStatic mode enables text to be scaled until it fits within the container or the extreme bounds of the constraints are reached ( Constraints.MaxStepValue and Constraints.MinStepValue properties ). casStatic mode is great for use in a report with price tags, let’s turn it on and run the report for building. Based on the generated report, you can see that the text is scaled not only to reduce its size but also to increase it. This allows you to fill a large container. This may be useful for some reports, but in this case it is unnecessary. Let’s return to the report designer and disable the cstGrow flag for the ContentScaleOptions.ScaleType property. Let’s run the report for the building. Now FastReport VCL prints price tags reducing the font size if the text does not fit into the object. We have achieved the desired result by switching just two properties. The example with labels is one of the most common, but sometimes a band with growing objects needs to be placed on the page without a break. If there are several objects with text on such a band, we can sacrifice the font size in some of them and compress the entire container. Let’s look at how this works using a simple example with random data ( you can download the template here ). In this example, each text object outputs large paragraphs of text, thereby stretching and shifting the underlying objects. After running the report with demo data, the report will look like the screenshot. As you can see, if there is a large amount of text, the band will be divided into two pages (in our case, with a break in the objects). What to do if we need to place the data on one page? The AutoScale mode set to casStatic is not suitable for this case, because objects have a dynamic height, calculated during the report generation. In addition, stretched objects displace the underlying ones. For this case, FastReport VCL has another object scaling mode, enabled by setting the AutoScale to the casDynamic property. Let’s set the AutoScale property of the MainText object to the casDynamic and look at the report rendering result. MainText object is reduced in size, and the entire band fits on one page. But what if you need to proportionally compress text across multiple objects? Let’s set the AutoScale property of the BottomText object to the casDynamic and look at the report-building result. As a result, both objects reduced the font size until the band fit completely on the page. FastReport VCL allows you to control object compression. Each cycle of passing through objects reduces the font in objects by a given step, which is set for the object in the ContentScaleOptions.StepValue property. This will continue until the band fits on the page or the extreme constraints are reached (the Constraints.MaxStepValue and Constraints.MinStepValue properties). In addition, each object can be processed only at a given iteration of passing through the objects. If you want the first two reduction iterations to process only the BottomText object, just set the ContentScaleOptions property. For the Constraints.MinIterationValue method, assign a value of 3 to the MainText object (it will skip the first two iterations). After the report is rendered, it will have the following appearance. As you can see, in the first two iterations, our report engine only compressed the BottomText object, and as a result, its contents are at a smaller scale. Visually, iterations can be represented as follows.  This iterative approach to scaling content (or text) allows the reporting engine to prioritize which objects to compress and in what order to achieve optimal results. This approach can negatively affect the speed of report generation with a large number of objects. Therefore, the number of iterations can be limited at the report engine level by setting the TfrxReport.EngineOptions.ContentScaleMaxIterations property (default 10). Tags: VCL, Lazarus, FastReport, Designer, Report, Preview, Delphi ### How to make regular reports mailing using FR Desktop URL: https://www.fast-report.com/blogs/regular-reports-mailing-desktop Nowadays, users quite often face a task to form periodic reports, send them by e-mail or save in a specific location. Implementing  such tasks is not difficult with our report generator. However, it is necessary to create an application that will work with the report generator. It requires some programming skills and experience in programming field. But what if you do not have such experience, or you do not want to buy expensive licensed development environment (e.g. MS Visual Studio)? FastReport Desktop allows you to solve these issues. This is an independent program complex, that does not require creation of custom applications. Consequently, it does not require programming skills either. Desktop allows to: create reports, configure them on a schedule, export a report to different formats, send an email report, save reports on a local drive or on remote resources. Let us take a close look at this software package. It is presented by five programs: - Designer - a program to create a report template; - Viewer - a program for viewing reports; - Builder - a console program - a Report Builder; - Configurator - a program for creating configuration files, containing instructions of processing a report; - The Scheduler - a program - task scheduler to build reports by schedule. In the diagram there is a technological process of working with FR Desktop: So, our aim is to organize a daily report generating and sending it by e-mail. 1. First, create a report using the designer (Designer). To do this, run an appropriate program. I created a simple report of a Master-Slave type, which displays a list of categories with products. The template looks like this:  Save the report on the local disk. 2. Now, create a configuration file. This file describes the actions, that a builder has to do with a report. Run the program Configurator: Create a new configuration file. To do this, we go through the options on the form and set the required ones. First of all, we select the report file: We skip the next option "Report Parameters". As you understand from the title, it allows you to set values for report parameters. Here is a form for editing report parameters: Next, we can specify the data source for the report. As our report uses an internal data source, we skip this option. This is how the form of connection editing looks like: The next option is "Export". We need a report in PDF format. It is selected by default in the list of available export formats: The "Settings" button allows you to set export options: For example, the "Text in curves" option allows you to draw text in a report, using curves, which makes the process of copying text impossible. You might be asked to choose a place, where to save your report. This is not our task, so you can skip this step. But I will show you a list of possible places to save: The next step is to set the email settings: The report file will be attached to an e-mal. It is necessary to fill in the settings of outgoing e-mail server: On the E-mail tab fill in the message parameters: Now, in the main form, click the "Save" button. It is important to save the configuration on the local disk. Interestingly, that the "Run" button allows you to start the configuration immediately. Close the program and proceed to create a task in the Scheduler. 3. Start the Scheduler:  The interface is simple and straightforward. Add a new task using the "Task" menu: The form of task creation is also intuitive: Sets the name of the task, the configuration file and the trigger. By default, a trigger "Every day" has been selected. For this trigger you need to set the date, time of operation and the frequency of repetition. A set of triggers covers all possible needs: Click the "Create" button. The main form has a new task: So, we see that the task is enabled and the last run is still empty. Now we have to wait for a while. The task has been executed at a specified time. The mark of this has appeared in the "last start time". The report will be formed every day and will be sent at this time. Now, check the mailbox: Here we see an email with our report in PDF format. To sum up, we have overviewed a procedure of making regular reports mailing, using FastReport Desktop, which seeks to ease the process and reduce manual work. Tags: FastReport, FastReport, Desktop, Desktop ### How to make report inheritance in FastReport.NET URL: https://www.fast-report.com/blogs/report-inheritance-fastreport-net Summary: How to make it easier to work with a lot of similar reports? Setting up report inheritance instead of cut-n-paste job. How to make it easier to work with a lot of similar reports? Setting up report inheritance instead of cut-n-paste job. How to make it easier to work with a lot of similar reports? Setting up report inheritance instead of cut-n-paste job. When you are tasked with creating a large number of reports within one corporate style, you face the problem of duplicating some information, design styles in each report. As a rule, public reports (documents) in a company have the same header with name and contact information. Let's say you have 50 templates with the same header. But the company address changes and you need to open each template in the editor and correct it. But if there are not 50 templates, but 100, it's a real headache. Avoiding this problem is helped by the inheritance mechanism, where you have a template that can be used in different reports. Changes to this template will appear in all inherited reports. Report inheritance in FastReport.NET is organized as follows. You start by creating a so-called base report from which you inherit others. This report should contain a template with information common to all inherited reports. For example, it can be a header with the company details. As mentioned above you can modify the base report template and then it will change in all the legacy reports. But you can also edit the information from the base report in the legacy report. These changes will only be saved in that particular report. But what if you have modified an object from the base report in an inherited report and then modified the same object in the base report. In this case, the changes from the base report will be applied to that object, but only those that do not overlap with the changes in the legacy report. For example, if you change the font in a text object in an inherited report, and then set bold spelling for the same object in the base report, both changes will be applied. And if you change the font in the base report too, it will not be reflected in the legacy report, as it has already been changed in it. It is also worth bearing in mind the restrictions on inheriting the report. You may not: Delete and move the base report, otherwise all inherited reports will be damaged. Inherit a report from another inherited report. That is, multiple inheritance is not allowed. Use script, report parameters, "Table" object and "Matrix" object in the base report. Now let's look at an example of creating an inherited report. First you need to create a basic report. For example, it will contain a report template with the title: Save this report with a name containing base, so that it is easier to find amongst the other report templates. To create a legacy report you need to use the legacy report wizard. This is available either in the welcome screen or in the new report window (File->New): The Legacy Report Wizard will only offer you one action - select the base report using the Open File dialog box. Select the base report you have previously created. All elements of the report have a padlock icon. This means that they are inherited from the base report.  Newly added objects will no longer have this icon. Add a data source to our report and place the fields on the "Data" band. For example, you can use the demo data source nwind.xml from FastReport.NET: From the data source we select the Categories and Products tables. These tables are linked by key and so we can easily create a Master-Detail report: As you can see, the added data fields and the Header and DetailData bends do not have a padlock icon. You can always tell the difference between the legacy report objects and the baseline report by this feature. This way you can create a large number of reports in a single style, and then easily edit them all by changing only the basic template. Tags: .NET, .NET, FastReport, FastReport ### How to make simple Web-report in FastReport .NET URL: https://www.fast-report.com/blogs/simple-webreport Web-reports are very much in demand nowadays. Every day we use the Internet and look through dozens or even hundreds of web-pages. Many businesses strive to make their activities more public and the Internet for this could be better instrument. Thus, it is possible to transfer some of the existing reports on the web-site of the company without much fuss. Let's look at how to create a simple Web report based on ASP.Net applications. I created an empty ASP.Net project. We right click on the solution in Solution Explorer. From the context menu, select Add -> New item: Add a Web Form. At the bottom of the workspace switch to design mode:  So, we have a blank web form: Now, add the data source for your report. From the Toolbox, select the component SQLDataSource: And place it on the form. This object has a pull-down menu: From it we select Configure Data Source, to set connection to the database. We were invited to create a connection string. I have used MS Access database: Click OK. In the previous window, click Next. Define the name of the connection: Further on. Select a table and necessary fields: Click Next and Finish. Next, add WebReport component on the form. At the toolbox find WebReport component and drag it to the form. Choose the "Select Data Source" from the drop down menu. And select the one available: Now, from the same drop-down menu, select the item "Edit Report". Runs familiar to us FastReport.Net report designer. Create a simple report - the list of employees. Closing the Report Editor without saving. Note WebReport object properties. At the ReportResourceString property stored template of our report in coded form. Let's start our project and look at the report in the browser: You will agree, it's simple enough. Now you can use web-projects you previously created reports for desktop applications. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport ### How to make the mailing of the report to Email from the database in a WinForms application URL: https://www.fast-report.com/blogs/mailing-report-email-winforms Reports are an integral part of the workflow, and electronic reports - electronic workflow. One of the main mechanisms for distributing electronic reports is e-mail. Perhaps, all modern report generators have a built-in mail client to be able to send a report directly from the program. FastReport.Net is no exception. You can send the report in preview mode, or directly from the code of the user application. This is convenient if you send a report to a single recipient. Although it is possible to add multiple recipients, it is not always suitable. For example, when you want to make a newsletter with the name of the user: "Dear, Ivan Ivanovich ...". Therefore, we consider an example of how to send a report to several recipients, whose addresses and names are taken from the database. First, create a database and a table in it. For example, the database acces in mdb format: Create a WinForms application. Add two buttons and text fields for email settings to the form: The first button will send the report by name, and the second will send the report to the address list. You will understand how this works later, from the code. Each field has a default value; if you wish, you can enter a different value. Create an application data source using the wizard: Following further, we configure the connection string to the database and select the table: Add a link to the FastReport library to the project. We also need a file with a report template, which we will send out. Add it to the project. For example, we will use the report text.frx from the Demo folder. Now create a handler for the Direct email button event: ``` using System; using System.Data; using System.Windows.Forms; using FastReport; using FastReport.Utils; using FastReport.Export.Pdf; using FastReport.Export.Email;   private void SendReport_Click(object sender, EventArgs e) { Config.ReportSettings.ShowProgress = false; //Disable progress window   Report report1 = new Report(); //Create new report object report1.Load(Environment.CurrentDirectory + "/text.frx"); //Load report report1.Prepare(); //Prepare report PDFExport pdf = new PDFExport(); //Cteate PDF export EmailExport email = new EmailExport(); //Create Email export EmailsDataSet ds = new EmailsDataSet(); EmailsDataSetTableAdapters.CustomerTableAdapter adapter = new EmailsDataSetTableAdapters.CustomerTableAdapter(); adapter.Fill(ds.Customer); DataTable table = ds.Customer;   foreach (DataRow row in table.Rows) { SendMessage(report1, pdf, email, row["Email"].ToString(), row["Name"].ToString()); } } ```  Here we first create the report object, load the template into it, create export to PDF and Email. The report will be attached to the letter in PDF format. Next, we create a data source, fill the table with data. We look through the table entries and for each of them we send a letter. Of course, if you have a large mailing list, this method will work slowly. But you can insert in the text of the letter the name of the client. As you have noticed, we have taken out sending the letter to a separate method - SendMessage: ``` public void SendMessage(Report report, PDFExport pdf, EmailExport email, string recipient, string custName) { email.Account.Address = AddressFromTxt.Text; email.Account.Name = SenderNameTxt.Text; email.Account.Host = HostTxt.Text; email.Account.Port = Convert.ToInt16(PortTxt.Text); email.Account.UserName = UserNameTxt.Text; email.Account.Password = PasswordTxt.Text; email.Account.MessageTemplate = "Test"; email.Account.EnableSSL = true; email.Address = recipient; email.Subject = MailSubjectTxt.Text; email.MessageBody = custName is null? MessageTxt.Text : string.Format("Dear, {0}! {1}", custName, MessageTxt.Text); email.Export = pdf; //Set export type email.SendEmail(report); //Send email } ```  And for the Send to all button, let's create an OnClick event handler: ``` private void Send_to_all_Click(object sender, EventArgs e) { Config.ReportSettings.ShowProgress = false; //Disable progress window Report report1 = new Report(); //Create new report object report1.Load(Environment.CurrentDirectory + "/text.frx"); //Load report report1.Prepare(); //Prepare report PDFExport pdf = new PDFExport(); //Cteate PDF export EmailExport email = new EmailExport(); //Create Email export   string emails = ""; EmailsDataSet ds = new EmailsDataSet(); EmailsDataSetTableAdapters.CustomerTableAdapter adapter = new EmailsDataSetTableAdapters.CustomerTableAdapter(); adapter.Fill(ds.Customer); DataTable table = ds.Customer;   foreach (DataRow row in table.Rows) { if (emails == "") emails = row["Email"].ToString(); else emails = emails + ", " + row["Email"].ToString(); } SendMessage(report1, pdf, email, emails, null); MessageBox.Show(emails); } ```  Unlike the previous code, here in the cycle we add addresses to send to a variable, then pass it to the message sending method. This method works much faster than the previous one, especially if the mailing list is large. Judge for yourself, here you send one letter, instead of a set. Thus, the task of sending a report is reduced to exporting to email and sending a letter to each address from the database. Tags: .NET, .NET, FastReport, FastReport ### How to make the table header repeat on each page URL: https://www.fast-report.com/blogs/header-repeat When you display a report on several pages, you will most likely want to display the table headers on each page. This will prevent the user of the report from constantly turning over to the first page in order to understand the purpose of the columns and reduce errors in the perception of information. The lack of headers on every page is very annoying. This concerns not only reports with tables, but also matrix ones. FastReport .Net of course allows you to display headings on each table. The RepeatHeaders option is responsible for this. It must be set to true, although by default it already has this value. For the Matrix object this will be enough. The headings of the matrix will be displayed on each page displaying this matrix. However, there is a nuance with the Table object. It is not enough just to set the RepeatHeaders option to true. You need to set the number of displayed rows for the header in the FixedRows property. This is needed if the table has a multi-level header. By default, this property has a value of 0. Let's consider an example with a table with a two-level header. This is how it looks like by default, that is, with FixedRows = 0: Although the RepeatHeaders property is true, the title on the second page is not displayed. Now install FixedRows = 1: In this case, on the second page we got only the top-level heading. Set the FixedRows property to 2: Tags: .NET, .NET, FastReport, FastReport ### How to make wedding invitations from Excel URL: https://www.fast-report.com/blogs/make-wedding-invitations-from-excel Summary: If you need to make wedding invitations, but do not want to write everything by hand. You can do this with FastReport. If you need to make wedding invitations, but do not want to write everything by hand. You can do this with FastReport. If you need to make wedding invitations, but do not want to write everything by hand. You can do this with FastReport. Do you have a celebration on the occasion of the wedding? Do you need to print a lot of invitations? This can be quite a tedious task. Indeed, in each invitation will have to enter the names of the guests. In this article I will show you how to solve this problem with FastReport. We need to compile an Excel spreadsheet with the names and surnames of the guests being planned. For example, this: One line is the family, namely a male name, female name, surname. Save the file with the extension csv. Now we are going to create a report, open the designer. You must create a new data source in the report. Then we mark all fields of the data source: Then add the Picture object to the Data band. Load the background image in the Picture object editor,: Add a title: Dear Mr. [guests.Husband] and Mrs. [guests.Wife] [guests.Surname]! And the text of the invitation: I am writing you this letter to officially invite you all to the wedding of our daughter Elaine. The wedding to her long term boyfriend Ralph, who all of you already know, will take place at the Methodist church in Madison on 16th October 2014 at 11 am. The result is the following pattern: Run the report in preview mode and get invitations to all guests: After that, you can print the report or export it to one of the available formats, for example, PDF. Tags: .NET, .NET, FastReport, FastReport, Desktop, Desktop, CSV, CSV, Excel, Excel ### How to make ZUGFeRD in FastReport .NET URL: https://www.fast-report.com/blogs/invoicing-with-zugferd-in-fastreport-net Summary: ZUGFeRD is based on structured data, which is implemented using the XML standard. See how to use ZUGFeRD in FastReport. NET. ZUGFeRD is based on structured data, which is implemented using the XML standard. See how to use ZUGFeRD in FastReport. NET. ZUGFeRD is based on structured data, which is implemented using the XML standard. See how to use ZUGFeRD in FastReport. NET. The ZUGFeRD standard was developed in Germany specifically to simplify the process of electronic invoicing. This standard allows you to exchange invoices without a preliminary agreement between the supplier and the recipient of the services or goods. In Germany, this standard extends to everywhere: in small, medium and large businesses, as well as in public institutions. The name of the standard is the abbreviation ZUGFeRD. It stands for "The Unified User Guide developed by the German Forum on Electronic Invoices." EDI (Data Interchange Electronic) - electronic document standard already used in Germany, but it is used only in large companies. The goal of ZUGFeRD is to cover all spheres of activity in the country, whether it be private enterprise or a large automotive concern. This standard is universal and not tied to a particular industry. ZUGFeRD is based on the use of structured data. This is implemented using the XML standard. A human-readable account representation is implemented using the PDF / A standard. The PDF / A-3 format has the ability to include arbitrary types of objects in the document. Due to this, an XML representation of structured invoice data is included in the document. Thus, one document contains both a human-readable representation and a machine-readable one. Advantages of ZUGFeRD before paper workflow: • Saves paper; • saves the time of document transfer; • saves the human resource required to deliver the document; • saves time searching for a document; • Saves space for documents storage, because electronic; • accelerates the process of payment of payment orders, which improves the liquidity of goods; • significantly reduces the percentage of errors in documents, due to the automatic addition to accounting systems; • eliminates the costs of manually adding to databases, thanks to integration with automated accounting systems; • saves time for document approval, thanks to fast delivery. ZUGFeRD supports the following account types: ZUGFeRD Basic: • Commercial invoices (invoices for goods and services) with code 380; • Notifications (for example, requirements for payment of taxes by public authorities) with code 380; • Commercial credit notes (for example, corrected invoices / cancellations) with a negative value (code 380). ZUGFeRD Comfort also supports: • Debit note regarding financial adjustments (code 84); • A credit note associated with financial adjustments with a negative value (code 84). ZUGFeRD Extended also supports: • Self-evaluation accounts (credit note / self-billing procedure in accordance with tax legislation, code 389); • Self-evaluation of credit notes with a negative value (code 389). Now let's look at some details of the ZUGFeRD standard document. As noted above, an XML document is integrated into the PDF file for computer processing of invoices. It is also possible to include the XSD schema into a PDF document. An XML file is always embedded in a PDF document with name "ZUGFeRD-invoice.xml". There is also the option to insert other documents explaining the invoice as additional files. Here is a typical invoice in the form of an XML part of the ZUGFeRD document: ``` 1 1.0000 1.0000 100.0000 VAT S 19.00 100.00 ZS997 Citric acid 100 ml ```  Let's now consider an example of using FastReport.Net to generate ZUGFeRD invoices. You can find it in the folder "J: \ Program Files (x86) \ FastReports \ FastReport.Net \ Demos \ C # \ ZUGFeRD". The project is a common WinForms application. The form contains an input field and two buttons: One of the buttons allows you to specify the path to the file using the standard file open dialog. The second button starts the procedure for generating the ZUGFeRD document. Consider the code for the entire form class: Program code: ``` using FastReport; using FastReport.Export.Pdf; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms;   namespace ZUGFeRD { public partial class MainForm : Form { private string appPath; // Path to the folder with the executable file of the application   public MainForm() { InitializeComponent(); } // The button for selecting the xml-file of ZUGFeRD format   private void btnSelectFile_Click(object sender, EventArgs e) { // Standard dialog for opening a file using (OpenFileDialog openDialog = new OpenFileDialog()) { openDialog.Title = "Select ZUGFeRD XML"; openDialog.InitialDirectory = appPath; openDialog.Filter = "ZUGFeRD invoice XML (*.xml)|*.xml|All files (*.*)|*.*"; if (openDialog.ShowDialog() == DialogResult.OK) { tbZUGFeRDPath.Text = openDialog.FileName; // Assign the name of the selected file to the input field } } } // Event of loading the main form of the program   private void MainForm_Load(object sender, EventArgs e) { appPath = Path.GetDirectoryName(Application.ExecutablePath); // Specify the path to the folder with the executable file of the program }   // Button for creating a PDF document with the ZUGFeRD invoice private void btnCreatePDF_Click(object sender, EventArgs e) { // Get the path to the xml file string xmlFile = File.Exists(tbZUGFeRDPath.Text) ? tbZUGFeRDPath.Text : Path.Combine(appPath, tbZUGFeRDPath.Text); if (File.Exists(xmlFile)) { // Get the path to the report file string reportFile = Path.Combine(appPath, "Invoice.frx"); if (File.Exists(reportFile)) { // Call the standard file save dialog using (SaveFileDialog saveDialog = new SaveFileDialog()) { saveDialog.Title = "Select path to save PDF file with embedded ZUGFeRD"; saveDialog.Filter = "PDF/A-3b file (*.pdf)|*.pdf|All files (*.*)|*.*"; saveDialog.FileName = "Invoice-With-ZUGFeRD.pdf"; if (saveDialog.ShowDialog() == DialogResult.OK) { using (Report report = new Report()) //Create report object using (PDFExport pdf = new PDFExport()) //Create PDF export using (FileStream file = new FileStream(xmlFile, FileMode.Open, FileAccess.Read)) //Create stream { report.Load(reportFile); //Load report report.Prepare(); //Prepare report pdf.PdfCompliance = PDFExport.PdfStandard.PdfA_3b; //Set PDF file standard pdf.OpenAfterExport = true; //Open file after export pdf.AddEmbeddedXML("ZUGFeRD-invoice.xml", "ZUGFeRD invoice", DateTime.Now, file); //Include xml file into PDF document report.Export(pdf, saveDialog.FileName); //Execute export } } } } else MessageBox.Show("Report file does not exist!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else MessageBox.Show("XML file does not exist!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } ```  From the comments to the code it is clear that we are performing the export of the pre-created report to PDF. In doing so, we set the PDF / A-3 standard and add the ZUGFeRD account file to the xml document. Let's look at the report template, which is an invoice issued according to the ZUGFeRD standards. To generate the XML representation of this report, you need to use the library, which can be found here: https://www.nuget.org/packages/ZUGFeRD-csharp/ . Using the code and ZUGFeRD-csharp library, we generate the following XML file: ``` true urn:ferd:CrossIndustryDocument:invoice:1p0:basic 2017-415 Rechnung 380 20170320 Created by FastReport.Net https://www.fast-report.com   Haimerl Datentechnik 94356 Kreuzacker 10 Kirchroth / Kössnach DE DE179151914 ABB Lackieranlagen GmbH 35510 Schorbachstrasse 9 Butzbach DE 20170320 2017-415 EUR 160.93 VAT 847.00 19.0 847.00 0 0 847.00 160.93 1007.93 1 FastReport.Net Professional Edition Single License 2 FastReport.Net Win+WebForms Edition Single License ```  Run the program: We select the xml-file of the invoice. Click on "Create PDF / A-3b with embedded XML". And this is how the human-readable representation of the document looks like, actually the PDF document itself:  Thus, in order to use the xml view of ZUGFeRD in conjunction with the FastReport report, you only need to export the report in PDF A-3 and attach the xml file. Tags: .NET, FastReport, ZUGFeRD ### How to manage the indentation on top of the second page of the report URL: https://www.fast-report.com/blogs/manage-indentation-top-second-page Often, when the report is displayed, you can observe how the data that does not fit on the first page is transferred to the second one. This is typical for the band "Data" and "Group header", and associated with them. The Data band can contain data fields, or other objects, such as a table or matrix. To make the first page completely filled with data, without spaces, you need to set the CanBreak property for the Data band. But what if you want the "rest" of the table on the second page to place below the top edge? For example at the level of the beginning of the table. At the same time, if you view two sheets of the report at the same time, it will look harmonious. There are no regular settings for this. However, we can always use the report script, and do everything. Therefore, there are two ways to do this, and they are both very similar. The first way: Add the "Page title" band; Add a BeforePrint event handler for this band; In the event handler code, check the current page number, and if it's the second page, but change the height of the band to a suitable value. Picking up the height of the "Page Title" band, we can achieve printing the table on the second page at the same level as on the first page. The second method is almost identical to the first: Add the "Page title" band; Set the desired height in the properties; Add a BeforePrint event handler to the "Page title" band; In the event handler code, check the current page number, and if it's the second page, but display the band. Just choose what you like, because both methods are equivalent,. Now consider the code of the BeforePrint event handler for the "Page header" band. The first way: ``` private void PageHeader1_BeforePrint(object sender, EventArgs e) { if (Engine.CurPage > 0) PageHeader1.Height = 50; // Set top margin else PageHeader1.Height = 0; } ```  The second way: ``` private void PageHeader1_BeforePrint(object sender, EventArgs e) { if (Engine.CurPage > 0) PageHeader1.Visible = true; else PageHeader1.Visible = false; } ```  As you can see, in the first case, we change the height of the band in the code, and in the second case, we display the band with a predetermined height. As a result, we get an upper margin for the table on the second page of the report: Thus you can adjust the margins for each subsequent page of the report. Tags: .NET, .NET, FastReport, FastReport ### How to Merge Multiple Reports into One in FastReport .NET URL: https://www.fast-report.com/blogs/merging-reports-net Summary: FastReport .NET is a powerful tool for creating and managing reports. In this article, we will look at how to combine multiple reports into one in FastReport .NET. FastReport .NET is a powerful tool for creating and managing reports. In this article, we will look at how to combine multiple reports into one in FastReport .NET. One of the key features of FastReport .NET is the ability to merge multiple reports into one. This can be useful where you need to combine data from different sources or present information in a more convenient format. In this article, we will discuss how to merge multiple reports into one in FastReport .NET. FastReport .NET is a powerful tool for creating and managing reports, widely used in various fields. It provides developers with the ability to create complex and professional reports using a multitude of features and capabilities. One of the key features of FastReport .NET is the ability to merge multiple reports into one. This can be useful where you need to combine data from different sources or present information in a more convenient format. In this article, we will discuss how to merge multiple reports into one in FastReport .NET. Open the FastReport .NET report designer and load your report. Once the designer is open, select the “File” menu and then “Open Page.” In the file system, select the report that you want to merge with the first one and load it. Now, choose the required page and click OK. Starting from FastReport .NET version 2025.1, you can enable the “Add as Link” option, which means that the report will include a link to the page rather than a copy of it. This means that if the page is changed in the original report, the changes will be reflected in all reports where the page has been added as a link. Conversely, if the page is modified in one of the reports that link to it, it will be changed in the original report as well. If everything went successfully, you will have access to the added pages from the selected template at the bottom of the designer. To merge them into a single report, you can save the current modified template, or save it as a new template. To do this, select the “File” menu and then “Save As.” Save the new report under a new name. In this article, we have covered in detail how to merge several reports into one in FastReport .NET. We explored the main tools and methods that FastReport .NET provides for merging reports, as well as how to use them effectively. Tags: .NET, FastReport, Designer, Report, Plugin ### How to merge several csv files into one URL: https://www.fast-report.com/blogs/merge-several-csv-files-into-one This article aims to provide the insight into how to use FastReport.Net to merge two logically related CSV files into one.  Storing data in CSV files is often very convenient. You can always open such files by any text editor and tweak them. But what if in one document there are references to data from the other document? You have to merge two files into one, for further convenient work with the CSV document. It can be done manually, which is rather time - consuming, or you can use Excel, that requires some knowledge of the macros. The third way is the most easy-to-handle - to use FastReport. So, we have two CSV files. One contains a list of orders, the second one - a list of customers. We need to display the customers' names and phone numbers for each order. The Orders table has a foreign key "CustNo' to the Customers table. In turn, the Customers table has the primary "CustNo" key. As you understand, we will link the two tables to this field. Create a new report in the designer. Add a new data source -  a CSV file: One more data source is the second file. As a result, we get two connections: Now we need to link two tables. To do this, click the drop-down menu "Actions" and select "New relation". We select the main table, for example "Orders". The subordinate table is "Customers". For both tables we define the key fields. In our case, in both tables the keys are called "CustNo": Now look at the window "Data": For the Customers table now there is an associated table "Orders". We place the Company field in the Customers table on the Data band. We also place all fields there, except the CustNo fields, which are from the linked table " Orders". As there are a lot of fields, they do not fit on the report page. Open the page settings in the top toolbar "Report": On the "Other" tab we set properties: Extra design width, unlimited height, unlimited width. The last two properties allow you to expand your report page to the required size in the report view mode. Before exporting the report to a CSV file, let us consider some useful tips on formatting. To prevent the addition of blank lines and columns in the export, try to place the margins on your page close to each other. For the header of the data, we reduce the height to a minimum: Now run the report in preview mode. Click "Save" and choose "CSV file...". Now agree with the default export settings and set the location of the file saving. As a result, we have a CSV file with information about orders and the company name instead of the CustNo identifier. Using the introduced way, you can merge as many tables as you need from different CSV files, which is really time - saving. Creation of a merged file takes about 10 minutes. Tags: .NET, .NET, FastReport, FastReport, Desktop, Desktop, CSV, CSV ### How to migrate projects from FastReport Open Source to FastReport Core URL: https://www.fast-report.com/blogs/Migrate-FastReport-Open-Source-to-FastReport-Core Summary: The article describes the nuances of transferring from a free FastReport Open Source generator to a paid FastReport Core The article describes the nuances of transferring from a free FastReport Open Source generator to a paid FastReport Core The article describes the nuances of transferring from a free FastReport Open Source generator to a paid FastReport Core FastReport Open Source has just appeared, but I can already anticipate some of the questions users. Due to the fact that the export of the report in fact possible only in HTML format to many of you attraction of FastReport Open Source may seem questionable. And you may wonder, "Is it worth starting a project on open source version of FastReport Core or still fork over paid version?". I can tell you this worth it. Firstly, the Open Source has a great advantage - open source code, which you can modify as you wish. You can write your own export or use someone else's operating experience. Secondly, FastReport Open Source - it's the same as FastReport Core, just a little cut. Hence, they are compatible. You can start your project on an open source version, and In case of necessity of advanced exports - migrate to the paid version. It  is easy enough to do this. You just need to replace the libraries of FastReport.OpenSource and FastReport.OpenSource.Web onto FastReport and FastReport.Web. Migration from FastReport Core to FastReport Open Source is also possible, but you will have to remove all report exports from the application code. Besides exporting to HTML, of course. Web reports would not work without it. The advantages of FastReport Open Source are free and open source code, and to the advantages of paid are rich functionality and technical support. I must admit Fast Reports devotes a lot of time to the development of exports, they really work well and have a lot of settings. Not so much reporting tools can offer such advanced settings export to PDF. Using the open source version, you should understand what kind of exports you are losing: Adobe PDF; Microsoft Excel 2007; Text; Rich Text; Microsoft XPS; Open Office Calc; OpenOffice Writer; MHT; XML (Excel) table; CSV. However, ultimately, it's only your choice. If you want to experiment and test your might, you should better start with the FastReport.OpenSource, if you need a reliable ready-made solution with full functionality and support, FastReport Core, FastReport .NET to be precise, which is composed of the components in the framework of .NET core is definitely for you. Tags: FastReport, FastReport, Core, Core, Open Source, Open Source ### How to modify the width of a tab in RichObject URL: https://www.fast-report.com/blogs/modify-the-width-of-tab-in-RichObject Summary: Turning RichObject and TextObject into an alternative to the Table object. Turning RichObject and TextObject into an alternative to the Table object. Turning RichObject and TextObject into an alternative to the Table object. Some users prefer to create tables by adjusting the tab width, or they want to create a table in a format that does not support them. In previous versions of FastReport .NET, RichObject offered the function to modify the width of a tab in a line, but all their sizes after the first tab were the same. This has been fixed in the current version and now you can set the size for each tab character. New property for TextObject TabPositions allows you to set the width of a tab. It is used when converting RichObject. Now you can control the width of tab characters in two ways: – to set from the code the width of individual tab characters for each line of the TextObject; – by uploading the finished document into RichObject. The function to edit this property in the designer is temporarily unavailable. If there are more tab characters than widths, the tab size will be normal, and if there will be more values than tabs, the excess values of width will not be applied. An example of a text with different tab widths Original RTF document: How it looked in the previous version: In the current version: Customizing tab width from the code: ``` //create instance of class Report Report report = new Report(); //create report page ReportPage pageBase = new ReportPage(); //create data band DataBand dataBand = new DataBand(); //create text object TextObject textObject = new TextObject(); //set the text value textObject.Text = "1\t2\t3\t4"; //set width for every symbol tab in centimeters textObject.TabPositions = new FloatCollection() { Units.Centimeters * 2.5f, Units.Centimeters * 3.5f, Units.Centimeters * 5 }; //add the text object to data band textObject.Parent = dataBand; //set generated name textObject.CreateUniqueName(); //set the text object bounds textObject.Bounds = new RectangleF(0, 0, Units.Centimeters * 15, Units.Centimeters * 0.5F); //create one more text object TextObject textObject2 = new TextObject(); textObject2.Text = "5\t6\t7\t8"; textObject2.TabPositions = new FloatCollection() { Units.Centimeters * 2.5f, Units.Centimeters * 3.5f, Units.Centimeters * 5 }; textObject2.Parent = dataBand; textObject2.CreateUniqueName(); textObject2.Bounds = new RectangleF(0, Units.Centimeters * 1, Units.Centimeters * 15, Units.Centimeters * 0.5F); //create one more text object TextObject textObject3 = new TextObject(); textObject3.Text = "9\t10\t11\t12"; textObject3.TabPositions = new FloatCollection() { Units.Centimeters * 2.5f, Units.Centimeters * 3.5f, Units.Centimeters * 5 }; textObject3.Parent = dataBand; textObject3.CreateUniqueName(); textObject3.Bounds = new RectangleF(0, Units.Centimeters * 2, Units.Centimeters * 15, Units.Centimeters * 0.5F); //add the band to band collection pageBase.Bands.Add(dataBand); //add created page to report page collection report.Pages.Add(pageBase); //show report report.Show(); ``` Thus, you can turn RichObject and TextObject into an alternative to the Table object with the help of new improvements. Tags: .NET, .NET, FastReport, FastReport, RTF, RTF ### How to open a WebP image in FastReport .NET URL: https://www.fast-report.com/blogs/plugin-image-webp-dotnet Summary: Instructions for working with the new plugin for opening images in WebP format via a visual designer in FastReport .NET. Instructions for working with the new plugin for opening images in WebP format via a visual designer in FastReport .NET. Instructions for working with the new plugin for opening images in WebP format via a visual designer in FastReport .NET. WebP is a file format developed by Google in 2010. Its feature is an advanced compression algorithm that allows you to reduce the image size without visible quality loss. Starting from version 2023.2.14, FastReport .NET has a plugin that allows opening images in the WebP format. It extends the opportunities of the PictureObject object, which means that this image can be opened from the PictureObject editor or uploaded from code. First, you need to build the project: С:\Program Files (x86)\FastReports\FastReport.Net\Extras\Core\FastReport.Plugin\FastReport.Plugins.WebP After building the project, you need to add the plugin to the application in one of two ways. Method 1. Add a plugin through the designer: Method 2. Add the plugin as a dependency when starting the project and register it in the code with the following command: new FastReport.Plugins.WebPAssemblyInitializer(); It is important to note that FastReport.Skia supports the WebP format without a plugin. In some situations, it may be necessary to use other versions of the SkiaSharp.NativeAssets package. In such cases, the project must be built from the source code itself. Note: the plugin converts the image from the WebP format to a PNG picture, which is already used by the PictureObject. The uploaded image in the designer will be displayed as follows: Tags: .NET, FastReport, Designer, Vector graphic, Plugin ### How to Open and Convert an FP3 File Using the FastConverter .FP3 URL: https://www.fast-report.com/blogs/converting-fp3-files Summary: We are talking about the .FP3 format, which is used for ready-made reports in business applications, and the ability to convert such files to various formats using FastConverter. We are talking about the .FP3 format, which is used for ready-made reports in business applications, and the ability to convert such files to various formats using FastConverter. FP3 is a format for ready-made reports generated using FastReport report generators, integrated into various business applications. A file in this format can be generated by different programs, such as CRM or ERP. To easily convert it to any preferred format, use the FastConverter .FP3. FP3 is a format for ready-made reports generated using FastReport report generators, integrated into various business applications. A file in this format can be generated by different programs, such as CRM or ERP. To easily convert it to any preferred format, use the FastConverter .FP3 . It allows you to convert .fp3 files to PDF formats versions 1.4, 1.5, 1.6, and 1.7, PDF/A (1, 2, 3), RTF, XLSX, XML, DOCX, TXT, CSV, PPTX, HTML, JPEG, BMP, PNG, TIFF, EMF, SVG, Open Document Format (ODT, ODS, ODP), and more. Both single file conversion and batch conversion are possible. How to Convert a File from .fp3 to PDF Step 1: Install FastConverter .FP3. You need to download and install FastConverter .FP3 using this link . After installation, launch the program. Step 2: Opening an FP3 file. Go to the "File" menu → "Open," then select an FP3 format file and click "Open." Step 3: Converting FP3 to another format. After loading the file, click "File" → "Save As." A wide variety of supported formats for exporting the document will become available to you. In the "Target Format" field, select the desired format (PDF, DOCX, XLSX, HTML, PNG, etc.) from the list provided. Step 4: Final file location and name. Specify the folder and file name for saving in the "Target File" field and click "Save." After the conversion is complete, the file will be available in the specified directory in the new format. For any questions, please contact our support team at support@fast-report.com . Tags: VCL, Export, Converter, Data filtering ### How to optimize the size of a report file in PDF URL: https://www.fast-report.com/blogs/optimize-size-report-file-pdf In this article we are going to talk about PDF export in FastReport.Net. That is, the size of a file of an exported report. The size of the final file is affected by many factors: image quality, embedded fonts, fonts in "curves", background image, etc. Let us take a close look at the export settings window: First of all, you can set the PDF standard, and this affects the final size because PDF / A and PDF-X standards necessarily include embedded fonts. The option "Embedded fonts" allows you to include fonts used in the report into the final document. This slightly increases the size of the final file, but ensures that the text is displayed in the same form as in the report. If the font style is not important, then you can skip this option in order to reduce the size of the file. Option "Background"  includes the background of the report in a PDF document. It also increases the size of your document. The option "Text in curves" enables a mode for drawing characters using vector primitives (TrueTypeFonts). This ensures that the view and the aspect ratio of the characters are preserved when scaling. However, this option significantly affects the size of a PDF document. Using this option is justified when printing a document in large formats, for example, on plotter. Now let us consider the options, that are related to graphics. Color space: RGB or CMYK . There are two types of color formation. The first type is used in television, the second one - in printing. Using the CMYK scheme, it increases the file size. If it is important for you to keep the correct colors when printing, you should use this option. Option " Original Resolution". This option allows to save images in the original resolution. Based on the principle of "originality", an image in a report cannot be rotated, only scaling is allowed. This option is suitable if you want to transfer original images, using a PDF document. It can be used in printing. Depending on the resolution of the original image, this option can significantly increase the size of the final PDF document. Option “Print Optimized”. Fast Report uses images from reports, when creating a PDF document. In addition to bitmap, there are some objects that are converted to images during exporting to PDF. This includes barcodes, maps, charts and some other objects. By default, all these objects are rendered in the screen resolution. This leads to decrease in detail, when your document is zoomed in, and it is also noticeable when printing on paper. In addition, this can lead to poor legibility of barcodes by scanners. To avoid this problem, the " Print Optimized" option is used. When you turn it on, the above objects are drawn on the canvas, which is several times larger than a normal screen. Then these images are placed in a PDF document. This solves the problem of legibility of barcodes and the appearance of diagrams and maps. Images are formed at a higher resolution, so they have a margin for visualization when scaling. The disadvantage of this method of rendering images is their large size, which increases the size of your PDF file. The "Jpeg Compression" option. This option, unlike all the others, is designed to reduce the size of the resulting document due to deterioration in the quality of images. And you can set the percentage of image quality, unlike the original one. This option can be used if the original quality of images in the document is redundant for you. It is no use storing, for example, a high-quality photograph in a document, if it occupies, for instance, a quarter of a page. You can greatly reduce the size of the document due to the images. I am going to display the results of measuring file sizes with different PDF standards and options. For this, a demo report Simple list from the delivery of FastReport.Net has been used. Each measurement was carried out with one option enabled, no combinations. Let us take a close look at the sizes of PDF files in kilobytes: Standard Without options Embedded fonts Background Text in curves RGB CMYK Original resolution For print Jpeg compression 95 Background, color and texture PDF 1.5 424 550 425 1652 424 438 627 4332 112 437 PDF/A - 558 558 - 558 944 760 4465 245 570 PDF-X - 551 551 1652 551 952 756 4450 238 564 As it was mentioned above, PDF / A and PDF-X have the default fonts already implemented, so they are not in the first column. If you compare all three standards with embedded fonts, then you will see, that the largest size is a PDF / A. As you might have noticed, the enabled Background option did not affect the size at all, as the Simple List report does not have a background. Some separate measurements have been made, changing the background in the report and getting excellent numbers (last column). The next option "Text in curves" is not available for PDF / A, this is due to the standard. For PDF1.5 and PDF-X, the file size is identical and exceeds the number of the previous columns by three times. Here it is worthwhile to think whether this option is necessary to you. The RGB color space is selected by default, so the size is the same as the size of the first (second) column. And for CMYK, the file size is larger, especially for PDF / A and PDF-X. This is due to the use of the ICC color profiles. Now the "Original Resolution" option. A PDF document contains original drawings from the report. Among three indicators in this column, the smallest one is PDF 1.5. But this is only because the other two have embedded fonts. So, the values of all the columns are approximately the same. This applies to the other parameters. The PDF file 1.5 is less than exactly the amount of embedded fonts. Now look at the "For printing" column. The file size is 8 times larger than the initial file (without options)! We already know that this is due to the high resolution of the images in a document. It was written above, that the Jpeg compression can significantly reduce the file size. For PDF 1.5 this is 112 kilobytes against the initial 424. Almost 4 times less! And if our report contained only pictures, this indicator would be even greater. From the table above, it is clear which of the options should be used with caution. For example, the options "For printing" and "Text in curves" are not included without special need. Using embedded fonts does not greatly affect the size of the document, but it is useful for preserving the intended type of a document. In reports that does not require quality graphics, as it is more appropriate to apply the Jpeg compression. And the color scheme CMYK is appropriate to be used if your report is intended to be printed and it contains photographic drawings. Tags: .NET, .NET, FastReport, FastReport, PDF, PDF, Report, Report ### How to pass a connection string in the web report FastReport .NET URL: https://www.fast-report.com/blogs/pass-connecting-string Summary: The article describes how to transfer the connection string for the data source to the FastReport .NET report. The article describes how to transfer the connection string for the data source to the FastReport .NET report. The article describes how to transfer the connection string for the data source to the FastReport .NET report. Sometimes I'm having a situation where you need to set up a web report to another data source. This may be necessary if the report was developed with the use of the test database, or a database simply "moved" to another location. Or maybe the other way around you need to connect a report to the test data. Either way, the ability to reconfigure the connection string is very useful. In FastReport .NET do it very simply. And I'll tell you how to do it. Let's take the example of ASP .NET Core app. Let me remind you that our task is to transfer from the client part of the connection line to the report. There are two ways to do this: transfer the setting to the report and in the report script to override the connection line, or override the connection line directly in the web controller of the app. The second way is more rational. That's what I'm going to show you. The controller will use the method Index. This is where we will create a report object and assign a new connection string. Therefore, the method will take a parameter - the connection string. ``` public class HomeController : Controller { public IActionResult Index(string connstring) { WebReport webReport = new WebReport(); if (connstring is null) { webReport.Report.Load("reports/Empty.frx"); } else { webReport.Report.Load("reports/Master-Detail.frx"); webReport.Report.Dictionary.Connections[0].ConnectionString = connstring; } ViewBag.WebReport = webReport; return View(); } } ```  Index method takes parameter Constring, which is initially at startup is equal to null. To report a Web object is not sprinkled with errors when displaying the page, you need to download it to the report template. Since the connection string is not yet known, then let it be a blank template. When the connection string is set, we load the desired report template and redefining it in the connection string. Everything is very simple. If the report template initially has no connection to the data source, you can add it. Here is an example to connect to a database MSSQL: ``` RegisteredObjects.AddConnection(typeof(MsSqlDataConnection)); MsSqlDataConnection sqlConnection = new MsSqlDataConnection(); sqlConnection.ConnectionString = connstring; sqlConnection.CreateAllTables(); webReport.Report.Dictionary.Connections.Add(sqlConnection); webReport.Report.Load("reports/CoreMSSQL.frx"); ```  The Index method should have an appropriate view. Add the following code: ``` @{ ViewData["Title"] = "Home Page"; }
@await ViewBag.WebReport.Render() ```  Here we used a form that refers to the Index method. It has a text field with the name and constring button. The contents of the text field will be passed as a parameter to the method. Now let's see what we've got: Initially, the connection line was not set, so the blank report template was uploaded. Let's try to enter the connection line to the xml database: «XsdFile=;XmlFile=C:\\Users\\Dimon\\source\\repos\\PassConnectionstring\\PassConnectionstring\\reports\\nwind.xml» Now we get the report: This way you can always get out of a situation where the report cannot connect to the data source, because of its inaccessibility. Tags: .NET, .NET, FastReport, FastReport ### How to pass parameter into report through URL URL: https://www.fast-report.com/blogs/pass-parameter-report-url Working with reports on the Internet, there is a need to transmit the values of any parameters. This, for example, can be data for filtering lists or customer information. It would be convenient to pass parameters using the URL (Universal Resource Locator) when you call the web form with the report. It is quite easy to do this. Let's consider the simplest example. In the report template, there are two parameters: Param1 and Param2 of type string: You need to pass the values for these parameters using the URL. Create a web application ASP.Net WebForms. We place a WebReport component on a page. Add the created report template to the project. Right-click on the folder App_Data and select «Add-> Existing Item ...». Then we find the report file on the hard disk. Now go to the C # code page. First of all, we add libraries:  ``` using FastReport.Web; using FastReport; ```  I used the Load page event, because at this stage the report is not yet displayed: ``` namespace URLParams { public partial class About : Page { protected void Page_Load(object sender, EventArgs e) { //Get parameters from URL string param1 = Request.QueryString["param1"]; string param2 = Request.QueryString["param2"]; //Load report fil into WebReport object   WebReport1.ReportFile = "App_Data/URLParams.frx"; //Set value to report parameters WebReport1.Report.SetParameterValue("Param1", param1); WebReport1.Report.SetParameterValue("Param2", param2); } } } ```  Note that the parameter name exactly matches the parameter name in the report template: ``` WebReport1.Report.SetParameterValue("Param1", param1); ```  The URL looks like this: http://localhost:51838/About?param1=Hello%20World!¶m2=Good%20job! The Request.QueryString(); function finds the parameter by name and returns its value. The second option, without saving the report template in the project:        ``` protected void Page_Load(object sender, EventArgs e) { string param1 = Request.QueryString["param1"]; string param2 = Request.QueryString["param2"]; Report report = new Report(); report.Load("J:/Program Files (x86)/FastReports/FastReport.Net/Demos/Reports/URLParams.frx"); report.SetParameterValue("Param1", param1); report.SetParameterValue("Param2", param2); WebReport1.Report = report; } ```  Here, we create a report object, load a template into it, and assign parameters. After that, we assign the report object to the web report object. Forgive me for the tautology. At the same time, make sure that the property of the ReportResourceString WebReport is empty. Both methods lead to the same result: Thus, just a few lines of code allow you to use parameters passed in the URL. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport ### How to place several reports on one Web page URL: https://www.fast-report.com/blogs/many-reports-one-page A web - form allows placing any number of reports on one page. It is only limited by the size of the page. Moreover, each report can have its own data source. Let us examine the following example: Add the “SqlDataSource” component to the page. From the drop-down menu select “Configure Data Source” and create a connection. Choose a database: Now, choose a table: Add one more component “SqlDataSource”. Connect it to the same database, but choose another table: Now, place two objects “WebReport” on the page. From the drop-down menu of the first “WebReport” object, select "Select Data Source". Next, mark the first added source: From the drop-down menu of the object “WebReport” select "Edit Report" and create a simple report: Close the editor without saving the report. Now, place one more component “WebReport” near the first one. From the drop-down menu select the item "Select Data Source". Note the second added data source. As it was done for the previous report, open the report editor for the new object “WebReport”. Create a simple report: It might be needed to add a reference to the library “FastReport.Web.dll”, which can be found in the folder containing FastReport.Net program. If the objects fit the page, they will be displayed next to each other. If the objects do not fit one line, one or several reports will be displayed below. In this work a standard page of the project ASP.NetWebForms was used. Now, start the  application: In the picture given above, there are two reports placed together on one page. Summing up, in this article a procedure of placing several reports on one page has been illustrated. This method allows collecting reports according to their topics and might save time. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport ### How to pre-register of data sources before create a new report URL: https://www.fast-report.com/blogs/pre-register-data-sources In order to send a data source to a report it must previously be pre-registered in the report. Then, within the report select an available source from the list and only after that - start to work. It would be great if the data source could be available to a paste when you open the report designer. Better yet, if it was already selected in the report designer. In this case, you could immediately begin to develop a report, not worrying about the data. Such an approach would avoid the routine work during the extensive report development. Make registration of a data source and its automatic choice in a report at the launch of the designer - not a difficult task. The main problem is to keep the registered data source when creating a new report using the File menu. The essence of the method that I want to introduce - to intercept the process of creating a new report by using the File menu. Let's consider the following example. Create an application with a form and a single button. The required for work libraries are: ``` using FastReport; using FastReport.Utils; using FastReport.Data; using FastReport.Design; using FastReport.Wizards; ```  Declare the data source and then  create it: ``` private DataSet FDataSet;   private void CreateDataSource() { FDataSet = new DataSet(); FDataSet.ReadXml(Environment.CurrentDirectory + "//nwind.xml"); } ```  In this case, I use XML database from the FastReport .Net package. Create a method of data source registration : ``` private void RegisterData(Report FReport) { FReport.RegisterData(FDataSet, "NorthWind");   // activate all data sources by default foreach (DataSourceBase source in FReport.Dictionary.DataSources) { source.Enabled = true; } } ``` Here, the loop iterates through all the data sources that are registered in the report and activates them. Thus they will be immediately available in the data window. Call an event handler of starting Report Designer: ``` private void DesignerSettings_DesignerLoaded(object sender, EventArgs e) { (sender as Designer).cmdNew.CustomAction += new EventHandler(cmdNew_CustomAction); } ```  Add a custom handler for the event of creation the new report from the File menu. Now we need to write the custom handler. It will create a new, blank report with already added data source:  ``` void cmdNew_CustomAction(object sender, EventArgs e) { Designer designer = sender as Designer;   //StandardReportWizard wizard = new StandardReportWizard(); // you can use any wizard form package BlankReportWizard wizard = new BlankReportWizard(); wizard.Run(designer);   RegisterData(designer.Report); // refresh data tree view designer.SetModified(this, "EditData"); } ```  Here we create an instance of a blank report or run the "standard report wizard." It's your choice. Then open a new report in the designer. Re-register a data source and update the list in the data tree. It remains to write the handler pressing:         ``` private void button1_Click(object sender, EventArgs e) { Report FReport = new Report(); Config.DesignerSettings.DesignerLoaded += DesignerSettings_DesignerLoaded; CreateDataSource();   // FReport.Load("myreport.frx"); // load report RegisterData(FReport); // register data before design FReport.Design(); } ```  Create a copy of the report object. Assign a handler of loading report designer, which we have written, instead of the standard one. Create a data source. Now you can download the report, or not do it. Then it will be created empty report. Before calling the designer is required to register the data. Now, with the launch of the designer, the database tables will be displayed immediately in the "Data" window. Also when creating a new report from the File menu, the data source will be added. In this article I showed you how to intercept the process of creating a new report, if to create it via the File menu. The same principle can override other actions of the designer, such as Save. Tags: .NET, .NET, FastReport, FastReport, Data Source, Data Source, Report, Report ### How to print a picture from the report by clicking URL: https://www.fast-report.com/blogs/printing-picture-from-report Summary: The article describes how to print any image from the FastReport.NET report. The article describes how to print any image from the FastReport.NET report. The article describes how to print any image from the FastReport.NET report. Many users of report generators fairly standard functionality in their everyday work. But sometimes they have to deal with non-trivial tasks, and then search for a solution may take a lot of time and effort. But perhaps the best solution is to ask the developers to get the most qualified assistance. This is done by one of the users of the generator Telerik Reporting reports. The problem was to print a picture of the object image in the report: https://www.telerik.com/forums/print-a-picture-from-a-picturebox The report may contain images not only uploaded during the design, but those that are stored binaryly in the database. Imagine a situation where you only need to print the right images from a report with many pages of data. At first glance, this is a big problem. You can export the report to HTML, copy the image you want to the graphics editor, and only then send it to print. And you can make an interactive report that will allow you to print pictures by clicking. Such solution is offered by Telerik specialists, in response to a user's question. It's a great solution. Let's look at how to solve this problem in the FastReport.Net report. In fact, there is nothing simpler. All you need to do is create an event handler clicking on the picture object: And add couple methods to the report script ``` //picture object public Image img; //printing method public void Print() { System.Drawing.Printing.PrintDocument picture = new System.Drawing.Printing.PrintDocument(); picture.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(picture_PrintPage); DialogResult result = new PrintDialog().ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { picture.Print(); } }   private void picture_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { e.Graphics.DrawImage(img, new Point(0, 0)); //picture and posirion on one page }   private void Picture1_Click(object sender, EventArgs e) { img = (sender as PictureObject).Image; //We get the picture from the chosen object Print(); //execute printing } ```   As you can see, just need to get a picture of the selected object and execute printing. In the method of printing, we have created the event handler print a document, which used the resulting image. Now, when viewing a report in the viewer, you can click on the picture and send it to print: But if u do not need to print but only save on a local drive, so you can proceed in the similar way: ``` private void Picture1_Click(object sender, EventArgs e) { (sender as PictureObject).Image.Save("C:\\Temp\\image.bmp"); } ```  Thus, printing of the picture by ckick from the FastRepor.Netreport is very easy to perform. Tags: .NET, .NET, FastReport, FastReport, Interactivity, Interactivity, Report, Report, Printing, Printing ### How to print a report in ZPL format URL: https://www.fast-report.com/blogs/print-report-zpl-format Summary: The new version of FastReport .NET 2018.1 has a new export to the ZPL (Zebra Programming Language) format. This format is designed to be used in conjunction with special label printers. The new version of FastReport .NET 2018.1 has a new export to the ZPL (Zebra Programming Language) format. This format is designed to be used in conjunction with special label printers. The new version of FastReport .NET 2018.1 has a new export to the ZPL (Zebra Programming Language) format. This format is designed to be used in conjunction with special label printers. More information about ZPL can be found in the article "Page description language – ZPL". The new version of FastReport .NET 2018.1 has a new export to the ZPL (Zebra Programming Language) format. This format is designed to be used in conjunction with special label printers. More information about ZPL can be found in the article  "Page description language – ZPL" . When developing reports that are supposed to be printed on a label printer, the following points should be considered: • the page size must match the label size, you can adjust the dimensions in the report designer in the Page Setup in the Report menu; • the fields specified in the page size setting window are also taken into account - if you need to print close to the edge of the label, you need to set the fields to 0; • Each generated report page will be sent to the printer as a separate label; • When drawing up a report, you should adhere to a black and white color scheme. You can create a file with a set of ZPL commands from the preview window. The Density parameter is responsible for the print density, dots per millimeter. Density is selected depending on the printer, on which the label will be printed in the future. The Print As Bitmap check box indicates that a per-pixel copy of the report image will be sent to the printer. In other words, a black and white image of the report will be generated and saved as a picture in the ZPL format. If this checkbox is disabled, the report objects will be saved as a sequence of ZPL commands. Text values are stored in the UTF-8 encoding, barcodes (those that have corresponding analogs in the ZPL)  are transmitted as separate commands. It should be borne in mind that when printing a report as a picture, barcodes can be unreadable, even though they will look identical to what we got in the report. The reason for such barcode behavior is the wrong ratio of the line thickness due to the barcode object scaling. To avoid errors reading barcodes, you should disable the Print As Bitmap mode, but in this case, the appearance of barcodes may not match those that we see in the preview window. The Font Scale parameter is responsible for scaling the font size. If there is no label printer available or for economical purposes, you can test the saved file in the Online ZPL Viewer (http://www.labelary.com/viewer.html) - open the generated file with the extension *. Zpl in any text editor, copy it in the text box on the site and click the Redraw button. You can make additional export settings in the ZPL and send it directly to the label printer from the program code. Look at the demo program in the \ Demos \ C # \ PrintZPL folder. This is how its main form looks like: First, you select a report template, then set the export options and select the printer to print. It should be a printer that supports the ZPL command system - in our case it's a Zebra ZD420 printer. In the program code, you can see how the export settings are controlled in the ZPL format - properties of the object of the ZplExport class: Property Description ZplExport.Density Density of print depends on the printer model. Possible Values: ZplExport.ZplDensity.d6_dpmm_152_dpi, ZplExport.ZplDensity.d8_dpmm_203_dpi, ZplExport.ZplDensity.d12_dpmm_300_dpi, ZplExport.ZplDensity.d24_dpmm_600_dpi. ZplExport.CodePage A command in the ZPL language that defines the character encoding. It is sent to the printer each time before printing the label. By default it contains the string "^ CI28", which corresponds to the UTF-8 encoding. ZplExport.FontScale Scaling the font size. The default is 1. ZplExport.PrinterFont A string indicating the type of font, defaults to "A". ZplExport.PrintAsBitmap Print as a bitmap. The default is set to true. ZplExport.PrinterInit A string with a set of commands that will be sent once to the printer before the report is printed. Can be used to set orientation, override fonts, or other printer settings. ZplExport.PrinterFinish A string with a set of commands that will be sent once to the printer after the report is printed. ZplExport.PageInit A string with a set of commands that will be sent to the printer before printing each label. Sending to print is done by using the FastReport.Export.Text.TextExportPrint.PrintStream method, which passes the stream with ZPL commands to the printer's print queue. Tags: .NET, Export, FastReport, ZPL ### How to print business cards from a Delphi application URL: https://www.fast-report.com/blogs/printing-business-cards-delphi Summary: The article describes how to create business cards from Delphi application. The article describes how to create business cards from Delphi application. The article describes how to create business cards from Delphi application. Applications built in Delphi are less common than, for example, those built in C #. These programming languages are from different times. However, even nowadays Delphi and VCL can complete some of the modern tasks. There are many free and commercial libraries that can modernize even old applications. For example, the FastReport 6 VCL report generator allows you to create modern reports and export them to many formats of electronic documents and images. Sometimes, report generators are used to complete non-trivial tasks, such as printing business cards. A business card is a very resourceful invention. A small cardboard card that contains the necessary contact information about the business representative allows you to instantly share this information with another person, obviating the need for writing down the contact information during a short meeting with your business partner or customer. Eventually having a business card has become a common courtesy and even social networks and messengers can’t force them out of daily life. Generally, people have many business cards from different people in their wallets. To stand out from this variety, they spend a lot of time to make a good design. A good design attracts attention and makes it easy to read the information. Large companies order a unique business cards design for a large amount of money and print them on expensive pre-punched paper. So it goes – image. The business cards form factor and size are generally settled around the world, but there are still some slight differences from country to country. So, for example, a standard business card in the USA has dimensions of 3,2*2 inches (88,9*50,8mm), when in Germany and France business cards are higher and narrower – 85*55mm. In this article, we will look at how to quickly and easily print business cards using the FastReport VCL report generator. The user application will be created in VCL. After the FastReport VCL report generator was installed, FastReport components tabs had been added to the component palette in your development environment. Therefore, first of all let's add the frxReport component to the form which will allow us to launch the report designer, as well as the report itself. Also you need two buttons: one to launch the report designer, another one to launch reports. You can create a separate application that will run the report designer or delete this button when you finish creating the report. The thing is, that to run the report designer, we need to compile the application. Let’s add the click event for each of the buttons. The code for launching the report designer will be like this: ``` frxReport1.DesignReport(); ```  And for launching the report – like this: ``` frxReport1.LoadFromFile(‘Report file path here’); frxReport1.PrepareReport(); frxReport1.Print(); ```  This code will send a report to print when you click on the button. The Print Settings window will be displayed before printing. But if you want to preview the report first, replace the last line of the code with: ``` frxReport1.ShowReport(); ```  In addition, you can use the Open File dialog box instead of setting the hard path to the report file. Add the OpenDialog component to the form. Change the button code as follows: ``` OpenDialog1.Filter := 'FastReport VCL (*.fr3)|*.FR3'; OpenDialog1.Execute(); if Length(OpenDialog1.FileName)>0 then begin frxReport1.LoadFromFile(OpenDialog1.FileName); frxReport1.PrepareReport(); frxReport1.Print(); end ```  Let’s run the application and click on the first icon to launch the report designer. To create business cards, we need only one Data band in the report – MasterData. Select Page Settings from the File menu: In the Page Settings window, we can set the number of columns on the page. This way we can display text information as in a newspaper or magazine. But we have a different goal. We need to place as many business cards on the standard A4 sheet as possible. We need two columns if the business card width is 9cm. Set the height of the future business card in the band’s properties: Height = 5. That is, the height is 5 centimeters. Thus the size of the business card is 90*50mm. Now you can start creating the business card itself – this is a matter of your taste. To make cut lines with scissors, you can place a Text object on the band. Stretch it to fit the band and set all borders, select a line thickness of 0.1 and dash line type. If we launched the report right now we would see only one business card, when according to our calculations there should be 10. Just set the RowCount property for the MasterData band. As a result, you will get the following report template: Now you can save it and close the designer. Using the second button, select the saved report and print it (if you used the print option in the code). If you chose the report preview (ShowReport), you will see the page with business cards: That’s all. Simple and, most importantly, fast! In ten minutes, we gave our program the ability to display business cards on the screen or immediately send them to print. However, from the report preview window you can print using the corresponding button and export the document to one of the following formats: PDF, DOC, HTML, HTML5, SVG, RTF, XLS, XML, BMP, JPEG, TIFF, CSV, TXT (for matrix printers), GIF, ODS, ODT, Excel and others. Tags: VCL, VCL, FastReport, FastReport, Report, Report, Printing, Printing, Delphi, Delphi, Business card, Business card ### How to print envelopes from the address list URL: https://www.fast-report.com/blogs/print-envelopes-address-list As a follow - up to the previous article about wedding invitations, I would like to talk about the ways how to print envelopes from the address list in a CSV file.  Let us suppose, you have a list of people's names and their email addresses. You would like to send them letters with invitations to the wedding. Filling a big number of envelopes manually is a time-consuming task. So, how to automate this process? With FastReport you can create labels for envelopes with people's names and addresses. Everything that is needed is to paste the labels on the envelopes and send your letters. First, we need to form a list of three columns: "Name", "Address" and "Postal code". It is worth doing in an Excel spreadsheet as it is convenient. Then, save the file in CSV format: Now create a new report. We will use the master of labels: In the label wizard click the "Custom label" button: Select a paper size - DL envelope: Set a number of rows and columns to 1. Also, turn on the landscape orientation option and swap the width and height of the label: Now we have a label template, that can be glued to a standard envelope of the size 110x220mm. Add a new data source in the report. Mark the option "Field names in the first line": Next, mark the table with three fields: Create a simple template: At the top left there is a sender's address. At the bottom of the page on the right there is a recipient's address. Run the report in preview mode: In this article we have introduced the procedure of producing labels for the postal envelopes. After these accessible steps one should only print them and send. Tags: .NET, .NET, FastReport, FastReport, Desktop, Desktop, CSV, CSV, Printing, Printing ### How to print one page of the report in several copies URL: https://www.fast-report.com/blogs/print-page-report-code Summary: We are talking about the individual settings for printing your report from our own application with the FastReport .NET library. We are talking about the individual settings for printing your report from our own application with the FastReport .NET library. We are talking about the individual settings for printing your report from our own application with the FastReport .NET library. If you need to print particular pages of the report in several copies, we have to use an encoding. You can configure printing properties from the user application code, as well as manually in the print dialog box. This enables you to choose particular pages of the report and set a number of copies. However, the thing is that you can set the number of copies only of all pages to be printed. That’s why we’ll have to split the printing procedure into steps to reach a goal. Let’s say that you need to print three copies of the second page and one copy of the rest of the pages. So we’ll split the procedure into two steps: printing the second page and the rest of the pages. ``` //We create a report var report = new Report(); //We create a data source DataSet data = new DataSet(); //We download the data from the file data.ReadXml("~/nwind.xml"); //We register the data source in the report report.RegisterData(data, "NorthWind"); //We download the report template report.Load("~/Master-Detail.frx");   //We prepare the report report.Prepare(); //We choose the second page of the report report.PrintSettings.PageNumbers = "2"; //We set a number of copies report.PrintSettings.Copies = 3; //We hide the print dialog box report.PrintSettings.ShowDialog = false; //We sent the report to print report.Print(); //We repeat the same steps for the rest of the pages of the report report.PrintSettings.PageNumbers = "1, 3, 4, 5"; report.PrintSettings.Copies = 1; report.Print(); ``` Thus, we can print the necessary pages apart from the rest. The only disadvantage of the above-mentioned code is that the printed pages will be out of order. If you still need to print the pages in order, you’ll have to split the procedure into three steps: printing the first page, the second page and the rest of the pages of the report.   Tags: .NET, .NET, FastReport, FastReport, Report, Report, Printing, Printing ### How to programmatically set the default email client settings for sending emails from FastReport.NET URL: https://www.fast-report.com/blogs/report-delivery-email-by-default Summary: One of the way of report delivery is email distribution. We will show you hot to pre-program it by default. One of the way of report delivery is email distribution. We will show you hot to pre-program it by default. One of the way of report delivery is email distribution. We will show you hot to pre-program it by default. Like many other report generators, FastReport .NET allows you to send a report via email in any of the available export formats. You can send an e-mail either in the report preview mode or in the custom application code. To send an email you need to set the sender, recipient settings. On the Account tab, you set the email client settings for sending emails and the sender's address and name. On the Email tab you set up the recipient's address, email subject, email text, and most importantly the report format to be attached to the email. When the email is sent, the report will be automatically exported in the specified format and attached to the email.  Any settings you set will be saved as the default settings when you send the email, and you can use them in the future. The same is true when you initialize the email settings values in the application code in the EnvironmentSettings component. The settings will only be saved once the email has been sent. But what if you want the default email settings to be applied immediately, without having to send an email to save them? This might be useful if you are using the report generator in a multi-user application and want to make mail presets so that users only have to enter the recipient address and click the send button. The default email settings are located in the FastReport .NET report generator configuration file, which is usually located at the specified path  ``` C:\Users\User\AppData\Local\FastReport\FastReport.config. ``` Open this file in a text editor and you will see an XML. Find the AccountSettings section and, if you have already sent mail from preview mode, you will see the default settings for sending mail. To edit this file in your custom application use the following code: ``` XmlItem xi = Config.Root.FindItem("EmailExport").FindItem("AccountSettings"); // save account info xi.SetProp("Address", "a@a.com"); xi.SetProp("Name", "Name"); xi.SetProp("Template", "template"); xi.SetProp("Host", "host"); xi.SetProp("Port", "25"); xi.SetProp("UserName", "UserName"); xi.SetProp("Password", "Password"); xi.SetProp("EnableSSL", "1"); // "0" if SSL needs to be disabled ``` In this code, we read the configuration file and found the section for the mailing settings. And then - we set the settings. If this section or its properties are not in the configuration, they will be added automatically. This way we can create pre-configured mail settings for our users. Tags: .NET, .NET, FastReport, FastReport, Email, Email ### How to protect your PDF? URL: https://www.fast-report.com/blogs/protect-your-pdf Summary: How to protect PDF from unauthorized access and editing. How to protect PDF from unauthorized access and editing. How to protect PDF from unauthorized access and editing. On the Data protection day, we decided to prepare an article about the PDF documents protection. PDF has become one of the world standards today; it’s a good idea to understand how to protect it. From what do you need to protect a PDF document? From unauthorized editing. From unauthorized access. Protecting a PDF file from editing First, I would like to say that changes can be authorized and even desirable. Often a PDF file is sent to be signed (and standard tools such as Adobe Acrobat Reader allow you to sign such documents), or it is a questionnaire document with built-in editable fields and interactive forms. There are many articles about working with PDF files in FastReport, and some of them are about creating PDF files with interactive forms: Saving a report in PDF/X format Configure options of Acrobat PDF viewer when exporting from FastReport.NET Interactive forms in PDF export FastReport .NET 2018 How to make a PDF from Delphi / C++Builder / Lazarus How to make a PDF document from a text file But there is another type of PDF document – those that cannot be edited, and if some bad person tried to edit something, we would know about it. First of all, these are documents with an electronic signature which certifies the validity of this particular document. Two types of signatures became available in FastReport .NET version 2019.3.2. 1) Signature field. To add it to your document, you need to add the Digital signature object. When this control is placed on the report page, it looks like this: It is not displayed in report view mode. Its functionality is limited to PDF export only, which means that you will see this field when viewing a PDF file in Acrobat Reader. When exporting to PDF, enable the “Sign document” option: 2)  Invisible signature. For an invisible PDF export signature, you do not need to add a Digital Signature control to the report page. The only thing you need to do is enabling the “Sign document” option in the export settings: You can fill in the Location, Reason, and Contact Info fields. Next, you need to select a signature certificate file in .pfx format and set a password for the certificate. After exporting the report, you will see a hidden signature in the PDF document, but it will not be filled in. It is important to know, that this signature is not directly visible in the document.  You can read more about digital signature in our article. In addition, there are so-called “archive” formats PDF/A. Such documents contain all information inside them (it doesn’t “pull” images, fonts and any other data from external sources that may be compromised or removed). Moreover, the document properties state that it is a non-editable format. Can you open it for editing? Everything is possible, but in this case, it will lose its archive type traits, that is, we will clearly see that the document has been changed. The article " How to export report in PDF / A format " describes the features and capabilities of this format in detail. Protecting a PDF file from unauthorized access This article is not intended to provide an overview of methods for cracking protected PDF files (it is a separate topic. For example, here professionals from Elcomsoft describe their approach ). As a format, PDF contains built-in password protection mechanisms. A password allows you to protect a document from one or several actions at once: from opening, from printing, from editing, from copying text, images, and other information, from screen readers’ access. Modern PDFs use AES (Advanced Encryption Standard) encryption for password protection with 128-bit keys, which complicates the task of finding a password (but does not make it impossible!). With 128-bit encryption, the number of keys is 2 128 .  FastReport .NET: FastReport VCL: In the “Security” tab you can configure such fields as: Owner Password User Password You can additionally prohibit printing a document, changing it, copying text or graphics, adding or changing text notes. You can also protect a document using certificates (with public and private keys for digital singing and opening the document). Public key is included in the certificate and used to encrypt information, while the private one is used to decrypt and digitally sign the document. It’s too early to talk about 100% protection. Nevertheless, today it is perhaps the most secure electronic document format. I hope this article will help you provide your users with PDF security tools and make them more security aware. Anyways, there is no 100% protection; the document protection is just a small part of an integrated security system, which should include not only technical, but also organizational measures. We also recommend reading . Tags: .NET, VCL, FastReport, PDF ### How to register data sources in web reports FastReport .NET URL: https://www.fast-report.com/blogs/register-data-sources-web-reports-net To use a data source in web - reports you need to register it. This can be done in two ways that will be illustrated in this work. Registering a data source using the popup - menu of “WebReport” component. Use the project ASP.Net. Add the component “SQLDataSource” to the form: 2. Select “Configure Data Source” from the component's popup – menu: 3.  Create a connection. Select the type of the connection and database: 4.  Select the desired data table and fields; 5.  Add “WebReport” component from toolbox to the form; 6. From the popup - menu of the component select "Choose Data Source”: 7. Select the data source you previously added: When everything is done, the data source can be used in the report. Registering a data source using the function “RegisterDataSource”. Copy and repeat the first 5 points of the previous example. Next, follow the instructions: 6. Select “WebReport” component on the form; 7. In the property “Inspector” switch to “Events” (Events); 8. Add the “StartReport” event; 9. Write the following code: ``` DataView view = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); DataTable table = view.ToTable(); DataSet ds = new DataSet(); ds.Tables.Add(table); WebReport1.RegisterData(ds, "Connection"); ```  So, the data logging function “RegisterData” was used in this work. “DataSet” and its name were used as arguments. Firstly, “SqlDataSource” was created to receive data from it in the form of “DataView”. Then, the data was transformed into a table, which was added to “DataSet”. Summing up, in this article two ways of registering data in a web report have been illustrated and examined. The conclusion drawn from the analysis indicates that the first way is the easiest and the most convenient. With this method it is possible to register and create a data source to run an application that allows generating reports with this data. However, the second method is also useful, when you have a desktop application and it is needed to publish reports on the web. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport, Data Source, Data Source ### How to remove object intersection in FastReport VCL URL: https://www.fast-report.com/blogs/remove-object-intersection-vcl Summary: New tools to improve your reports: highlighting the intersection of objects, correct export to XLSX, auto-directional mode. New tools to improve your reports: highlighting the intersection of objects, correct export to XLSX, auto-directional mode. New tools to improve your reports: highlighting the intersection of objects, correct export to XLSX, auto-directional mode. In the new version of FastReport VCL 2022.2, we have added new functions to the report designer that will help you detect the most common errors when developing report templates as well as fix them. FastReport VCL is a report generator with a free layout of objects. This means that objects can be arranged in any order, including overlapping other objects. These objects can be successfully converted to free object layout export formats but can cause problems in documents with a rigid structure. An example of such a format would be an XLSX table. Intersected objects cannot be exported due to the format's strict tabular structure. You can learn more about the correct design of a report in the user guide. In this article, we will look at how to identify such problems in the finished report, and what tools can be used to quickly fix them. Problem. Finding object intersections First, you need to open the report in the report designer. The example uses a modified report from the main demo application. At first glance, there are no problems. Let's see how the rendered report looks like in the preview. Problems can become apparent with tabular exports such as XLSX. We see that extra columns appeared in the table during export and the contents of the object were cut off. It is difficult to detect such errors even in a report that has been running for a long time. Let's return to the report designer. Starting from FastReport VCL 2022.2, there is now a button on the standard toolbar in the report designer enabling a new feature - "Highlighting the intersection". Press the button to highlight the intersection of objects. Now we can see which objects overlap and where they intersect. Solution It is quite simple to fix errors in a demo report because the intersections are clearly visible, and there are not so many report objects. Let's just move the problem objects. How to speed up fixing a report with many objects?  In this case, another feature from the release of FastReport VCL 2022.2, Auto Guides, can help the report developer. In this mode, extension lines are automatically generated for all four points of each object in the report. Importantly, this mode does not replace extension lines added by the user on the report page but supplements them. You can change this mode with the help of the button on the upper line of the workspace of the report designer. There are 4 modes in total: Automatic leader lines disable d –user-added extension lines are used. The button icon in this mode looks like  . Automatic leader lines enabled –extension lines are created automatically for each object. The button icon in this mode looks like  . Only horizontal automatic leader lines are enabled - extension lines are created automatically for each object only in the horizontal plane. The button icon in this mode looks like   . Only vertical automatic leader lines are enabled - extension lines are created automatically for each object only in the vertical plane. The button icon in this mode looks like   . Press the button and turn on the mode of automatic extension lines with full display . Now you can move the extension lines with problem objects. In this mode, problem areas are clearly visible, which can show up when using table export filters. But these are not all the features of the "auto-guides" mode. In this mode, the report designer can add any of the "auto guides" to custom page guides. It is enough to move the guideline pointer on the ruler and click the plus sign. This allows you to create custom guides that will be used for alignment when new objects are added to the report. Of course, "auto guides" can be removed from custom guides in the same way as when added. Move the guideline pointer on the ruler again and press the minus sign. This functionality offers the report developer a whole range of beautiful and intelligent reports that can be exported to any data format. Tags: VCL, VCL, Lazarus, Lazarus, FastReport, FastReport, Designer, Designer, Report, Report, Delphi, Delphi, XLSX, XLSX ### How to remove unnecessary objects from the preview window toolbar URL: https://www.fast-report.com/blogs/remove-objects-preview-window-toolbar Sometimes you may need to limit the functionality of the report, for example, remove unnecessary export formats from the list in the preview mode. This can be done in your application code. Let’s write a function to delete a report object:   ``` private void RemoveRegistered(Type type) { ObjectInfo obj = RegisteredObjects.FindObject(type); RegisteredObjects.Objects.Items.Remove(obj); } ```  As you can see, first you need to find the specified object in the collection of registered objects. Then delete the object. Now let's see how to call this method:       ``` RemoveRegistered(typeof(FastReport.Export.LaTeX.LaTeXExport)); RemoveRegistered(typeof(FastReport.Export.Zpl.ZplExport)); RemoveRegistered(typeof(FastReport.Export.Svg.SVGExport)); RemoveRegistered(typeof(FastReport.Export.Dbf.DBFExport)); ```  That is, to remove the registered object, you just need to pass the object type. Important note! You must delete objects after creating the Report object, otherwise, when you delete, you will search for objects in an empty collection. Another way to disable objects is also possible: ``` private void DisableRegistered(Type type) { ObjectInfo obj = RegisteredObjects.FindObject(type); obj.Enabled = false; } ```  In this case, you can both turn off and include objects by writing one more function: ``` private void EnableRegistered(Type type) { ObjectInfo obj = RegisteredObjects.FindObject(type); obj.Enabled = true; } ```  In this way, you can organize the management of the display of objects in the report preview menu. We considered deletion of objects using the example of exports, but this is also true for all other registered objects (functions, transports, etc.). Tags: .NET, .NET, FastReport, FastReport, Preview, Preview, Toolbar, Toolbar ### How to save a report to cloud services using FR VCL 6 URL: https://www.fast-report.com/blogs/save-report-cloud-services-vcl We usually download and save reports on a local drive when working with a desktop application. An alternative to this is the client server application. The reports will be stored on a remote server. But, what if there is no way to deploy a remote server, and you want to store reports on a shared resource? Of course, you can manually migrate your reports to web repositories. However, FastReport VCL 6 offers us a much more convenient way - storing reports in cloud services. Cloud services have become popular due to their reliability and data security. Almost every modern cloud storage provide OAuth2 authentication, which greatly simplifies access to data for client applications. Ultimately, you get a reliable data storage with the ability to access third-party data. What does FastReport VCL 6 offer? It gives an ability to save reports in four cloud services: DropBox, GoogleDrive, OneDrive, Box.com. And you can save not only the prepared report in the format. Fp3 or export, but the report template itself in the .fr3 format. Access to the data is performed by application. I want to consider two examples of creating such applications: By the example of Google Drive . 1)      You need to create a project beforehand. You can do this in the Developers Console: https://console.developers.google.com/ Click on the title "Create application". Then enter the name of the application and accept the terms of use that Google offers you. 2)      Now, in our project, you need to add the Google Drive API library. This can be done on the "Library" tab. So, select the library and click the "Enable" button. 3)      To use the connected library, we are prompted to create credentials. Click the button "Create credentials". Next, we need to choose where the API will be called from. I chose "Other, with user interface". Choose the way to access data - user data. Set the OAuth 2.0 client ID. Enter an arbitrary name (for example, TestUser) and click the button "Create Customer ID". 4)      Next we are offered to download the json file with credentials. We press "Not now".Next we are invited to download a json-file with credentials. We click "Not now". Now, in the "Credentials" tab we have TestUser. Click on this name and go to the client's credentials. Client ID and Client Secret, we will use in FastReport when saving or loading the report. The example of DropBox . To work with its API, we need to create an application on the platform of this service. 1) Log in to the web page https://www.dropbox.com. 2) Create a new application here: https://www.dropbox.com/developers/apps/create. Choose the type of application - Dropbox API. 3) In the second step, select the type of access - access only to the application folder or to the entire repository. We choose the first option. 4) In the third step, specify the name of the application. Here it is necessary to try not to repeat the existing one. 5) On the application settings page we see App Key. On this page, we need to add Redirect URIs. After authorization in DropBox it is necessary to return to your web application. To do this, you need to specify a Redirect URI. But, since I do not have a web application I am giving a link to the local computer - http://localhost. Now you can access the DropBox from FastReport. So, we looked at two examples of creating applications with the cloud storage API. For the OneDrive and BOX.com services, you will also need to use the API through the application. Now let's see how to save and load reports from cloud storage. As you remember, we have two save formats available - fr3 and fp3. The first is the format for storing the report template, the second is the format for storing the prepared report, that is, the template filled with data. To save the report template (fr3) to the cloud service, use the File-> Save As menu. Next, choose one of the available cloud services: 1)      If you select Dropbox, the following window appears: Here we enter the application key, if necessary, select the save directory in your Dropbox. Next, you can enter your login and password from your Dropbox account, but the security will suffer. So, we ignore this option and click OK. The Proxy tab contains the Proxy settings accordingly, if necessary: After that, we will be offered to authorize in the DropBox service and allow the application to access the data. As a result we receive a window with contents of a folder of our application in DropBox. For the time being it is empty. Let's save the report:  2) If you select GoogleDrive, you will get the window: Here everything is clear, enter the client ID and secret code that you received when creating an account in the project on GoogleDrive. Click Ok. In this case, the application will request permission to access the data. We press the "Allow" button and get the contents of the repository: For clarity, the folder already has one saved report. 3) If you chose OneDrive, when saving, you will see this window: It reminds us of the connection window to DropBox. Here an application identifier is required as well. After authentication, we will get a file saving window: 4) If you chose BOX.com. In this case, we'll see a connection window similar to GoogleDrive: Enter the client ID and secret key. After authentication, we'll see the save file: To open a report saved in the cloud service, we also use the File-> Open menu: Here, the forms of connection to the services are absolutely the same as when saving. Only the last window differs. Now this is the file selection window: Now about saving the file of the prepared report. To do this, you must run the report in preview mode. To save, use the diskette icon: You will not be able to open the report in fp3 format. Perhaps in the next versions this option will appear. To save the export to the cloud service, click on the diskette icon and select the desired export format. On the export settings form, choose where to save it: Tags: VCL, VCL, FastReport, FastReport, Web Storage, Web Storage ### How to save report in HTML into ZIP URL: https://www.fast-report.com/blogs/save-report-html-zip When I was developing another PHP application, it was necessary in the financial statements. Previously I'd had great experience with FastReport.Net report generator. So I decided to use it for this purpose too. Unfortunately, the option with the Web-based reporting was irrelevant since we did not use ASP .Net in this project. The idea was born to use a REST web service that will build a report and give it to a php application. I will explain development of the service later. And now let's focus on the process of report building and preparation to be sent via REST. For simplicity, I'll demonstrate it on an example of a console application. We need FastReport libraries: ``` using FastReport; using FastReport.Export.Html; using FastReport.Utils; ```  I will pass the report title via the parameter: ``` static void Main(string[] args) { if (args.Length > 0) DoExport(args[0]); else Console.WriteLine("Set the report file (*.frx) as parameter"); } ``` Create the method of exporting report to HTML and archiving in ZIP: ``` private static void DoExport(string reportFile) { if (File.Exists(reportFile)) { Config.WebMode = true; // set WebReport mode for disable all progress and enable thread-safe code using (Report report = new Report()) // create new report object { report.Load(reportFile); // load report from file report.Prepare(); // prepare report using (HTMLExport html = new HTMLExport()) // create new export object { html.SaveStreams = true; // enable saving in streams report.Export(html, (Stream)null); // set target stream in null - we have multiple streams inside export object if (html.GeneratedFiles.Count > 0) { ZipArchive zip = new ZipArchive(); // create ZIP object for(int i = 0; i < html.GeneratedFiles.Count; i++) zip.AddStream(html.GeneratedFiles[i], html.GeneratedStreams[i]); // add streams with file names in zip zip.SaveToFile(Path.GetFileNameWithoutExtension(reportFile) + ".zip"); // write zip in file } } } } else Console.WriteLine("File " + reportFile + " not found!"); } ``` Here it should be noted about Config.WebMode property - it enables the "quiet" mode of reporting without issuing any dialogs and progress bars. In this example I pack one report, but there's no reason why not to put a few pieces in archive. Now start the application in the console with the parameter. The parameter specifies the path to the report. And get a zip-file in the folder with the application. The archive is a packed report in html format. Thus, using a web service we can pass into our web application an archive with one or more reports. Tags: .NET, .NET, FastReport, FastReport, HTML, HTML ### How to select the top values in a matrix URL: https://www.fast-report.com/blogs/selecting-top-values-in-matrix Summary: Writing SQL query for selecting the top values in a reports matrix. Writing SQL query for selecting the top values in a reports matrix. Writing SQL query for selecting the top values in a reports matrix. The article is relevant until version 2022.1. FastReport .NET has a great tool for displaying data as an integrated table or matrix. Many of us would like to improve the functionality of matrices, for example, with such a useful option as a choice of N top values. It seems as simple as selecting the N top lines from a data source. However, besides making a selection of the top values, it is necessary to group all the rest data into a single recording, which is the main problem. This cannot be done with the built-in tools of the Matrix object. Thus, we have to prepare the data so that they contain both the top values and the sum of all the rest values. This means is suitable for SQL databases. Everything we need is to write an SQL query. Assume we produce a list of employees’ wages by years. In the data source editor, we may use an SQL query, if an SQL database is used. This is how the SQL query, which will select 2 top values and the sum of all the rest values, will look like: ``` SELECT top 2 name, year, month, salary FROM crosstest ORDER BY salary UNION SELECT 'Other' AS name, year, month, SUM(salary) FROM crosstest WHERE name NOT IN (SELECT Top 2 name FROM crosstest ORDER BY salary) GROUP BY name, year, month ``` Here we combine two queries with a union operator. In the first query, we choose the top values, in the second query — the sum of all remaining values. As a result, we obtain the following matrix: As you can see, by using various techniques of preparing initial data, we can obtain the desired effect, even if such functionality had not been initially provided in the report generator. Tags: .NET, .NET, FastReport, FastReport, SQL, SQL, Filtering, Filtering, Matrix, Matrix ### How to send a report to Email from a database in .NET Core application URL: https://www.fast-report.com/blogs/emailing-reports-netcore-app Summary: Let's take a closer look at how to send a report to email from a database in a .NET Core application. Find more usefull tips and articles in our blog. Let's take a closer look at how to send a report to email from a database in a .NET Core application. Find more usefull tips and articles in our blog. Let's take a closer look at how to send a report to email from a database in a .NET Core application. Find more usefull tips and articles in our blog. We have already discussed how to send a report to a group of emails from the database. In this article we will do the same, but for a web application on the .NET Core MVC platform. Let me remind you that our task is to get a list of email addresses and user names from a certain database and, send emails with an attached report to these mailboxes. Let's use the MS SQL Server database. Create an ASP application .NET Core MVC application. First of all, add the necessary libraries to the project using NuGet Packages Manager. In the general nuget repository we find and install packages: Microsoft.EntityFrameworkCore; Microsoft.EntityFrameworkCore.Relational; Microsoft.jQuery.Unobtrusive.Ajax; jQuery. From the local repository - the Nuget folder in the FastReport.Net installation directory, install the packages: FastReport.Core; FastReport.Web. And now we will create the context of work with the database and the class-essence of the table. To do so, open the package console Nuget. Open the Tools -> Nuget Package Manager -> Package Manager Console menu. In the console, type the following command: scaffold-dbcontext "Server=localhost;Database=testdb;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models Of course, here you have to specify your connection string to the database server and a folder for the data model (Models by default). PM> scaffold-dbcontext "Server=localhost;Database=testdb;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models After that, in theory, two files should be added to the Models folder: the context and the table entity. In my case, this is testdbContext.cs and Emails.cs. However, an error may occur during file generation: error MSB4064: The "SharedCompilationId" parameter is not supported by the "Csc" task. There is a settable public instance property. If this happens, add one more package in the NuGet package manager: Microsoft.Net.Compillers Let's connect FastReport to our project right away. In the Startup.cs file, add the line: ``` public void Configure(IApplicationBuilder app, IHostingEnvironment env) { … app.UseFastReport(); … } ```  Now back to the data model. To get records from the database, we need to create the GetEmails method. Create a class facade for working with data: ``` namespace WebMailing.Models { public static class Facade { public static List GetEmails() { using (Models.testdbContext context = new Models.testdbContext()) { var emails = (from adresses in context.Emails select adresses).ToList(); return emails; } } } } ```  Let's go to the ‘HomeController’ controller. In the Index method, load the report to display it on the main page of the site: ``` using System; using System.Collections.Generic; using System.Diagnostics; using Microsoft.AspNetCore.Mvc; using WebMailing.Models; using FastReport; using FastReport.Export.Pdf; using FastReport.Export.Email; using FastReport.Web; … public IActionResult Index() { WebReport webReport = new WebReport(); webReport.Report.Load(Environment.CurrentDirectory + "/text.frx"); ViewBag.WebReport = webReport; return View(); } ```  We will add two methods of sending emails. The first one will send personal letters with the name of the client in the greeting, the second one will send one letter to a group of addresses. So, the first method is: ``` [HttpPost] public ActionResult SendMail() { Report report1 = new Report(); //Create new report object report1.Load(Environment.CurrentDirectory + "/text.frx"); //Load report report1.Prepare(); //Prepare report   PDFExport pdf = new PDFExport(); //Cteate PDF export EmailExport email = new EmailExport(); //Create Email export   List emails = Models.Facade.GetEmails(); foreach (Emails item in emails) { SendMessage(report1, pdf, email, item.Email, item.Name); } return View(); } ```  Using it, we created a report, export to PDF, export to Email. Then, in the loop, we get the records from the table and call the method of sending the letter. As parameters, we pass in the report object, export PDF, export to Email, Email address and client name. And here is the method of sending the letter: ``` public void SendMessage(Report report, PDFExport pdf, EmailExport email, string recipient, string custName) { string message = "This is test message."; email.Account.Address = "gromozekaster@yandex.ru"; email.Account.Name = "Test User"; email.Account.Host = "smtp.yandex.ru"; email.Account.Port = 25; email.Account.UserName = "Gromozekaster"; email.Account.Password = "*****"; //Your password email.Account.MessageTemplate = "Test"; email.Account.EnableSSL = true; //email addressee settings email.Address = recipient; email.Subject = "TestMessage"; email.MessageBody = custName is null ? message : string.Format("Dear, {0}! {1}", custName, message); email.Export = pdf; //Set export type email.SendEmail(report); //Send email } ```  In it, we set up an email client to send a letter. And immediately add the second method of sending one letter to a group of addresses: ``` [HttpPost] public ActionResult SendAll() { Report report1 = new Report(); //Create new report object report1.Load(Environment.CurrentDirectory + "/text.frx"); //Load report report1.Prepare(); //Prepare report PDFExport pdf = new PDFExport(); //Cteate PDF export EmailExport email = new EmailExport(); //Create Email export   List emails = Models.Facade.GetEmails(); string addresses = ""; foreach (Emails item in emails) { if (addresses == "") addresses = item.Email; else addresses = addresses + ", " + item.Email; } SendMessage(report1, pdf, email, addresses, null); return View(); } ```  As you can see, it is very similar to the previous method, with the only difference that in the cycle we receive all email addresses, and send the letter once. As an email parameter, we pass a string variable with all email addresses, but we don’t pass the client name. For both the SendMail () and SendAll () methods, we need to create views of the same name — view. Their contents are extremely simple: ``` @{ ViewBag.Message = "Report was sent"; } @ViewBag.Message ```  We just inform about sending. Let's move on to the Index.cshtml view. In it, we need to add two buttons to send letters using different methods, as well as display the report: ``` @{ ViewData["Title"] = "Home Page"; }
@await ViewBag.WebReport.Render() ```  To use ajax jquery we add a link to the jquery.min.js script. Next, add a form with two buttons and two scripts for each of them. The scripts are extremely simple - call the method from the controller and return the resulting view. At the end - we deduce the report from the Index method. Just for beauty. Let's run the application and see what our web page looks like: We send letters by different methods: And: In the first case, in the text of the letter we refer to the client by name, in the second there is none. That's all. Tags: .NET, FastReport, Core ### How to send and receive reports via Gmail in FastReport VCL URL: https://www.fast-report.com/blogs/transport-gmail-vcl Summary: Adding a new Gmail mail transport to your application and configuring it from FastReport VCL with detailed instructions. Adding a new Gmail mail transport to your application and configuring it from FastReport VCL with detailed instructions. Adding a new Gmail mail transport to your application and configuring it from FastReport VCL with detailed instructions. In this article, you will be introduced to a new sub-category of transports that became available with version 2022.2.7 and which is called “mail transports”. Now it includes 2 components with access to Gmail and Outlook. Mail transports have the following functionality: - saving and loading a report; - saving the export result. Saving means sending an email. Uploading involves the use of files attached to the letter, while the letter can be in any mail category (inbox/sent/drafts etc.). You can read more about using Outlook at the following link. Important! For the HTTPS protocol to function properly, the following OpenSSL libraries are required: libssl-3.dll and libcrypto-3.dll. These libraries can be found in the directory with the main demo application. They need to be copied to the application's folder or the system directory. Content - Adding Transport to the Application and its setting - Connecting to Gmail - The future of mаil transports Current state of transports FastReport has components called “transports”. They are required to аllow access to: - cloud storage ( Dropbox , OneDrive , Box.com , Google.Drive ); - FTP-servers; - Email (only sending messages); - mail service (Gmail, Outlook). Cloud storage and FTP servers support the following functionality: - saving and loading a report; - saving the export result; - using files (for example, pictures) when building a report. Adding Transport to the Application and its setting 1. Go to the component palette in the Embarcadero Rad Studio and expand the “FastReport VCL Internet transports” tab. 2. Select the required component and add it to the application form. You can use the context menu on the component — this will establish the connection directly from the development environment. Click on the “Edit connection” submenu. By default, transports respond only to an authorization response from a browser using port 9898. If this port is already used or you plan to use this port in the future, FastReport VCL allows you to change the port by setting the ListenerPort property. Further, we will take port 9898 by default. Now let's look at the connection steps for mail transports. Important! The user does not need to perform all of the following steps every time to authorize. This setting is done only once by the cloud services administrator. After completing all the steps, the obtained authorization data can be used by other users. Connecting to Gmail When a user wants to open (or save) a report (or export a result) using the transport, he will see the standard login dialog (if he has not logged in before). To go to the connection settings page, click on the question mark at the top right of the authorization window. This will open your default browser with the Gmail app settings page. If the user is not authorized in Gmail, an authorization page will open, where you will need to log into your Gmail account. If this account has not previously added projects to work with the Google API, then you first need to create a new project. Click on the "Create project" button. Enter a project name and click "Create". Use the “Select project” button to select the created project. Select the project you created earlier and click “Open”. Go to the “OAuth consent screen” tab. We need to select the users that can use cloud storage: internal use (only users of the organization) or for all Google accounts. Then click the “Create” button. Next, you need to fill in the application name and contact e-mail. Click "Save and continue". This step allows you to set the scope, you can skip it for Google Mail. Click on "Save and continue". The next step allows you to setup access to the application for a specific group of users. You can skip this step if you are going to аllow access to the application. Click "Save and continue". The application has been created, go to the “Back to dashboard” tab. Go to the “OAuth consent screen” tab and click on “PUBLISH APP” to open access to this application. Open the following link and enable the Google Mail API for the created project by clicking the “Enable” button. Now you need to create authorization keys, go to the "Credentials" tab. Click on "Create Credentials" and select "OAuth client ID". You should select the type of application (in our case, Desktop App ). Enter any name for the connection and click "Create". The authorization client will be created. Copy the fields “Client ID” and “Client Secret” into the corresponding entry fields of the FastReport VCL authorization dialog. Click OK. A new window should open in your default browser. The screen will prompt you to select an account for authorization. Next, we will see that Google hasn’t verified the application. Click “Advanced” and Go to the Application name (unsafe). Another dialog asking аbout access to the application will аppeаr, select access rights and click “Continue”. You can close the browser window. If the connection is successful, you will see the standard FastReport VCL file browser. This completes a successful connection setup. Now you know how to connect to Gmail in FastReport VCL. The future of mаil transports Functionally, cloud transports support all the previously mentioned features. The graphic design of mail transports during loading will be improved in further releases. So far, the graphical user interface (GUI) is used as cloud storage. Now categories and messages are implemented as folders and attachments as files. In the future, it is planned to improve the graphic component, making it more user-friendly. Functional improvements will include a search by mаil. The GUI of the send message window will also be slightly changed. We will also note the temporary feature of sending the export result. If the export generates multiple files, then each file is sent in its own email. That is, if you want to send the export result to a page-by-page PNG, then each picture will be sent in a separate email. Almost all exports to FastReport VCL generate only 1 output file (PDF, DOCX, RTF and others), most users won’t notice this. We will fix the bug in future releases. For all questions, contact our  Support . Tags: VCL, Lazarus, FastReport, Delphi, Web Storage ### How to send and receive reports via Outlook in FastReport VCL URL: https://www.fast-report.com/blogs/transport-outlook-vcl Summary: Adding a new Outlook mail transport to your application and configuring it from FastReport VCL with detailed instructions. Adding a new Outlook mail transport to your application and configuring it from FastReport VCL with detailed instructions. Adding a new Outlook mail transport to your application and configuring it from FastReport VCL with detailed instructions. In this article, you will be introduced to a new sub-category of transports that became available with version 2022.2.7 and which is called “mail transports”. Now it includes 2 components with access to Gmail and Outlook. Mail transports have the following functionality: - saving and loading a report; - saving the export result. Saving means sending an email. Uploading involves the use of files attached to the letter, while the letter can be in any mail category (inbox/sent/drafts etc.). You can read more about using GMail at the following link. Important! For the HTTPS protocol to function properly, the following OpenSSL libraries are required: libssl-3.dll and libcrypto-3.dll. These libraries can be found in the directory with the main demo application. They need to be copied to the application's folder or the system directory. Content - Adding Transport to the Application and its setting - Connecting to Outlook - The future of mаil transports Current state of transports FastReport has components called “transports”. They are required to аllow access to: - cloud storage ( Dropbox , OneDrive , Box.com , Google.Drive ); - FTP-servers; - Email (only sending messages); - mail service (Gmail, Outlook). Cloud storage and FTP servers support the following functionality: - saving and loading a report; - saving the export result; - using files (for example, pictures) when building a report. Adding Transport to the Application and its setting 1. Go to the component palette in the Embarcadero Rad Studio and expand the “FastReport VCL Internet transports” tab. 2. Select the required component and add it to the application form. You can use the context menu on the component — this will establish the connection directly from the development environment. Click on the “Edit connection” submenu. ListenerPort. By default, transports respond only to an authorization response from a browser using port 9898. If this port is already used or you plan to use this port in the future, FastReport VCL allows you to change the port by setting the ListenerPort property. Further, we will take port 9898 by default. Now let's look at the connection steps for mail transports. Important! The user does not need to perform all of the following steps every time to authorize. This setting is done only once by the cloud services administrator. After completing all the steps, the obtained authorization data can be used by other users. Connecting to Outlook When a user wants to open (or save) a report (or export a result) using the transport, he will see the standard login dialog (if he has not logged in before). To go to the connection settings page, click on the question mark at the top right of the authorization window. This will open the default browser with the Azure Application Management page. If the user is not authorized in Azure, then an authorization page will open, where you will need to sign in to your Azure account. If this account has never created an Azure app before, the first step will be to create a new app. First, you need to create a new application. Click the "Register an application" button. At this point, you must enter an application name, select supported account types, and fill in the Redirect URI. For effortless setup, in the “Types of supported accounts” property, select the third item “Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)”. You can read more about this by clicking on “Help me choose...”. If you want to use the standard port, enter "http://localhost:9898" in the Redirect URI field. Click the "Register" button. Our application will be successfully created. Copy the value of the “Client ID” field into the FastReport VCL authorization dialog. Open the “Certificates & secrets” section. Click on "New client secret". Enter a description and select an expiration date for the code. Click "Add". Copy the “Value” to the FastReport VCL authorization dialog. Click "Ok". A new browser window will open asking you to sign in to your account. Сlick "Yes" аfter authorization. This completes the successful connection setup. Now you know how to connect to Outlook in FastReport VCL. The future of mаil transports Functionally, cloud transports support all the previously mentioned features. The graphic design of mail transports during loading will be improved in further releases. So far, the graphical user interface (GUI) is used as cloud storage. Now categories and messages are implemented as folders and attachments as files. In the future, it is planned to improve the graphic component, making it more user-friendly. Functional improvements will include a search by mаil. The GUI of the send message window will also be slightly changed. We will also note the temporary feature of sending the export result. If the export generates multiple files, then each file is sent in its own email. That is, if you want to send the export result to a page-by-page PNG, then each picture will be sent in a separate email. Almost all exports to FastReport VCL generate only 1 output file (PDF, DOCX, RTF and others), most users won’t notice this. We will fix the bug in future releases. For all questions, contact our  Support . Tags: VCL, Lazarus, FastReport, Delphi, Web Storage ### How to send report in PDF through FTP URL: https://www.fast-report.com/blogs/send-report-pdf-ftp-net FastReport .Net allows you to export reports in various formats, send them via Email, as well as via FTP. In this article, I want to focus on the transfer to the server via FTP reports. It should be noted, it is not very convenient to run each report and manually perform sending via FTP. What if a large number of reports should be sent to the server? What are the solutions to this problem: Send all report files directly using the file manager with FTP-connections. Butbefore all reports should be exported to the desired format; Arrange export and send  report using FastReport, but do it in the application code. Obviously, the second way will save time when you export the report in the desired format. In addition, you can completely automate this process. For example, to lay out all of the reports to a server on a schedule or one click a button. I will show an example in which you will see the simplicity of an operation such as sending report via FTP from the application code. Create a Windows Forms application. Place a button on the form. Add the libraries into "using": ``` using FastReport; using FastReport.Export; using FastReport.Utils; ```  Add the code for the button click handler: ``` private void button1_Click(object sender, EventArgs e) { Report report1 = new Report(); //Create new report FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport(); //Create pdf export object report1.Load(Environment.CurrentDirectory+"\\text.frx"); //Load report report1.Prepare(); //Prepare report   FastReport.Cloud.StorageClient.Ftp.FtpStorageClient ftp = new FastReport.Cloud.StorageClient.Ftp.FtpStorageClient(); //Create ftp client //ftp connection settings ftp.Server = "78.47.131.251/Reports"; ftp.Username = "user"; ftp.Password = "password"; ftp.SaveReport(report1, pdf); //Send report } ``` First we create an instance of the report object. Then create the export object to PDF. Then we load the report and perform its construction (Prepare). Create a client to work with FTP. You must specify all three properties: the server, user and password. Do not forget that you need to specify the path to the desired folder, otherwise the reports will be placed directly in the root. Finally, we send a report to the server. As the parameters pass the report itself and export to PDF. FastReport will make a report export and send via FTP prepared file in pdf. Start the app, press the button and check the existence of the file on the server: Using this simple procedure, you can send multiple reports in any of the available formats,  HTML for instance. So you can design the reports on a local computer and share them on your website. Tags: .NET, .NET, Export, Export, FastReport, FastReport, PDF, PDF ### How to send reports on a schedule by email via FastReport.Desktop URL: https://www.fast-report.com/blogs/send-reports-schedule-email-desktop Summary: Often the company needs to generate periodic reports, send them to e-mail or save to a certain place. Having a report generator, it's easy to do. Often the company needs to generate periodic reports, send them to e-mail or save to a certain place. Having a report generator, it's easy to do. Often the company needs to generate periodic reports, send them to e-mail or save to a certain place. Having a report generator, it's easy to do. Often the company needs to generate periodic reports, send them to e-mail or save to a certain place. Having a report generator, it's easy to do. However, you need to create an application that will work with the report generator. This requires some programming skills and experience with the programming environment. But what if you don't have this experience, or don't want to purchase an expensive development environment license? FastReport Desktop allows you to solve these issues. This is a stand-alone software package that doesn't require the creation of a custom application. Accordingly, no programming skills are required. FastReport Desktop allows you to: create reports, create them on a schedule, export the report to various formats, send a report by email, save reports on a local disk or on remote resources. Let's look at this software package. It is represented by five parts: - Designer – the program for creating report templates; - Viewer – the program for viewing reports; - Builder – console utility for report building; - Configurator – the program for creating configuration files containing instructions for builder; - Scheduler – task scheduler for reports. On the diagram I will show the technological process of working with FastReport Desktop: So, we are faced with the task of organizing a daily report and sending it by e-mail. 1. From the diagram above it is clear that in the beginning it is necessary to create a report with the designer. To do this, run the appropriate program. I created a simple report of the Master-Detail type, which displays a list of categories of goods. This is what it looks like: We save the report to the local disk. 2. Now you need to create a configuration file. Run the Configurator: Select the report file in the "Report" section by pressing the button. Then in the "Export as" section: click the checkbox to enable export and select PDF export from the drop-down menu. You can set the PDF file settings: For example, the "Text in Curves" option. In this case, all the text in the report will be drawn with curves, which makes copying the text impossible. We proceed further. The next step is to set up the email settings. The report file will be attached to the email. Check the checkbox in the "Send e-mail" section. You must fill out the settings of the outgoing e-mail server: On the E-mail tab, fill in the email parameters: This is the main form of the program that displays all the settings: You need to save the configuration to the hard disk. By the way, the "Run" button allows you to run the configuration immediately. Close the program and proceed to create a task in the Scheduler. 3. Run the Scheduler: The interface is simple and straightforward. Add a new task using the "Task" menu: The form of creating a task is also intuitively clear: The task name, configuration file, and trigger are specified. By default, the desired trigger is selected - "Every day". For this trigger, the date and time of operation, the frequency of the recurrence are specified. A set of triggers covers all possible needs: We press the button "Create". In the main form a new task has appeared: So, we see that the task is enabled and the time of the last run is still empty. Well, wait a bit. The task worked at a given time. A note about this appeared in the field "Last run time". Now, the report will be formed every day and sent at this time. And now check the mailbox: And we see a letter with our report in PDF format. Convenient and simple. Tags: FastReport, FastReport, Desktop, Desktop ### How to set a picture in a report from the user application code URL: https://www.fast-report.com/blogs/picture-from-user-code Summary: There are three ways to set images in a report using the report generator FastReport .NET. Let's have a closer look There are three ways to set images in a report using the report generator FastReport .NET. Let's have a closer look Looking at three ways to set images in a report using the report generator FastReport .NET. Quite often there is a need to set various images in the report depending on any conditions or input parameters. This problem was encountered by the user of the List & Label report generator: Is there a way to programmatically insert an inline image into a List & Label document from .net code? However, the user did not find a solution: Unfortunately, it is not possible to insert an image from .NET code. This is only possible when working with a report in the List & Label designer. Therefore, I want to show how this can be implemented in the FastReport.Net report generator. So, when creating a report, we work directly with all of its objects - create them, add them to the report page, set properties. Consider a simple example of creating a report from the code of a user application with a picture inside. ``` //Create instance of class Report Report report = new Report(); //Add report page ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName(); //App data band DataBand data = new DataBand(); //Add data band to page page.Bands.Add(data); data.CreateUniqueName(); data.Height = Units.Centimeters * 1; //Set band height //Create picture object PictureObject pic = new PictureObject(); pic.Bounds = new RectangleF(0, 0, Units.Centimeters * 5, Units.Centimeters * 5); //Set object bounds pic.Image = new Bitmap("../../App_Data/snow_flake.ico"); //Set picture pic.Parent = data; //Set picture parent object pic.CreateUniqueName(); report.Prepare(); //Build report report.Show(); //Show report ```  This is a very simple example of a report with just one ‘data’ band. Since this report is entirely created in the program code, there is no problem to create an object with a picture and put it into the report. Creating a report from the code allows us to change it as much as we want, depending on the logic of the program. Consider another case. Let's say you already have a report template created in a designer. You want to change the picture in the report depending on the logic of the program. In this case, the report template should already have a Picture object, and you'll just replace the picture itself from the user application code. Here's what the code will look like in the program:          ``` //Create report object Report report = new Report(); //Load report template into the report obj report.Load("../../App_Data/Picture.frx"); //Get picture object from the report template PictureObject pic = report.FindObject("Picture1") as PictureObject; //Set object bounds pic.Bounds = new RectangleF(0, 0, Units.Centimeters * 5, Units.Centimeters * 5); //Set the image pic.Image = new Bitmap("../../App_Data/snow_flake.ico"); //Build report report.Prepare(); //Show report report.Show(); ```  Here, we find an object with a picture in the template of the report and change its properties as desired. And finally, the third version of the Picture object is from the built-in report script. The report script allows you to change the pattern and data in the report as you like. You can pre-add a Picture object to the template, or you can add it directly to the report script. Truly, limitless flexibility. There is no need to use a custom application to manage the contents of the report. This is a big plus for me, because there is no need to edit the application code. The example for setting an image in the report script is extremely simple: ``` Picture1.Image = new Bitmap("C:/Users/Dimon/source/repos/PictureSetting/PictureSetting/App_Data/snow_flake.ico"); ```  You only need to decide on an event in which you want to change a picture, for example, you can use the BeforePrint event for a Picture object. Tags: .NET, .NET, FastReport, FastReport ### How to Set Up a Connection to Apache Ignite in FastReport .NET URL: https://www.fast-report.com/blogs/connection-apache-ignite-net Summary: In this article, we will explore how to configure a connection to Apache Ignite in FastReport .NET. You will learn the necessary steps to connect the plugin via code and the report designer. In this article, we will explore how to configure a connection to Apache Ignite in FastReport .NET. You will learn the necessary steps to connect the plugin via code and the report designer. Apache Ignite is a distributed in-memory computing platform that enables the processing and storage of large volumes of data in memory to achieve high performance and scalability. In this article, we will explore how to configure a connection to Apache Ignite in FastReport .NET. Apache Ignite is a distributed in-memory computing platform that enables the processing and storage of large volumes of data in memory to achieve high performance and scalability. In this article, we will explore how to configure a connection to Apache Ignite in FastReport .NET . You will learn the necessary steps to connect the plugin via code and the report designer. By following our recommendations, you will be able to effectively use Apache Ignite as a data source for your reports in FastReport .NET. The implemented plugin for connecting to Apache Ignite is a lightweight solution based on the Ignite.NET Thin Client. Apache Ignite Plugin Features Connection to Apache Ignite clusters: The plugin allows you to connect to one or more nodes in the cluster. The node addresses are specified in the host:port format, separated by commas. Working with caches: It supports interaction with caches in both key-value mode and as SQL tables. Authentication: The plugin supports authentication if the authenticationEnabled option is enabled in the cluster configuration. Handling various data types: The plugin ensures proper handling of different data types, including custom objects. Features of Apache Ignite Implementation Ignite offers two ways to logically represent data: key-value caches and SQL tables (schemas). Despite the differences, these representations are equivalent and can reflect the same data. In Ignite, an SQL table and a key-value cache are two equivalent ways of representing the same internal data structure. Access to the data can be obtained through the key-value API, SQL operators, or both methods. A cache is a collection of key-value pairs, accessed through the key-value API. An SQL table in Ignite is similar to tables in traditional database management systems, but with some additional constraints. For example, each SQL table must have a primary key. A table with a primary key can be represented as a key-value cache, where the primary key column acts as the key, and the other columns in the table are the fields of the object (value). The main difference between these two data representations lies in the method of accessing them. With a key-value cache, you can work with objects using supported programming languages. SQL tables, on the other hand, support standard SQL syntax, which can be beneficial, for example, when migrating data from an existing database. How to Connect the Plugin in Your Project To use the plugin, you must first build the project located at:   ..\Extras\Core\FastReport.Data\FastReport.Data.Ignite . After that, the plugin needs to be registered. This can be done in two ways. Method 1. Using Code. Copy the following code and paste it into your project. This needs to be done only once when starting the application. FastReport.Utils.RegisteredObjects.AddConnection(typeof(IgniteDataConnection)); Method 2. Using the Report Designer. To connect the connector in the designer, go to the "File|Settings..." menu in the Ribbon interface (or "View|Settings..." in the standard interface). In the opened window, select the "Plugins" tab and add the built .dll of the plugin as shown below. After adding the plugin, it is necessary to restart the FastReport .NET designer. How to Connect a Data Source in the Designer To create a connection to Apache Ignite, go to the "Data" menu and select "Add Data Source."   In the opened window, click on the "New Connection" button, then from the dropdown list of connection types, select the option " Apache Ignite Connection." In the window that appears, specify the address(es) of the nodes, as well as the username and password (if required). If the connection is successful, the next step will display a list of tables (caches) contained in the nodes specified in the previous step: Differences When Working with Caches in the Plugin The plugin supports working with caches that are created both as key-value pairs and as SQL tables. The method of creating and configuring a cache in Apache Ignite directly impacts the composition of fields and the representation of data types. Depending on the chosen method (for example, using classes with the [QuerySqlField] attributes, programmatic definition via QueryEntity, or working with dynamic data), the result may vary. This concerns both the list of available fields and their data types. The following code examples will use snippets from the official Apache Ignite functionality examples. These examples can be downloaded from this link in the BINARY RELEASES section:   https://ignite.apache.org/download.cgi .  Let’s open the downloaded archive and navigate to the following folder: ..\apache-ignite-2.17.0-bin\platforms\dotnet\examples\Thin From these examples, we will use the custom class Organization, which represents the data model of an organization. This class contains the following properties: Name: The name of the organization. It is marked with the [QuerySqlField(IsIndexed = true)] attribute, which allows it to be used in SQL queries and creates an index to speed up searches. Address: The address of the organization, represented as a nested object of type Address. This is also available for SQL queries due to the [QuerySqlField] attribute. Type: The type of organization (e.g., commercial or non-profit), represented by the enumeration OrganizationType. LastUpdated: A timestamp indicating when the organization's data was last updated. The complete code for the class can be found in the folder: ..\apache-ignite-2.17.0-bin\platforms\dotnet\examples\Shared\Models Creating a Cache Using QueryEntity QueryEntity is an Apache Ignite component that allows you to programmatically define the data structure (schema) for a cache and manually specify the fields along with their types. For caches with metadata (QueryEntity), operations for retrieving the list of fields and their data types are supported. Custom data types are handled in the following manner: The list of fields displays only the fields marked with the [QuerySqlField] attribute. Fields are presented in the format data_type.field_name.  For example, if the cache is created during the setup as follows: var organizationCache = ignite.GetOrCreateCache( new CacheClientConfiguration("dotnet_cache_query_organization", new QueryEntity(typeof(int), typeof(Organization)))); Then, when connecting to an already prepared instance of Apache Ignite in FastReport, the list of fields will include only those fields from the Organization class that are marked with the   [QuerySqlField] attribute. However, when viewing the data, all fields from the cache will be displayed: Creating a Cache Without QueryEntity   If the cache is created during the setup without using QueryEntity , then the data types of all fields will be defined as string. Example code:   ICacheClient cache = ignite.GetCache("dotnet_cache_put_get"); In the list of fields, all available fields will be displayed, regardless of the presence of the [QuerySqlField] attribute. This is the second method of creating a cache. Working with Caches Created as SQL Tables Finally, let's consider the third method of working with caches. Here is an example of creating and populating a cache as an SQL table: ``` cache.Query(new SqlFieldsQuery( "CREATE TABLE IF NOT EXISTS city (id LONG PRIMARY KEY, name VARCHAR) WITH \"template=replicated\"")).GetAll();   const string addCity = "INSERT INTO city (id, name) VALUES (?, ?)"; cache.Query(new SqlFieldsQuery(addCity, 1L, "Forest Hill")); cache.Query(new SqlFieldsQuery(addCity, 2L, "Denver")); cache.Query(new SqlFieldsQuery(addCity, 3L, "St. Petersburg")); ``` For such caches, the metadata (QueryEntity) contains information about the data types for each field. In an Apache Ignite cache, data may be stored without explicitly defined field names. For example: ``` var cache = ignite.GetOrCreateCache("put-get-example");   int key = 1; var val = new Address("1545 Jackson Street", 94612); cache.Put(key, val);   int key1 = 2; var val1 = 942.28956; cache.Put(key1, val1);   int key2 = 3; var val2 = "test String"; cache.Put(key2, val2); ``` When connecting to an instance of Apache Ignite in FastReport (with the code from the example above), you will see the following result. In this example: The fields Street and Zip from the custom class Address have names, as they are defined in the structure of the class. Values such as the number 942.28956 or the string "test String" do not have names, as they are added to the cache as simple key-value objects. For fields that lack a name, unique identifiers are generated. Conclusion We’ve covered how to set up a connection to Apache Ignite in FastReport .NET. By following the steps outlined, you’ll be able to integrate these systems and take full advantage of Apache Ignite as a data source for your reports. Apache Ignite provides fast data access and processing, while FastReport .NET enables the creation of powerful reports. Their integration opens up new opportunities for data analysis and visualization. We hope this article has been helpful and will assist you in effectively using Apache Ignite in your projects with FastReport .NET. Tags: .NET, FastReport, Data Source, SQL, Report, Plugin ### How to set up an Apache2 web server for FastReport .NET URL: https://www.fast-report.com/blogs/apache-web-server-dotnet Summary: We are launching the Apache2 web server on the Linux operating system for FastReport.NET and .NET 5 with a few simple commands. We are launching the Apache2 web server on the Linux operating system for FastReport.NET and .NET 5 with a few simple commands. We are launching the Apache2 web server on the Linux operating system for FastReport.NET and .NET 5 with a few simple commands. It's no secret that FastReport .NET has broad functionality. It is also a great solution that can be integrated with the Apache 2 web server. Next, we will look at the fine-tuning of Apache2 on the Linux operating system. First, let's install .NET 5 with a few commands. Download the necessary packages from the Microsoft repository: ``` $ wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb $ sudo dpkg -i packages-microsoft-prod.deb ``` Next, install the .NET5 package: ``` sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-5.0 ``` Note. You can prepare your application for Windows, namely, install FastReport.Core.Skia packages and send this project to yourself already on Ubuntu. With a test install, you do not need X11 for the application to work correctly because it is already installed with apache or on Ubuntu. Now let's start loading Apache2 with the following command: ``` sudo apt install apache2 ``` If it is successful, then proceed to the next step. Next, we are going to manage the Apache service or its reboot and shutdown. Remember that with any change in Apache, for example, when changing the config or when enabling any settings, you will need to run the following commands: ``` sudo systemctl start apache2 — Starts a previously stopped web server sudo systemctl restart apache2— Stops and restarts the web server ``` Apache is configured to start automatically when the server boots. If you don't want this, disable this with the following command: ``` sudo systemctl disable apache2 ``` To reload the start service during boot time, type: ``` sudo systemctl enable apache2 ``` Now we will set up virtual hosts. It means that if you go to localhost:80, you will be automatically redirected to localhost:5000. For everything to work correctly, it is necessary to enable some modules: ``` sudo a2enmod proxy sudo a2enmod proxy_http ``` Next, go to the automatically created folder when installing Apache: ``` sudo cd /etc/apache2/sites-available/ ``` Now we create a file with your config and immediately edit it: ``` sudo nano /etc/apache2/sites-available/your_domain.conf ``` You need to add the following lines to the file: ``` ProxyPreserveHost On ProxyPass / http://127.0.0.1:5000/ ProxyPassReverse / http://127.0.0.1:5000/ ErrorLog ${APACHE_LOG_DIR}helloapp-error.log CustomLog ${APACHE_LOG_DIR}helloapp-access.log common ``` Note: If you go to localhost:80, then you will be automatically redirected to localhost:5000 After creating the config file, activate it and disable the default config: ``` sudo a2ensite your_domain.conf —Activate your config sudo a2dissite 000-default.conf — Disable the config by default sudo apache2ctl configtest — Check the file for syntax errors (if it is ok, then you will see the "Output Syntax OK" notification in the console) sudo systemctl restart apache2 —Restart Apache for the changes to take effect ``` To publish the project, you will need the following command: ``` dotnet publish --configuration Release — Publish the application to the publish folder as a release ``` Next, go to the publish folder. You will see all dlls with a project name using the ls command. The project is started with the following command: ``` dotnet FastReport.Core.Web.Net5.dll ``` Restart Apache with the previously launched FastReport.Core.Web.Net5 application and go to the virtual host specified in Apache. Namely, on localhost:80, and see that it automatically redirects to localhost:5000. If it was successful, congratulations! You have successfully configured Apache2 for FastReport .NET. If you have any questions, write to our support at  support@fast-report.com . Tags: .NET, Linux, Core, WebReport, Ubuntu ### How to set up the LOGMARS barcode in FastReport .NET URL: https://www.fast-report.com/blogs/logmars-barcode-in-fastreport-net Summary: We review the American LOGMARS specification for the Code 39 barcode in FastReport. NET. We review the American LOGMARS specification for the Code 39 barcode in FastReport. NET. We review the American LOGMARS specification for the Code 39 barcode in FastReport. NET. LOGMARS stands for Logistics Applications of Automated Marking and Reading Symbols. It is a specification used by the U.S. government for the military goods supply. LOGMARS is a standard based on the Code 39 barcode. Code 39 consists of self-checking barcode symbols that usually do not require a check digit. However, in applications that require high accuracy, a check digit modulo 43 is added after the data. Since LOGMARS is used by the military, the check digit is mandatory. This barcode is defined by the military standard  MIL-STD-129 , which contains not only the information about where the barcode should be placed on the military cargo, but also what kind of data and how long it should be in accordance with military specifications. Alike Code 39, LOGMARS can encode uppercase Latin letters, all numbers, and special characters (such as *, -, $, %, (space), ., /, and +). Please note that in FastReport .NET the Code 39 barcode always contains check digits and has no data length limit. This means that it can be used as a full implementation of LOGMARS. Adding a barcode from the designer You do not need to look for LOGMARS in the designer. Select Code 39 and add it to the report page. All properties of this barcode were described in the article “ How to create CODE 39 and CODE 39 Extended barcodes ” Enter the value “DAHC9488O0007” into the barcode editor and save.  Creating a Code 39 barcode using the code ``` //Create a new report object Report report = new Report(); //Create a report page ReportPage page = new ReportPage(); //Create a unique identifier page.CreateUniqueName(); //Add it to the collection of report pages report.Pages.Add(page); //Create a new DataBand DataBand dataBand = new DataBand(); //with a unique identifier dataBand.CreateUniqueName(); //and add it to the band collection page.Bands.Add(dataBand); //Create a barcode object FastReport.Barcode.BarcodeObject barcode = new FastReport.Barcode.BarcodeObject(); //Set a barcode type barcode.Barcode = new FastReport.Barcode.Barcode39(); //Set the numeric combination for encoding barcode.Text = "DAHC9488O0007"; //Place the barcode on the page barcode.Parent = dataBand; //Set the size of the object barcode.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 3); //Show the report report.Show(); ``` As a result, we will get the following barcode: Now you know a little more about the LOGMARS barcode as a part of the military specification. With FastReport .NET you can create this standard by configuring Code 39 barcode.  Tags: .NET, FastReport, Barcode ### How to Set Up WSL 2 for Working with FastReport and FastCube URL: https://www.fast-report.com/blogs/wsl-fastreport-fastcube Summary: In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. Software developers have long pondered the question, "How could we run Linux applications directly in Windows, without needing to use a separate virtual machine?" The WSL technology provides a potential answer to this question. The history of WSL began in 2016. At the time, the implementation involved running Linux binary executables using system calls within the Windows kernel. The first version also included emulation of the Linux kernel through a layer to translate system calls. The second version of WSL, released in 2019, featured full compatibility with system calls, a fully functional Linux kernel, support for GPUs, and support for Linux applications with a graphical user interface. In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. Installing and Setting Up Ubuntu 24.04 in WSL 2 Launch the Windows command line as an administrator. To display a list of all available Linux distributions, you need to enter the command in the Windows command line and press Enter: wsl --list --online or wsl -l -o To install Ubuntu 24.04, run the following command: wsl --install -d Ubuntu-24.04 After installing the distribution, you will be prompted to create a user account and password. To install Ubuntu 24.04, you only need to run a few commands. The Ubuntu 24.04 terminal is available from the Windows Start menu after installing the distribution. You can also launch the Linux kernel and enter the Ubuntu 24.04 terminal using the command from the Windows command line: wsl -d Ubuntu-24.04 After installing Ubuntu 24.04, you need to update the packages. To update the installed packages, run the following commands in the Ubuntu 24.04 terminal: $ sudo apt update && sudo apt upgrade && sudo apt dist-upgrade Enter the user password and press Enter. Wait for the request to agree to update the packages. Enter Y and confirm by pressing Enter. To install Nautilus, run this command in the terminal, and then enter the following command to directly launch Nautilus. $ sudo apt install nautilus -y $ nautilus After installation, the Nautilus file manager is available from the Windows Start menu. Installing and Setting Up Linux 11 Starterkit in WSL 2 The WSL 2 subsystem allows you to use any Linux distribution by importing it from a tar file. Run the Windows command line as administrator. Run the command to download the Linux rootfs image to the root of the C\: drive: curl -o C:\alt-p11-rootfs-systemd-x86_64.tar.xz https://ftp.altlinux.org/pub/distributions/Linux/p11/images/cloud/x86_64/alt-p11-rootfs-systemd-x86_64.tar.xz To import the distribution into WSL 2, you need to run the command in the Windows command line: wsl --import Linux-11 C:\Linux-11 C:\alt-p11-rootfs-systemd-x86_64.tar.xz After importing, the Linux hard disk image file will be located in C:\Linux-11\ext4.vhdx . In the Windows command line, run the command to display a list of all registered distributions. And then run the newly imported Linux-11 distribution wsl -l -v wsl -d Linux-11 After starting Linux, a terminal will open. In the WSL configuration file for this distribution, you need to enable the use of systemd: # echo -e "[boot]\nsystemd=true\n" > /etc/wsl.conf In order for systemd to work, you need to stop and restart the distribution. To do this, use the following commands: # exit wsl -t Linux-11 wsl -d Linux-11 To update packages, you need to run the following command, then wait for the request to agree to update packages. Enter Y and confirm by pressing Enter. # apt-get update && apt-get dist-upgrade To ensure correct font display, you need to install the package:   # apt-get install fonts-ttf-ms To install and run Lazarus, you need to download the command-line utility make, then install the Free Pascal compiler and Lazarus IDE:   # apt-get install make # apt-get install fpc && apt-get install fpc-src # apt-get install lazarus Installation is complete. To launch Lazarus, run the command: # startlazarus Installation of FastReport for Application Development in Linux Before starting the installation of FastReport and FastCube components, you need to download the installation packages. In the Linux-11 terminal, run the command to install wget, then confirm your actions by entering Y and pressing Enter.   # apt-get install wget Download the trial versions of the FastReport and FastCube packages:   # wget https://www.fast-report.com/public_download/fr.vcl/fast_report-trial.rpm # wget https://www.fast-report.com/public_download/fr.vcl/fast_cube-trial.rpm To install FastReport, run the command in the terminal:   # apt-get install ./fast_report*.rpm Before installing the FastReport packages, you need to compile the packages included with Lazarus and install additional libraries: # lazbuild --build-ide= --add-package /usr/lib64/lazarus/components/tachart/print/tachartprint.lpk # lazbuild --build-ide= --add-package /usr/lib64/lazarus/components/tachart/tachartlazaruspkg.lpk # apt-get install sqlite3 libsqlite3-devel After that, sequentially run the following commands to compile the FastReport packages:   # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/fs_lazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/fr_lazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxe_lazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frCS_lazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxchartlazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxlazdbf.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxSmartMemo_Laz.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/fqb*.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxlazsqlite.lpk # lazbuild --build-ide= --add-package /usr/share/FastReport*/Lpks/frxPDFlazarus.lpk Installation of FastCube for Application Development in Linux Now let's move on to installing FastCube. Run the following command in the terminal: # apt-get install ./fast_cube*.rpm Then sequentially run the following commands to compile the FastCube packages:   # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxScript.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxLazarus.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxCharting.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxprint.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxprintTee.lpk # lazbuild --build-ide= --add-package /usr/share/FastCube*/Lpks/fcxexport.lpk Compiling and Running FastReport Demo in Lazarus At this point, the installation of FastReport and FastCube is complete. Finally, you can try to compile and run the FastReport Demo. To launch Lazarus, run the command in the terminal:   # startlazarus --skip-last-project In the Lazarus main menu, open the "Project" -> "Open Project..." option. In the dialog, select the project:   /usr/share/FastReport - Trial/Demos/FPC/FastReport/FastReportDemo.lpi After opening the project, press the F9 key to compile and run. This concludes the detailed setup of WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. For any questions, please contact our technical support at support@fast-report.com . Enjoy using it! Tags: VCL, FastCube, Lazarus, FastReport, Linux, Ubuntu, Windows ### How to sort matrix by indicator URL: https://www.fast-report.com/blogs/sorting-matrix-by-indicator Summary: Creating report script for soring the constructed matrix by a specific column Creating report script for soring the constructed matrix by a specific column Creating report script for soring the constructed matrix by a specific column Sorting data is a very important analysis tool that allows you to quickly assess the dynamics of growth or decline, as well as rank the data to make it reader-friendly. The matrix in the current version of FastReport .NET enables to sort only measurements. For example, you are building a report that displays employee sales statistics by year. The matrix has a grouping of data by year and month. We need to sort it within each group — year. The standard sorting tools will allow you to sort the names of employees, years, months, but not the data. Especially if you want to sort by a specific column. To sort by a specific column of the constructed matrix (for example, for a specific employee), you will have to use the report script. Two ways to sort the constructed matrix are to move rows or cells. On the surface, it seems that moving the rows at once would be a right solution, because sorting implies changing the order in which the entire row is displayed, and not a specific cell. Indeed, this will be the most correct decision, but not always. We'll look at a case where moving the rows won't work. If your matrix has groups with subgroups in dimensions, then you will have problems moving the first row in the group. This row has the name of the group in the first cell. Subsequent rows from the group have a blank value in the first cell. Since you may change the order of displaying the first row in the group when sorting, an error will occur when a row with an empty group header comes to its place. To avoid such problems, you will have to sort the cells in the correct column. That is, you first sort the desired column, and then, using a set of cell indices, you sort all the other columns in the matrix by that column. Obviously, this method is much more time-consuming. Let's take a look at both cases with an example. The first one is to sort the matrix row by deleting and inserting rows in the resulting matrix. Let's take a look at the source matrix we need to sort: This screenshot shows a simple matrix that does not have groups with subgroups. Moving rows is ideal for this case. In fact, we will first delete the required rows and then insert them in the correct order. This will be done using the report script. Let's say we want to sort the matrix by column for 2011. We need to determine the ordinal number of this column and obtain data for all its cells, with the exception of the resulting Total. Let’s add the ModifyResult event for the matrix object: ``` public class ReportScript { // the key of the pair is the value in the cell of the matrix, the value of the pair is the y-coordinate of the cell // the dictionary will be sorted by cell value in this way private SortedDictionary numbers = new SortedDictionary();   private void Matrix1_ModifyResult(object sender, EventArgs e) { int x = 1; int y = 2;   // let's collect the values of the cells in the column for 2011, we will sort by it for ( ; y < Matrix1.ResultTable.RowCount - 1; y++) { object val = Matrix1.ResultTable.GetCellData(x, y).Value; double dval = 0.0; if (val != null) { // here it is important to know the types of values or to check them // the cell format is Currency in this example, so we first convert it to a string // the default cell format is string Double.TryParse(val.ToString(), out dval); numbers.Add(dval, y); } // we add a pair with a value of 0.0 to the dictionary if there is an empty string in the cell // as a result, empty strings will be taken into account when sorting and will go first else { numbers.Add(dval, y); } }   // copy the rows of the matrix into the backing array // then we will take the necessary rows from it and insert into the matrix object[] originalRows = Matrix1.ResultTable.Rows.ToArray();   int i = 2; // the number of the row where we will start deleting rows in the matrix // now we delete the second row in the matrix as many times as there are rows to be sorted // we keep deleting the second row, because all rows will move up one position after deleting it for (int j = 0; j < numbers.Count; j++) { Matrix1.ResultTable.Rows.RemoveAt(i); }   i = 2; // now we just add all the rows in order according to the sorted list foreach (int v in numbers.Values) { int rowNum = v; Matrix1.ResultTable.Rows.Insert(i, originalRows[rowNum] as TableRow); i++; } } } ``` In fact, the idea of the method is to read the values of cells and their indices from the desired column and write them to a sorted dictionary. We can arrange the rows in the desired order with the indices of the cells, and, accordingly, the rows. For this, we first copy the rows into a temporary list. Then we delete all rows and insert them according to the indices in the sorted cell dictionary. To insert, we use the matrix rows saved in the temporary list. As a result, we get a matrix sorted by the column from 2011: This is the simplest example of how to sort a matrix through one-dimension array. Now let's imagine that we have groups for measurements on the left and we will sort within each group. As noted earlier, to sort the rows is not an option in this case. Let’s view at how to sort cells. Let's reverse the matrix from the previous example: We also create a ModifyResult event handler for the matrix: ``` public class ReportScript {   public class DescendingComparer: IComparer where T : IComparable { public int Compare(T x, T y) { return y.CompareTo(x); } }   // the key of the pair is the value in the cell of the matrix, the value of the pair is the y-coordinate of the cell // the dictionary will be sorted by cell value in this way private SortedList numbers = new SortedList();   private void Matrix1_ModifyResult(object sender, EventArgs e) { int x = 3; int y = 2;   Dictionary cellsMonth = new Dictionary(); Dictionary cellsFirst = new Dictionary(); Dictionary cellsSecond = new Dictionary(); Dictionary cellsThird = new Dictionary(); Dictionary cellsFourth = new Dictionary(); Dictionary cellsTotal = new Dictionary(); List> allCells = new List>();   bool other = false; int z = 2; double val2 = 0.0;   var val3 = 0.0;   string message = "";   List years = new List();   for (int j=0; ji.Value).Select(key => key.Key).ToList();   //We set a new value for the cells in all strings in the required columns according to the order in the sorted dictionary for the third column int k = 0; foreach(var key in keys) { Matrix1.ResultTable.GetCellData(1, cellsThird.Keys.ElementAt(k)).Text = cellsMonth[key].ToString(); Matrix1.ResultTable.GetCellData(2, cellsThird.Keys.ElementAt(k)).Text = cellsFirst[key].ToString(); Matrix1.ResultTable.GetCellData(3, cellsThird.Keys.ElementAt(k)).Text = cellsSecond[key].ToString(); Matrix1.ResultTable.GetCellData(4, cellsThird.Keys.ElementAt(k)).Text = cellsThird[key].ToString(); Matrix1.ResultTable.GetCellData(5, cellsThird.Keys.ElementAt(k)).Text = cellsFourth[key].ToString(); Matrix1.ResultTable.GetCellData(6, cellsThird.Keys.ElementAt(k)).Text = cellsTotal[key].ToString(); k++; } cellsThird.Clear(); } } } ``` There are two fundamental differences from the previous method — we sort using replacement, not deletion/insertion, and sort by each column separately. It should be clear from the comments in the code what to do and where. But still, let's take a quick look: 1) First of all, we get the values of the dimension groups in order to know how many sorting sets we need. Sort order is different for each group. 2) Next, we get the data for all the columns needed for sorting. This means for all columns, except for the first one, which contains the names of the dimension groups. 3) Then we select the set of values required for sorting and sort it. 4) You can arrange the cells in all the sorted columns according to the order of these indexes using the resulting dictionary, where the key is the cell index. The result is a matrix sorted for Nancy Davolio: Thus, you can sort the matrix by any column of data. Moreover, you can make custom sorting not only in descending or ascending order. Additionally, you can exclude certain rows (Total or calculated) from sorting by setting them in an individual order. Tags: .NET, .NET, FastReport, FastReport, Matrix, Matrix ### How to sort similar matrices through one-dimensional array on several pages in FastReport .NET URL: https://www.fast-report.com/blogs/sorting-matrices-several-pages Summary: We are considering non-standard methods of sorting such matrices using a report script for manipulating data in analytical reports. We are considering non-standard methods of sorting such matrices using a report script for manipulating data in analytical reports. We are considering non-standard methods of sorting such matrices using a report script for manipulating data in analytical reports. Let's say we have the task: to sort the matrix on the first page in the desired order, remember this order and apply for similar matrices on other pages. This may be needed when you have several pages in the report that display matrices that are identical in headings, but which contain different data. For example, the first matrix displays the number of products sold, and the second displays the sales amounts by product. We need to sort by quantity or amount, and then apply the same order for the second matrix. This case is quite common in analytical reports. Let's see it in practice. Let's take a completely hypothetical fruit sales statistics. However, only the types of fruits are not enough, there will be a list of fruit importing countries. The number of sold goods will be displayed for three years. Table structure: country_name fruit_type year amount price sum Sorting Standard sorting mechanisms will not help us here. Therefore, we will sort the number of fruits sold for each country. Let's outline a sequence of steps: 1. To get a list of countries. 2. For each country: 2.1. to get the values of cells with types of fruits and the number of products sold for each year; 2.2. to sort the values for the desired year; 2.3. for each row to fill the cells of fruits and the number for all years according to the indices of the rows in the sorted list. The first column is the country, and this is ok for us, which means that we will sort the cells of the remaining columns. We first need to remember them, so that we can arrange them in the desired order according to the sorting plan. We will select one of the columns with data for a specific year and sort it in descending or ascending order. Then we will use the resulting index order to sort all the cells by column. Let's get started. The matrix has an event for modifying an already constructed object - ModifyResult. Let's create a handler for this event in the report script. ``` private List> sortOrders = new List>(); //List of sorting orders for each collection of fruit species by country   private void Matrix1_ModifyResult(object sender, EventArgs e) { //Dictionaries in which we will store the row index and cell value Dictionary firstYearCells = new Dictionary(); Dictionary secondYearCells = new Dictionary(); Dictionary thirdYearCells = new Dictionary(); Dictionary typeCells = new Dictionary(); Dictionary sortCells = new Dictionary();   //bool prevYearSortNeeded = false;   var total = false; var z = 1; var val2 = 0.0; var val3 = 0.0;   List countries = new List(); //We will store the list of countries in this list //We get all countries from the first column for (int j=2; j<(sender as TableBase).ResultTable.RowCount-1; j++) { try { var val = (sender as TableBase).ResultTable.GetCellData(0,j).Value.ToString(); if (val.Length > 0) countries.Add(val); } catch (Exception) {} }   int columnFirstYearIndex=0; int columnSecondYearIndex=0; int columnThirdYearIndex=0; int columnTypeIndex=0;   //We go through all the columns of the matrix to save the cells in dictionaries for (int t=0; t < (sender as TableBase).ResultTable.ColumnCount; t++) {   if ((sender as TableBase).ResultTable.GetCellData(t,0).Text.Contains("2017")) { columnFirstYearIndex=t; } if ((sender as TableBase).ResultTable.GetCellData(t,0).Text.Contains("2018")) { columnSecondYearIndex=t; } if ((sender as TableBase).ResultTable.GetCellData(t,0).Text.Contains("2019")) { columnThirdYearIndex=t; } if ((sender as TableBase).ResultTable.GetCellData(t,0).Text.Contains("Fruit")) { columnTypeIndex=t; } }   int countryOrder =0;   //We run a loop to identify the fruit groups and sort them for each country foreach (var country in countries) { total = false;   sortCells.Clear(); //We clear the list for sorting   //We select cells from rows until we see Total, since Total should not be sorted while (!total) { if ((string)(sender as TableBase).ResultTable.GetCellData(columnTypeIndex,z).Text!="Total") { //We select cells for the first year var value = (sender as TableBase).ResultTable.GetCellData(columnFirstYearIndex,z).Value; if (value!=null) { Double.TryParse(value.ToString(),out val3); firstYearCells.Add(z,val3); } else firstYearCells.Add(z, 0.0);   //We select cells for the second year value = (sender as TableBase).ResultTable.GetCellData(columnSecondYearIndex,z).Value; if (value!=null) { Double.TryParse(value.ToString(),out val3); secondYearCells.Add(z,val3); } else secondYearCells.Add(z, 0.0);   //We select cells for the third year value = (sender as TableBase).ResultTable.GetCellData(columnThirdYearIndex,z).Value; if (value!=null) { Double.TryParse(value.ToString(),out val3); thirdYearCells.Add(z,val3); } else thirdYearCells.Add(z, 0.0);   //We select cells for fruit types value = (sender as TableBase).ResultTable.GetCellData(columnTypeIndex,z).Text; typeCells.Add(z,value.ToString()); } else { //Exit condition of the loop total = true; } z++; }   sortCells = firstYearCells; //We set the column for sorting - in this case by the first year   List keys = new List();   //If we have a filled list of sorts for all countries, then the first page of the report has been built and you can use this list on the second page. This is where sorting through one-dimensional array is ensured. if ( sortOrders.Count == countries.Count ) { keys = sortOrders.ElementAt(countryOrder); } else keys = sortCells.OrderByDescending(i=>i.Value).Select(key => key.Key).ToList(); //Sort the array in descending order using the Linq library   int k = 0; //Loop through all the elements of the sorted list foreach(var key in keys) { //Build cell values for all columns in sort order (sender as TableBase).ResultTable.GetCellData(columnFirstYearIndex, firstYearCells.Keys.ElementAt(k)).Text = firstYearCells[key].ToString(); (sender as TableBase).ResultTable.GetCellData(columnSecondYearIndex, secondYearCells.Keys.ElementAt(k)).Text = secondYearCells[key].ToString(); (sender as TableBase).ResultTable.GetCellData(columnThirdYearIndex, thirdYearCells.Keys.ElementAt(k)).Text = thirdYearCells[key].ToString(); (sender as TableBase).ResultTable.GetCellData(columnTypeIndex, typeCells.Keys.ElementAt(k)).Text = typeCells[key].ToString(); k++; } if (keys.Count>0) sortOrders.Add(new List(keys)); //Save the sort order for the current country   //It's important to clear firstYearCells.Clear(); secondYearCells.Clear(); thirdYearCells.Clear(); typeCells.Clear(); countryOrder++; //Go to the next country } } } ``` Now we copy the report page with the matrix, but instead of the amount field we will output sum. We will select the handler we have created for ModifyResult in the matrix events. After running the report, we will see that the order of the fruit types on the two pages is the same. This means that the sorting on the first page is applied to the second page. Thus, using the report script, we can manipulate the data in the matrices, as we want. The most important thing is to apply the same sort order on different pages of the report. Tags: .NET, .NET, FastReport, FastReport, Report, Report, Filtering, Filtering, Matrix, Matrix ### How to sort the data in the report FastReport .NET URL: https://www.fast-report.com/blogs/sorting-report-data Summary: Sorting data in different ways in the FastReport .NET report generator for better analysis. Sorting data in different ways in the FastReport .NET report generator for better analysis. Sorting data in different ways in the FastReport .NET report generator for better analysis. Sorting data is one of the most important data processing tools. We can say, it is the basis of the analysis. Analysing chaotic output data is almost impossible. Therefore, sorting provides all the tools that work with data. This also applies to reporting tools. After all, the data source may provide the report data is not sorted, or sorted, but not in the required field, not in the order. The documentation for FastReport .NET outlines two ways to sort: sorting group values, sorting data in the Data band. The first type of sorting is available to us when we create a group, namely when setting up the Group Headline band. When you choose the field you're going to group on, you can sort it right away. There are three sorting options available: no sorting, ascending, descending. But if we talk about sorting basic data in the data bin, we can access more advanced sorting - three fields at once, and for each of them you can choose the order of sorting. To call a sorting editor, you need to click the band's header twice on the page template. Despite the user-friendly interface, this tool has one significant drawback. To be precise it can sort only three fields. However, some of the tables have a variety of fields, and you may need to sort by more than 3 fields. You can bypass this restriction by sorting the data in the source using the query. You can do this either by creating a data source or by a source you've already created, directly for the desired table. In the first case, we're just writing a request to get the data in the right order. The second case is the same, but in a data source that has already been created. In the data tree, choose the right table. In the property inspector, we ask SelectCommand. It is alled by the wizard to create an SQL query. You can enter a query manually or use the Query Builder. So you can sort of arbitrary number of fields: ``` SELECT * FROM customer ORDER BY Country, City, State, CustNo, Company ```  When you create a data source, you may not be aware that you need a certain order data. But you can always add a request in an existing data source. However, this method does not work with non-SQL databases. Tags: .NET, .NET, FastReport, FastReport ### How to store FastReport .Net reports in a database URL: https://www.fast-report.com/blogs/store-net-reports-database Usually reports are stored in one place but in separate files. With the increasing amount of files there are difficulties in structuring and searching. Reflecting on this subject, I came across one very interesting property of the Report object - ReportSourceString. This property holds the entire report template in a string. Which means that it is possible to store the report template in any database. We can store all the reports in one place. In order to save reports to the database, we need to write our own methods to save and load the report. Let's get started. First of all, let's create a database to store reports. I have used MS Access. The table has the following structure: Field name Data type id Counter Name Text Template MEMO  Create a Windows Forms application. Add a connection to our database. Place the button components on the form: DataSet, BindingSource and Report.  Looking ahead, I will say that we need a dialogue form, in which we will ask the name of the report when saving / loading: For the buttons must be set DialogResult property in accordance with their name. Getting Started Programming. We use the following FastReports libraries: ``` using FastReport; using FastReport.Utils; using FastReport.Design; ```  And create an instance of the dialogue form: ``` public SaveLoadForm form2 = new SaveLoadForm(); ```  Create the event handler to save a report: ``` void cmdSave_CustomAction(object sender, EventArgs e) { ReportsDataSet.ReportsRow row; row = reportsDataSet1.Reports.NewReportsRow(); if (form2.ShowDialog() == DialogResult.OK) { row.Name = form2.ReportName; row.Template = report1.ReportResourceString; this.reportsDataSet1.Reports.Rows.Add(row); ReportsDataSetTableAdapters.ReportsTableAdapter adapter = new ReportsDataSetTableAdapters.ReportsTableAdapter(); adapter.Update(reportsDataSet1.Reports); } } ```  Here, we create a new row in the report table. Then start the dialog form. The report name will be entered in the form. . Assign the value of the dialogue form's text field to the Name field. Write the report template as text in the Template field. Thereafter, save the changes to the table via the adapter. Now create an event handler of the report downloading: ``` void cmdOpen_CustomAction(object sender, EventArgs e) { if (form2.ShowDialog() == DialogResult.OK) { for (int i = 1; i < reportsDataSet1.Reports.Rows.Count; i++) if (reportsDataSet1.Reports[i].Name == form2.ReportName) { report1.ReportResourceString = reportsDataSet1.Reports[i].Template.ToString(); } Designer designer = sender as Designer; designer.SetModified(this, "EditData"); } } ```  We also call the dialog form. In the cycle we are looking for the report with the name that  corresponds to the one entered in the text field. The report loads from Template field into ReportResourceString property. Then, the designer is updated to reflect the changes. So, we wrote two handlers. Now it is necessary to intercept the standard event handlers and substitute our handlers. ``` private void DesignerSettings_DesignerLoaded(object sender, EventArgs e) { (sender as Designer).cmdSaveAs.CustomAction += new EventHandler(cmdSave_CustomAction); (sender as Designer).cmdOpen.CustomAction += new EventHandler(cmdOpen_CustomAction); } ``` As you can see, we intercept the event to save and load a report by substituting the custom handlers. In the OnClick event of button in the main form, add the following code: ``` private void DesignBtn_Click(object sender, EventArgs e) { Config.DesignerSettings.DesignerLoaded += DesignerSettings_DesignerLoaded; report1.Design(); } ```  Override the handler loading the report designer. Thus, we have created an application that allows you to save and load reports in MS Access database. You can organize the storage of reports in a desired database through property ReportSourceString report. Tags: .NET, .NET, FastReport, FastReport ### How to transfer a list of options to a web report FastReport .NET URL: https://www.fast-report.com/blogs/transfer-options-list-webreport Summary: The article describes how to transfer a list of parameters to the web report in the FastReport .NET report generator. The article describes how to transfer a list of parameters to the web report in the FastReport .NET report generator. The article describes how to transfer a list of parameters to the web report in the FastReport .NET report generator. When you create reports, you often need to transfer some values from outside. This is to filter the data into the report, or to manage the logic of the report. In my practice of using FastReport.Net, I often encounter this need. Since I mostly work with web reports, I pass the parameters into the report through url. As a rule, my reports are quite complex and are not limited to one parameter. Therefore, there is a need to pass on a list of parameters, namely a list of key value sets. Where the key is the name of the setting. It is certainly better to consider it by example. In this case, I use ASP .NET Core Web Api app. namespace ParametersWeb.Models {  public class Reports  {  // Report ID  public int Id { get; set; }  // Report File Name  public string ReportName { get; set; }  } } ValuesController: Fill the array of reports: Reports[] reportItems = new Reports[]  {  new Reports { Id = 1, ReportName = "Parameters.frx" },  new Reports { Id = 2, ReportName = "Master-Detail.frx" }   }; Method of production of the report is asynchronous, since It uses an asynchronous method of converting the report in html format. This format we want to display the report in the browser, as you know: [HttpGet("{id}")]  public async System.Threading.Tasks.Task GetAsync(int id)  {  string mime = "application/html"; // MIME header with default value  // Find report  var parameters = HttpContext.Request.QueryString.ToString().Substring(1);  Reports reportItem = reportItems.FirstOrDefault((p) => p.Id == id); // we get the value of the collection by id  if (reportItem != null)  {  string webRootPath = _hostingEnvironment.WebRootPath; // determine the path to the wwwroot folder  string reportPath = (webRootPath + "/App_Data/" + reportItem.ReportName); // determine the path to the report  string dataPath = (webRootPath + "/App_Data/nwind.xml");// determine the path to the database  using (MemoryStream stream = new MemoryStream()) // Create a stream for the report  {  try  {  using (DataSet dataSet = new DataSet())  {  // Fill the source by data  dataSet.ReadXml(dataPath);  // Turn on web mode FastReport  Config.WebMode = true;   WebReport webReport = new WebReport();//create the report object  webReport.Report.Load(reportPath); //upload the report  webReport.Report.RegisterData(dataSet, "NorthWind"); //register the data sourcw in the report  if (parameters != null)  {  string[] parameterList = parameters.Split(',');  foreach (string item in parameterList)  {  string[] parameter = item.Split('=');  webReport.Report.SetParameterValue(parameter[0], parameter[1]); //set the report parameter value  }  }  // inline registration of FastReport javascript  webReport.Inline = true;//allow to register scripts and styles in HTML-body intead of putting them in the header  HtmlString reportHtml = await webReport.Render(); //upload the report in HTML  byte[] streamArray = Encoding.UTF8.GetBytes(reportHtml.ToString());  stream.Write(streamArray, 0, streamArray.Length);//write down the report in the stream   }  // Get the name of the resulting report file with the necessary extension   var file = String.Concat(Path.GetFileNameWithoutExtension(reportPath), ".", "html");   return File(stream.ToArray(), mime, file); // attachment  }  // Handle exceptions  catch  {  return new NoContentResult();  }  finally  {  stream.Dispose();  }  }  }  else  return NotFound();  } The essence of this method is the following - we upload the selected report template, parse parameters from the url and transfer their value to the report. Then, we transform a report in html format and return the file to the client. The names of the parameters that you pass to the report should clearly match the parameters in the report:          
   
 
Tags: .NET, FastReport ### How to Transition from FastReport Publisher to the Corporate Server URL: https://www.fast-report.com/blogs/transition-publisher-corporate-server Summary: In this material, we will discuss the reasons for replacing Publisher with the Corporate Server along with a migration plan. In this material, we will discuss the reasons for replacing Publisher with the Corporate Server along with a migration plan. We have already reviewed the differences between Publisher, Corporate Server, and Cloud in the previous article. In this material, we will discuss the reasons for replacing Publisher with the Corporate Server along with a migration plan. We have already reviewed the differences between Publisher, Corporate Server , and Cloud in the previous article . In this material, we will discuss the reasons for replacing Publisher with the Corporate Server along with a migration plan. When is it time to move to the Corporate Server? FastReport Publisher is a solution that is quite sufficient for a small business that does not require a large number of users, connections to multiple data sources, or scalability through Kubernetes. However, as the company grows, so do its needs for report generation and document management. New departments and branches emerge, signaling that it's time to upgrade the infrastructure. To make sure you need more server capabilities, refer to the comparison table at this link. Next, let’s review the steps to transition from FastReport Publisher to FastReport Corporate Server.  Guide for Quickly Switching Between Solutions First, you need to purchase a license for the Corporate Server and then get a new product key. You can do this in two ways: Fill out the form on the product page, and our manager will contact you. Or send an email to sales@fast-report.com , and you will quickly receive assistance in purchasing the new license. Next, you will need to replace the key in the configuration file. Once you have the new key, add it to the appsettings.Production.json configuration file in the folder where Publisher is installed. To do this, find the “License” field in the file and set the new license key value ("License": "your new key"). The next step is to restart the service. After installing the new key, you should run the files DockerShutdownServer.bat and DockerStartServer.bat sequentially. These files contain commands to stop the service (docker-compose down) and then start it again (docker-compose up). Once these files have finished running, the Corporate Server will be accessible at the same address as before (by default https://localhost:8080 ) without the previous limitations. If necessary, you can configure Kubernetes. In the previous section, the Corporate Server was run on a single computer using docker-compose. However, if you need more computing resources and greater scalability with high availability, you should migrate the solution to the Kubernetes platform or an equivalent. For instructions on setting up your reporting cluster, see the installation guide for the Corporate Server on Kubernetes. Conclusion We have reviewed the reasons and options for upgrading the document creation system from Publisher to the advanced version—the Corporate Server. If you encounter any difficulties or errors during the transition process, please contact our support team . Our specialists will answer all your questions and offer solutions to any problems. Tags: FastReport, Publisher, Corporate Server ### How to troubleshoot the most common issues when installing FastReport VCL URL: https://www.fast-report.com/blogs/problems-installer-vcl Summary: We have compiled a list of the most popular problems when installing FastReport VCL and have prepared detailed instructions on how to fix the problems that have arisen. We have compiled a list of the most popular problems when installing FastReport VCL and have prepared detailed instructions on how to fix the problems that have arisen. We have compiled a list of the most popular problems when installing FastReport VCL and have prepared detailed instructions on how to fix the problems that have arisen. The FastReport Online Installer program is used to install FastReport VCL and its components. The program has a simple, intuitive interface. We strongly recommend that you use the latest version of the installer. You can download it from this link. However, in some cases, you may have problems during the installation process. In this article, we will look at how these problems can be solved or prevented.  When launching the FastReport Online Installer , it automatically starts checking the installer for updates and offers to download the new version. Next, using the browser (selected as the default in the system), your account is checked for already purchased FastReport components. If there are no purchased products on your account, you will only have access to the demo center with the Trial versions of FastReport. Important! The account (email) on which your FastReport instance was purchased must match the account you used to log in to the "Fast Reports Inc" personal account . If you are having trouble logging in with the right account, try clearing the cache of your running browser and logging in again.  If your license allows installation on multiple computers (e.g., Team, Site, OEM), you must log in to the "Fast Reports Inc" personal account under the user that the license was purchased for on each computer. Alternatively, you can use an alternative method with access rights transfer. To do this, you need to go to Settings -> Profile in your personal account, and on the Accesses tab, add access to the required products and their versions for the user. Then click the "Add access to license" button. In the appeared window, specify the user's email and the required product, and also select the necessary version from the list of available ones. During installation, the installer will prompt you to close all currently running IDEs. If any IDEs are open, you will see the following window: Manual registration If, for some reason, you cannot use online identification, you have a manual registration option. To get your registration code, copy the text from the "Registration Information" field and send it to support@fast-report.com . If you want to receive a registration code for an email address different from the one you are writing this email from, please specify the email address used to log into the client's personal account in the body of the email. .  Do not close the installer until you receive the registration code with the .dat files in the reply email. Then put the .dat files in the same folder as the installer and continue the installation. There is another third way to install FastReport components. Start the online installation on a device connected to the network. Then transfer the .dat files and the installer to a computer that does not have network access and complete the installation on this computer. Preliminary request for the registration code from technical support as described earlier in the article. Remember that you cannot close the Online Installer until you receive the registration code!  *.dat files can be transferred between computers, provided that the installation will be for the same user (to the same email address). Moreover, .dat files can be transferred to another computer even during online installation (also for the same user), thereby saving time downloading them. Component installation process Next, you have the ability to "Install," "Modify" (if the products are already installed on your computer), "Recompile," "Repair," and "Remove" FastReport components. "Recompile" means reinstalling the FastReport library on your computer. This may be necessary when you have made changes to the library's source code and need to reinstall it in the IDE. "Repair" allows you to reinstall FastReport on your computer with the current selected settings. This function can work without an internet connection. "Remove" completely uninstalls the library from your computer. "Install" or "Modify"—when you select this option, the next window shows the IDEs in which you can install FastReport. You select the components you want to install, as well as the installation type—Trial or Source. The set of available components depends on the license you have purchased. Please note that at least one IDE must be installed on your computer where FastReport can be installed. This can be Delphi starting from version 2010 or the latest versions of Lazarus. You can view the list of Delphi versions supported by FastReport here . If you need an older version of FastReport, for example, for Delphi 7, please contact technical support. The installer can install different versions of FastReport for each installed IDE. Preliminary installation of additional components Important! Before installing FastReport, you must install the additional components that you intend to use together with FastReport. For example, if you plan to use BDE components in FastReport, then before the installation, BDE must already be installed in your IDE. Otherwise, the installer will simply not be able to build the FastReport packages that use BDE. For other components, you similarly need to pre-install FIB, TeeChart, and so on. We strongly recommend that before starting the installation, you remove all old versions of FastReport, as well as FastReport Embarcadero Edition, from your IDEs. This is necessary for the normal operation of the installer. It is also necessary to remove ".bpl" format files for old versions of FastReport. If the installer finds them, it will not be able to continue its work. Such files can be located, for example, in the following folders: C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl\ C:\Users\Your_User_Name\AppData\Local\VirtualStore C:\Windows\SysWOW64 The .bpl files have the following format (where XX is a number in the name that depends on the IDE version you have installed): fr*XX.bpl, fs*XX.bpl, fqb*XX.bpl . The table with the dependencies of the Delphi IDE version, the compiler, and the package versions can be found here. If the system still has .bpl files from old versions, and the installer did not find them for some reason, the following error may appear when launching the IDE:  In this case, all the old .bpl files should be deleted. The installer searches for the installed IDE versions in the registry. If there were errors during the IDE installation and/or the registry keys are missing, then installation for that IDE is not possible! This IDE will also be absent from the list of available installations. Error "bpl of the remote version not found" Sometimes the installer incorrectly removes the old version of FastReport. The files are deleted, but the registry links to the .bpl remain. In this case, when launching Delphi, the following types of windows will appear: To solve this problem, click the "Cancel" button in each window or press the "Escape" key. This will prevent these windows from appearing again. If the .bpl version number in the error matches the version number you wanted to install, then this error is not related to the .bpl. Most often, such error messages can occur due to the lack of installed Steema, TeeChart, or Interbase Express (IBX) Components. Sometimes FastReport components are selected for installation, but after the installation, they do not appear in the component palette. In this case, the Repair function in the installer may help.  If this method did not help you, you should check if these components are selected in the I DE Components -> Install Packages window. You can also try to manually install these *.bpl files. They are located (when installed by default) in the following path: «C:\Program Files (x86)\FastReport VCL\\Sources\LibRS\VCL\Win32\»  Error during compilation and installation of packages in the IDE If the installer was able to download the FastReport library but, for some reason, could not compile and install the packages in the IDE, you can try to compile and load them manually. To do this, use the installation instructions at this link and the Embarcadero documentation at this link.  Ensure that the paths to these libraries are in the IDE's PATH variable and the paths to the FastReport source code are set up correctly. You also need to check the existence of the IDE FRL variable. By default, it should be a path roughly like this: «C:\Program Files (x86)\Fast Reports VCL\2024.2.6\Sources» You can check how the library compilation went by running the logging during the installation. To do this, write the "-log" key in the properties of the installer shortcut. VCLOnlineInstaller.exe -log:"c:\test.log". With this parameter, we strongly recommend using an absolute path so that you don't have to search for the file of the resulting log in the future. If you need to specify additional directories where the libraries required for FastReport compilation are located during installation, you can run the installer with the "-addCustomPaths" parameter. VCLOnlineInstaller.exe -addCustomPaths After selecting the FastReport components, a window will appear where you can set the search paths for the libraries for the compiler. Also, during the installation process, you may have the following situation: after installation, there are no FastReport components in the IDE. To solve this problem, you need to check the presence of the *.dat files of the installer. If they are missing or very small (the smallest should be more than 280 Kb), restart the installation with the firewall and antivirus disabled (or add the installer to the exceptions). Useful information It should be noted that when updating FastReport, there may be a situation where a report saved in the new version cannot be opened in the old version. This happens due to the addition of new properties of report components, as well as new components themselves. The old versions do not know anything about these properties and components. In general, outdated reports in the .fr3 format should open normally in new versions of FastReport. If you want to install the free FastReport Embarcadero Edition, you can do so using GetIT in the Delphi IDE. To install, go to Tools->GetIt Package Manager and select FastReport Embarcadero Edition.  But be aware that this version of FastReport cannot be installed in Delphi CE. Also, note that the delivery package includes many examples of using FastReport. By default, they are installed in the folder "C:\Users\Public\Documents\Fast Reports VCL\2024.2.6\Sources\" . The offline documentation is also located there. The package also includes a Demo Center (you can install it separately), which you can use to get acquainted with some of the capabilities of FastReport without installing it on your computer. FastReport is constantly evolving, with new features and functions being added. If you have any questions about their use, you can always contact our technical support! Tags: VCL, FastReport, Install ### How to Try FastReport .NET WEB Before Purchase URL: https://www.fast-report.com/blogs/testing-fastreport-net-web Summary: By testing the WEB pack before purchasing, you can make an informed choice about whether FastReport is suitable for you.NET for your tasks. By testing the WEB pack before purchasing, you can make an informed choice about whether FastReport is suitable for you.NET for your tasks. Choosing reporting tools is an important step in developing any business application. However, before purchasing the full version, many developers want to assess the product's potential and ensure it meets their needs. In this article, we will discuss how to try the FastReport WEB package, its limitations compared to the full version. Choosing reporting tools is an important step in developing any business application. FastReport, one of the leading solutions in the market, offers powerful capabilities for generating reports of various complexities. However, before purchasing the full version, many developers want to assess the product's potential and ensure it meets their needs. In this case, an excellent solution is to use the FastReport .NET WEB package, which allows you to test the system's core functionalities without the need for an immediate license purchase. In this article, we will discuss how to try the FastReport WEB package, its limitations compared to the full version, and how this can help you make an informed decision about acquiring the tool. Demo Projects on the Website First, let’s take a look at the demo projects that you can explore on our website. 1) Blazor Server. Using Blazor Server technology, all application logic runs on the server side, while the user interface for the viewer and report designer is displayed in the browser window. When interacting with the interface, the browser sends an event, the server processes it, and sends back updated information. All interactions with the visual components, data processing, and report generation occur on the server side, allowing reporting components to be used on nearly any device. The server’s performance is crucial here. You can check out the demo project at the following link. Blazor Server demo 2) Blazor WebAssembly (WASM). This technology allows you to develop applications directly in the browser. The visual part and event handling are set up using C# code and Razor. The application is compiled into .NET assemblies and fully loaded into the browser using WebAssembly. When using the report generator, browser resources are leveraged, meaning that server requirements are minimal. WebAssembly is suitable for those who need to save server resources and for whom security is not as critical. Files are saved on the client side with access to the report template. In this case, passwords will be sent openly, which is why we recommend creating a REST service for data representation while using our set of WEB components as a “showcase.” You can check out the demo project at this link. WebAssembly demo 3)  FastReport Online Designer is the web version of the FastReport .NET report designer. The online report designer is a RIA (Rich Internet Application), allowing it to run from any device with a modern web browser. The online designer will work in the latest versions of popular browsers (Chrome, Firefox, Opera, Safari, IE), unlike the desktop designer which operates only on the Windows operating system. However, despite all the cross-platform advantages, the online version lags behind the desktop version in convenience and functionality. You can check out the Online Designer demo at this link. Online Designer demo 4) ASP.NET is a web application development platform that includes web services, software infrastructure, and a programming model from Microsoft. ASP.NET is part of the .NET Framework and is an evolution of the older Microsoft ASP technology. You can check out the ASP.NET FastReport demo project at this link. ASP.NET demo 5) ASP.NET MVC – The Model-View-Controller (MVC) architecture pattern separates the application into three main components: model, view, and controller. The ASP.NET MVC platform provides an alternative to the ASP.NET WebForms template for building MVC-based web applications. You can check out the ASP.NET MVC FastReport demo project at this link. ASP.NET MVC demo 6) .NET Core – is a cross-platform application runtime developed by Microsoft that allows the creation and execution of applications across various operating systems. Core is a universal platform designed for developing web services, cloud applications, and other types of software. It features a modular architecture, allowing developers to choose only the necessary components for their projects, reducing the final product size. What is .NET Core in the context of development? It is an environment that supports automatic memory management, type safety, and many other modern features that simplify the lives of developers. You can check out the .NET Core FastReport demo project at this link. .NET Core demo In general, this is the complete list of WEB demo applications that we can explore before making a purchase. One of the main conveniences is that there is no need to develop your own project and connect the necessary packages. You just need to follow the link and see the application's functionality in all its glory. But what if we want to create a project on our own? In this case, FastReport has a solution for developers. To create a demo application independently, we will need knowledge of WEB development in C#, NuGet packages, and the magic of .NET. NuGet Packages On our website, you can find many articles on developing WEB applications using FastReport. Now, let's take a closer look at the demo NuGet packages that we can obtain from NuGet.org. FastReport.Core ( demo on nuget.org ) - a package with the core logic of the program (data retrieval, report rendering, exports, etc.). Some functionality from FastReport.NET is absent due to the cross-platform nature of the package. Works with .NET Framework 4.6.2 and .NET 6 and later. FastReport.Core.Skia ( demo on nuget.org ) - a package with the core logic of the program for SkiaDrawing (data retrieval, report rendering, exports, etc.). Works with .NET 6 and later. FastReport.Web ( demo on nuget.org ) - a package for integrating FastReport into web application scenarios (report rendering in the browser, export and print from the browser, working with the Online Designer) for ASP.NET Core. It includes components for Blazor Server and is used only with FastReport.Core. Works with .NET 6 and later. FastReport.Web.Skia ( demo on nuget.org ) - a package for integrating FastReport into web application scenarios using SkiaDrawing (report rendering in the browser, export and print from the browser, working with the Online Designer) for ASP.NET Core. It includes components for Blazor Server and is used only with FastReport.Core. Works with .NET 6 and later. FastReport.Blazor.Wasm ( demo on nuget.org ) - this package contains Razor components for Blazor WebAssembly. Works with .NET 6 and later. Now, let's figure out how to incorporate these packages into your project. For this example, we will be using Visual Studio. First of all, we create a project. After that, we navigate to Solution -> Dependencies and right-click on "Packages." Then, we go to "Manage NuGet Packages". You can find out more about enabling NuGet packages in this article. Read the article After that, we will be taken to the NuGet packages menu. By default, the source is set to NuGet.org.   In this section, we can select the desired package and install it in our project. When selecting a package, you can view its detailed description (which platforms the package supports, the latest version, etc.). We install the package using the "Install" button on the right side of the screen. The preparatory stage is complete, and we can start developing our application using the demo packages. Creating a Report Directly from the Browser Let’s take a look at the demo Online Designer. To do this, follow this link:  https://demo.fast-report.com/net-core/designer , and you will be taken to the demo application. Here, we can use the full functionality of the Online Designer. There is only one limitation—saving the report. On the left, there is an element panel from where we can drag text objects, images, tables, etc., into our report. On the right, we have the report properties, events, data, and report tree. Additionally, there is a management menu for the report at the top. If necessary, there is also an option to change the page language. You can find detailed instructions on how to work with the online report designer at this link. Online documentation Installing FastReport .NET WEB on Windows Now, let's install the demo version of the desktop report designer. To do this, we need to follow this link and install the "Trial version for WinForms, WPF, Avalonia, Mono for Windows." In addition to the WEB packages, we can also obtain various demo versions of products, such as report designer for Avalonia . The trial desktop versions have slightly different limitations:  Words are replaced with "Demo" in random places in the report. Watermarks appear in random places. Otherwise, the functionality is the same as in the full version. After installation, we open the installer. You can familiarize yourself with how to use it at this link. Next, we select the trial component set that we need. We click "Next" and wait for the products to install. Once the selected products are installed, we need to navigate to C:\Program Files (x86)\Fast Reports\.NET . Here, you will find folders named after the latest available version of the product. We proceed directly to the " FastReport .NET WEB Trial " folder, as shown in the screenshot below. In this folder, you will find the desktop designer, viewer, localizer, and .dll files. We also have a "Nugets" folder where most trial NuGet packages can be found. The "Demos" folder contains demo projects, and by going into any of them, you can explore the applications and their code. Conclusion Thus, using the FastReport WEB package represents an excellent opportunity for developers to test the system's capabilities before making a purchase. With the availability of essential features and tools, you can create test reports, evaluate the user interface's convenience, and ensure the solution's compatibility with your projects. While the trial version has some limitations, they do not hinder gaining a complete understanding of the product's potential. By testing the WEB package before purchasing, you will be able to make an informed choice: whether FastReport meets your needs or if you should consider alternative options. Remember that a well-chosen reporting system is an investment in your application's efficiency and end-user satisfaction. Tags: .NET, FastReport, ASP.NET, Install, WebReport, Designer, Blazor, NuGet ### How to uninstall our products URL: https://www.fast-report.com/how-to-uninstall Summary: Open Programs and Features by clicking the Start button Picture of the Start button Open Programs and Features by clicking the Start button Picture of the Start button To uninstall or change a program Open Programs and Features by clicking the Start button Picture of the Start button. Select a FastReports folder, and then click Uninstall. Administrator permission required If you're prompted for an administrator password or confirmation, type the password or provide confirmation. ### How to update FastReport Online Designer to the latest version URL: https://www.fast-report.com/blogs/update-online-designer Summary: Step-by-step instructions for updating FastReport Online Designer to the latest version via the client panel. Step-by-step instructions for updating FastReport Online Designer to the latest version via the client panel. Step-by-step instructions for updating FastReport Online Designer to the latest version via the client panel. Starting with version 2021.4.5 FastReport Online Designer is switched to new licensing. You can read more about it in the license agreement. Along with it, there’s a new way of installing the updates. In order to update the Online Designer to the latest version you need to log into your customer panel: https://cpanel.fast-report.com/login Then in the FastReport Online Designer tab switch to the FastReport Online Designer Builder page.  Now you need to set up the designer configuration.  After configuring your build, click the “Assemble” button, which is located to the right of the menu items. You can find the assembled version of FastReport Online Designer in the Latest Build section, which is located when you click on three dots. After the preceding steps are done, FastReport Online Designer will soon appear in the FastReport Online Designer Builder or be emailed to you.  Tags: FastReport, Online Designer, Install, Upload ### How to update the FastReport.Core web report URL: https://www.fast-report.com/blogs/update-FastReport.Core-web-report Summary: The article disctibes how to update web report of FastReport.NET The article disctibes how to update web report of FastReport.NET The article disctibes how to update web report of FastReport.NET Sometimes you need to update the report, for example if you input a new variable value, or if you want to display another report in the same Web report object at all. This usually updates the entire view (we're talking about MVC applications) for the sub-set. But it would be much better if you updated only the Web report object. 1. Update asp.net core report after variable change https://forum.stimulsoft.com/viewtopic.php?f=13&t=57213 … All this is great and working well. What we cannot figure out is how to refresh the report Variables with this new posted-back data and have the report redraw. Is this done within the Controller and, if so, how do we tell the viewer to refresh (thus getting the new data) or is this done within the View and, if so, what is the correct method to call on the Viewer object. ... 2. How do I refresh a Web Report Viewer After Changing the Report. https://forum.stimulsoft.com/viewtopic.php?f=13&t=58104  What is the object of the web report? Basically, it is an html container with a set of scripts that allow you to navigate through the pages of the report and call useful functions, such as printing and exporting. And the web report itself is a report exported to html. The easiest way to update a part of the page is to use iframe. We will only replace the frame source, and it will get a partial or full view of the report by url. Let's consider an example where the web application page displays a drop-down list and a frame. If you select a report name from the drop-down list, the web report object with the corresponding report is loaded. To start with, we'll need a method in the controller that returns the view with the Web report object: ``` public IActionResult Update(string SelectedItem) { if (SelectedItem != null) { WebReport webReport = new WebReport(); webReport.Report.Load($"App_Data/{SelectedItem}.frx");   var dataSet = new DataSet(); dataSet.ReadXml("App_Data/nwind.xml"); webReport.Report.RegisterData(dataSet, "NorthWind");   webReport.Width = "1000"; webReport.Height = "1000"; ViewBag.WebReport = webReport; } return PartialView(); } ``` The method has an input parameter SelectedItem - the name of the selected report. For this method you need to create a partial view with a single line of code that displays the web report object: @await ViewBag.WebReport.Render() Appearance of the Index start page will look like as follows: ``` @{ ViewData["Title"] = "Home Page"; }
```  First, we display a drop-down list with three available reports on the form. In the onclick list event handler, we assign a source url frame. The url itself contains the path to the web method with the parameter. The value of the parameter is taken from the selected item in the drop-down list. Below, the frame is displayed. Let's run the application. Select a report from the drop-down list: And will get it: Thus, partial page refresh by using a frame is very easy to implement. Tags: .NET, .NET, FastReport, FastReport, Core, Core, WebReport, WebReport, Upload, Upload ### How to upgrade an old version to a new FastReport VCL URL: https://www.fast-report.com/blogs/upgrade-version-fastreport-vcl Summary: Step-by-step instructions for removing past components and installing a new version of FastReport VCL using the Delphi utility. Step-by-step instructions for removing past components and installing a new version of FastReport VCL using the Delphi utility. Step-by-step instructions for removing past components and installing a new version of FastReport VCL using the Delphi utility. Starting version 2021.1 all FastReport VCL editions are subscription-based. It means that you will always have an up-to-date version as long as your subscription is valid. First of all, you need to download the program from the developer’s site. To do this, you need to log in to the site at: https://cpanel.fast-report.com/login . Next, in the Products tab, find the product you bought and download it by clicking on the appropriate link. Then we need to uninstall the previous version of FastReport VCL, because if we do not delete the previous version, various conflicts and errors may occur. To do this, run the uninstaller and select Uninstall. Also, after the uninstall, you need to check for the presence of "frx*.bpl" in the folders C:\Windows\System32 and C:\Windows\SysWOW64 . After successful uninstall, these files should be missing. Attention! Be sure to check the availability of TeeChart Std and IBX component packages in your IDE before starting the installation. To do this, go to RAD Studio Menu->Tools->Manage Platforms -> Additional Options -> select "TeeChartStd and IBX", and then click Apply. If you do not want to use these packages, then at the beginning of the installation, select the custom FastReport installation process, and then uncheck the Chart and IBX component packages. Step-by-step instructions for installing the new version of FastReport VCL Step 1. Launch the installer, where we are greeted by a welcome window. Click "Next" to continue the installation. Step 2. Read the terms of the license agreement. If you agree to these terms, then check the box "I accept the terms of the license agreement" and click "Next". Step 3. You will have important information about the FastReport VCL product. After familiarization, click the "Next" button. Step 4. Enter the license key for activation. To do this, copy it from https://cpanel.fast-report.com/login , by clicking on the button as in the screenshot. The copied license key is inserted into the appropriate field. Step 5. Next we can choose the type of installation: Complete and Custom. Step 6. The first type allows you to set all the program components by default, and the second one allows you to select the necessary ones: Attention! At this stage, disable the installation of the corresponding FastReport Chart and IBX components if you do not want to install the TeeChartStd and IBX component packages in your IDE. Step 7. Select the folder on the local disk where the program will be installed: Step 8. Then you can specify the name of the directory where the shortcuts to run will be located. It is also necessary to choose for which users the program is supposed to be installed (for one, only the current one, absolutely for all). Step 9. This is the last opportunity to think about whether you have set all the installation settings correctly. If you are sure of the previous settings, then click "Next". Otherwise, "Back" to return to the previous step. Step 10. After clicking the "Next" button, the program is installed: Step 11. The last window informs you of the successful installation. Step 12. Immediately after the installation is completed, a utility will be launched that will allow you to compile the FastReport libraries for the desired Delphi version: You can refuse to compile by clicking the "Exit" button, or accept using the "Continue" button: The compilation wizard allows you to set a lot of parameters: compiler, FastReport version, TeeChart charts component, and change actions. By default, the FastReport libraries are already compiled, and this utility simply prompts you to compile them with your own settings. Tags: VCL, FastReport, Install, Upload, Delphi ### How to upload a report to OnlineDesigner and download it after editing in an ASP .NET Core application URL: https://www.fast-report.com/blogs/upload-edit-download-report Summary: How to upload a report to Online Designer and download it after editing in an ASP .NET Core application. Create an ASP .NET Core application. How to upload a report to Online Designer and download it after editing in an ASP .NET Core application. Create an ASP .NET Core application. How to upload a report to Online Designer and download it after editing in an ASP .NET Core application. Create an ASP .NET Core application. While working with Fast Reports online report designer, we usually have to upload our report templates into it, and then, after editing, download them. Today we will look at how this can be done in the context of an ASP .NET Core application. Create an ASP .NET Core application. Add the FastReport .NET libraries to it using NuGet. Use the local package source - the Nuget folder from the FastReport .NET installation directory. Install two packages FastReport.Core and FastReport.Web. Add the App_Date folder to the wwwroot folder. Put the data source for the demo reports in it - nwind.xml. We also add a folder with an online designer in wwwroot, which you downloaded from the official website www.fast-report.com . To use the Fast Reports libraries in your project, you must add one line to the Startup.cs file: ``` public class Startup { public void Configure(IApplicationBuilder app, IHostingEnvironment env) { … app.UseFastReport(); … } } ``` Let's proceed to editing the HomeController controller. We need to create 4 methods: display the report designer with the loaded report, upload the file to the server, generate a file for downloading, save the modified report to the server. ``` public class HomeController : Controller {   public static string ReportName;   public ActionResult Index(string filepath) { Task.WaitAll(); WebReport webReport = new WebReport(); // Web report object webReport.Width = "1000"; webReport.Height = "1000"; string report_path = GetReportPath(); // Path to the folder with reports System.Data.DataSet dataSet = new System.Data.DataSet(); dataSet.ReadXml(report_path + "nwind.xml"); // Read the database webReport.Report.RegisterData(dataSet, "NorthWind"); // Register data in the report if (System.IO.File.Exists(report_path + "report.frx")) { webReport.Report.Load(report_path + "report.frx"); } // If you use a cache, then load a report from it. if (filepath != null) { webReport.Report.Load(filepath); }   // Set the settings Online-Designer webReport.Mode = WebReportMode.Designer; webReport.DesignScriptCode = false; webReport.Debug = true; webReport.DesignerPath = @"WebReportDesigner/index.html"; webReport.DesignerSaveCallBack = "Home/SaveDesignedReport"; ViewBag.WebReport = webReport; // pass the report to View ViewData["reportName"] = ReportName = Path.GetFileName(filepath); return View(); } private string GetReportPath() { return "wwwroot/App_Data/"; }     [HttpPost] public async Task UploadFile(List file) { if (file == null || file[0].Length == 0) return Content("file not selected"); // Form the path to the file var path = Path.Combine( Directory.GetCurrentDirectory(), GetReportPath(), file[0].FileName); // Save the file on the server using (var stream = new FileStream(path, FileMode.Create)) { await file[0].CopyToAsync(stream); } // Move on to display the report designer with the loaded report template. return RedirectToAction("Index", "Home", new { filepath = path }); }   [HttpPost] public IActionResult Download(string filename) { // Form the path to the file on the server var path = Path.Combine(Directory.GetCurrentDirectory(), GetReportPath(), filename);   if (System.IO.File.Exists(path)) { // Form the result of POST request var bytes = System.IO.File.ReadAllBytes(path); Response.Body.Write(bytes, 0, bytes.Length); } return new OkResult(); }     [HttpPost] public IActionResult SaveDesignedReport(string reportID, string reportUUID) { var path = Path.Combine(Directory.GetCurrentDirectory(), GetReportPath()); ViewBag.Message = String.Format("Confirmed {0} {1}", reportID, reportUUID); // Set the message for representation Stream reportForSave = Request.Body; // Write the result of the Post-request to the stream. string pathToSave = System.IO.Path.Combine(path, ReportName); // Form the path to save the file using (FileStream file = new FileStream(pathToSave, FileMode.Create)) // Stream creation { reportForSave.CopyTo(file); // Save query result to file return View(); } }   } ``` When displaying a web page, at first you will see a report designer with a blank template. And after uploading the report file to the server, the designer will appear with the template loaded. Notice that we use ViewData to pass the report name to the view. Now change the view for the Index method: ``` @{ ViewData["Title"] = "Home Page"; }
  @await ViewBag.WebReport.Render()   ``` Here we used two ways to send requests to the server - through the form and through the ajax request. In the first case, we load the file, and since we still need to update the report designer, we can neglect to refresh the entire page. In the second case, when downloading the report file, we do not want to refresh the page and it is better to use the ajax request. We cannot organize file downloading with only ajax request, therefore when processing the result of the request we create a tag with a link to the file being downloaded. For the SaveDesignedReport method in the controller, you need to create a view with the code: @ViewBag.Message That's all. Run the application. First we see a report designer with an empty template. Click the button "Select file" and select the report template to download. Press the button "Upload file": And we get a report designer with a loaded template. We can perform any manipulations with the template and save it. And then, click the "Download Report" button. And the browser loads the report file. Thus, we realized our plans - a full-fledged report editor with the ability to load, save and download a report. Tags: .NET, .NET, Export, Export, FastReport, FastReport, Core, Core, PDF, PDF ### How to upload report into Online Designer and download edited report URL: https://www.fast-report.com/blogs/upload-report-online-designer-download One of the first questions that faces Online Designer users is how to organize downloading reports from a local computer? Today we will consider uploading from the local computer to Online Designer and downloading the modified report using the example of the ASP.Net MVC application. Create an ASP.Net MVC project. We will need the following libraries: Open the controller HomeController.cs. Add the missing libraries to the uses section: ``` using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.UI; using System.Runtime.Caching; using System.Text; using System.IO; using FastReport; using FastReport.Web; using FastReport.Utils; using System.Web.UI.WebControls; using FastReport.Export.Html; using FastReport.Data; using System.Net.Http.Headers; using FastReport.Export.Image; using System.Net.Http; ``` We will display OnlineDesigner in the Index method. But, first we create a web report object and a cache for storing the report file. I use the cache in order to avoid saving the file on the server: ``` private WebReport webReport = new WebReport(); //Report object   MemoryCache cache = MemoryCache.Default; //Cache   public ActionResult Index(HttpPostedFileBase upload) { webReport.Width = Unit.Percentage(100); webReport.Height = Unit.Percentage(100); string report_path = GetReportPath(); // The path to the folder with reports System.Data.DataSet dataSet = new System.Data.DataSet(); dataSet.ReadXml(report_path + "nwind.xml"); //Read database webReport.Report.RegisterData(dataSet, "NorthWind"); // Register the data in the report // If you do not use the cache, then load the report from the server if (System.IO.File.Exists(report_path + "report.frx")) { webReport.Report.Load(report_path + "report.frx"); } // If you are using a cache, then load a report from it if (cache.Contains("1")) { webReport.Report.Load(cache["1"] as Stream); }   // Online-Designer settings webReport.DesignReport = true; webReport.DesignScriptCode = false; webReport.Debug = true; webReport.DesignerPath = "~/WebReportDesigner/index.html"; webReport.DesignerSaveCallBack = "~/Home/SaveDesignedReport"; webReport.ID = "DesignReport"; ViewBag.WebReport = webReport; //Pass the report to View   return View(); } ```  Method for obtaining the path to the reports: ``` private string GetReportPath() { return this.Server.MapPath("~/App_Data/"); } ```  Next, we add the method of uploading the file:  ``` [HttpPost] // Attribute indicates that the method is processing the Post request public ActionResult Upload(HttpPostedFileBase upload) {     if (upload != null) { // Get file name string fileName = System.IO.Path.GetFileName(upload.FileName); // Save report in cache cache.Add("1", upload.InputStream, DateTimeOffset.Now.AddMinutes(1)); // If you save to a file on the server upload.SaveAs(Server.MapPath("~/App_Data/report.frx")); } return RedirectToAction("Index"); } ```  Note the DateTimeOffset.Now.AddMinutes (1) parameter. It specifies the cache lifetime. Now we need a method of saving the report in Online Designer: ``` [HttpPost] // call-back for save the designed report public ActionResult SaveDesignedReport(string reportID, string reportUUID) { ViewBag.Message = String.Format("Confirmed {0} {1}", reportID, reportUUID);   if (reportID == "DesignReport") { //Save report in cache cache.Set("1", Request.InputStream, DateTimeOffset.Now.AddMinutes(10));   // If the report is saved to the server /*************************************/   Stream reportForSave = Request.InputStream;   string pathToSave = Server.MapPath("~/App_Data/DesignedReports/test.frx");     using (FileStream file = new FileStream(pathToSave, FileMode.Create)) { reportForSave.CopyTo(file); } /*************************************/ } return View();   } ```  We create a single view SaveDesignedReport.cshtml for this method: ```

@ViewBag.Message

```  It remains to implement the method of downloading the report file: ``` public FileResult GetFile() { Stream str = cache["1"] as Stream; // Prepare a file for download from the cache return File(str, "application/octet-stream","test.frx"); // If you used saving report to the file on the server return File(Server.MapPath("~/App_Data/DesignedReports/test.frx"), "application/octet-stream", "test.frx"); } ```  Now consider the view for the Index page (Home-> Index.cshtml): ``` @{ ViewBag.Title = "Home Page"; }

Select file

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) { }
@using (Html.BeginForm("GetFile", "Home", FormMethod.Get)) { }
@ViewBag.WebReport.GetHtml() ``` At the top we display the title of the page. Next, use the BeginForm helper to create a form with a file select button. The parameters specify the name of the handler method - "Upload", the controller name is "Home", the processing method is FormMethod.Post, the data encoding method is - enctype = "multipart/form-data". Next, insert the file download field and the button. On the right side of the page, we'll place one more button on which the edited report will be downloaded. For it, we also create a form using the BeginForm helper. In the last line of code, we display the report received from the controller. It is necessary to connect the scripts in the file _Layout.cshtml:     ``` @WebReportGlobals.Scripts() @WebReportGlobals.Styles() ```  Now you need to make changes to the two web configs. The files are called the same, but they are located in different folders. The first one is located in the Views folder. We add to it: ``` ```  The second file is located at the root of the project. In it we add a handler: ``` ```  Run our application. We see OnlineDesigner with an empty report. Download the report from the local computer using the "Select file" button. From the dialog box, select the file and click the Upload button: The report template was loaded. Let's change the background color in the data band. On the "Report" tab, we click the "Save" button: The SaveDesignedReport method works and we see the green alert on the right: Now click the «Download designed report» button: Browser download our report. Open it with Report Designer: And get our report, edited with Online Designer. Tags: .NET, .NET, FastReport, FastReport, MVC, MVC, Online Designer, Online Designer, WebReport, WebReport ### How to use a separate application domain for a report with a script URL: https://www.fast-report.com/blogs/separate-application-domain-script Memory problem When working with complex reports, which use the internal script, I noticed a significant consumption of RAM. For web services this may be critical. Why is this happening? After compilation of the report script a small library (assembly) remains in memory. It persists by the framework engine for subsequent calls. In the end, "garbage collector" will remove them, but still there is a memory consumption having place before. The way out of this situation is to use a separate application domain for the report with the script. By using the application domain, we can remove an assembly from memory, or to be more accurate - to unload domains that contain the assembly. Thus, by isolating the report and accompanying library with the script, we can easily clear the resources simply swapping out the unnecessary domain. The pay for this – is the necessity for creation an assembly that is loaded in the second domain and some inconveniences of calling functions of the second domain from the first one. Using domains Any .Net application already has one default domain. It was decided to create another domain and put the assembly with the report into it. Besides the report object, the assembly will contain functions of working with the report: show, export. I found marshaling and proxy to be the easiest way to communicate with the second domain. Usually marshaling is used for inter-process communication, but this  is also true for domains. Marshaling allows the client in the same domain invoke the object functions from another domain. We will refer to the object in the domain through a proxy. The interaction between the domains is the same as between different processes. To access code in another domain, you should use a proxy. Proxy is an object replacement. It redirects calls from one domain to another. Let's look at the workflow of a report with one or two domains: The figure shows that one domain is run in a single process. And we are launching a report with a script within it. In this report, the script is compiled and loaded into the assembly domain. If we call a lot of different reports with the script, the number of such assemblies is greatly increased, resulting in the  memory waste. Now let's consider the case with the two domains: In this case, the report is run in a separate domain but still in the same process. In this case, the assembly of the report script is loaded into the second domain. By using the proxy all functions in the second domain are available in the first domain. When we finish our work with the report and close it, the domain is unloaded together with all assemblies while freeing the memory. Implementation Create a Windows Forms application. This application with a standard class will be needed in order to create a second class and invoke functions from the loaded assembly in it. Add two buttons to the form: Run report, Export report to PDF. Add the function for creating a new domain: ``` public AppDomain NewDomain() { AppDomain domain = AppDomain.CreateDomain("NewDomain"); return domain; } ```  And function of unload domain: ``` public void UnloadDomain(AppDomain domain) { AppDomain.Unload(domain); } ```  Add a class library project to the solution. Call it a New Domain. So we have an assembly, which will be uploaded into a new domain. Be sure to inherit the class from MarshalByRefObject. To work with FastReport .Net, we need to add a reference to FastReport.dll library in the project. Now you can create an instance of the Report object: public Report report1 = new Report(); We will upload the report with a script in it. To do this, create report download function: ``` public void LoadReport(string path) { report1.Load(path); } ```  And functions run and export the report: ``` public void ShowReport() { report1.Show(); }   public void ExportToPDF() { FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport(); pdf.Export(report1); } ``` This is all we need to work with the report. Build the assembly and put in a folder with the application's executable file or add a reference to the assembly in the application project. Go to the project application. Earlier we wrote a function of adding a new domain. Now we need to download the created above assembly in this domain. To work with the assembly, we need a proxy: ``` public dynamic CreateProxy(AppDomain domain) { dynamic proxyOfChildDomainObject = domain.CreateInstanceFromAndUnwrap("NewDomain.dll", "NewDomain.NewDomainClass"); return proxyOfChildDomainObject; } ```  Here we create an instance of a proxy class for our assembly. CreateInstanceFromAndUnwrap function creates a new instance of the specified type defined in the specified assembly file. Specify the name of the assembly file and the full class name as a parameter. So we can create a new domain and proxy to work with the assembly. Now let's add the code for the first button: private void button1_Click(object sender, EventArgs e)         {             AppDomain domain = NewDomain();             dynamic proxy1 = CreateProxy(domain);             proxy1.LoadReport(Environment.CurrentDirectory + "/Matrix.frx");             proxy1.ShowReport();             UnloadDomain(domain);         } Let's take a closer look. In the first line create a new application domain using the function NewDomain(). Next, create a proxy for our assembly in the second domain. You can now work with the functions of the assembly from the second domain. Load the report. And run it in preview mode. After reviewing the report, the domain is unloaded. Use similar code for the second button. Call the function of export the report to PDF instead of showing the report. This will display the window of export settings and save dialog box. ``` private void button2_Click(object sender, EventArgs e) { AppDomain domain = NewDomain(); dynamic proxy1 = CreateProxy(domain); proxy1.LoadReport(Environment.CurrentDirectory + "/Matrix.frx"); proxy1.ExportToPDF(); UnloadDomain(domain); } ```  That's all. The application is ready. Although using multiple domains somewhat slows down the reports, after all it can significantly save the memory when running reports with built-in script. Script assembly will be deleted from the memory, along with the domain unloading. That can be critical for heavy systems, such as web services. In my opinion, the most effective way to work with reports with the script is to run this report in a separate application domain with the re-creation of this domain by N reports building. With the unloading of accumulated assemblies you can adjust the load on the memory. The number N should be selected by experimentation to determine the balance of the cost of resources to create domain and memory cleaning Tags: .NET, .NET, FastReport, FastReport ### How to use Active Query Builder in FastReport .NET URL: https://www.fast-report.com/blogs/active-query-editor-designer-net Summary: Let's take a detailed look at how to use Active Query Builder in FastReport .NET. Find more usefull tips and acticles in our blog. Let's take a detailed look at how to use Active Query Builder in FastReport .NET. Find more usefull tips and acticles in our blog. Let's take a detailed look at how to use Active Query Builder in FastReport .NET. Find more usefull tips and acticles in our blog. FastReport .NET provides enough opportunities for customization of its report designer. In this article, we'll look at how to replace the built-in SQL query editor with Active Query Builder. To get started, you need to download the latest version of Active Query Builder for .NET from the developer's site http://www.activequerybuilder.com/. At the time of publication, this is version 3.4.9.1086. Install the library with the help of the downloaded installer. For the demonstration, create the WindowsForms application. We add references to Active Query Builder libraries in the project. You will need the following libraries, which you will find in the folder with the installed program (C:\Program Files\ActiveDBSoft\Active Query Builder 3 .NET\assemblies): ActiveQueryBuilder.AdvantageMetadataProvider; ActiveQueryBuilder.Core; ActiveQueryBuilder.DB2MetadataProvider; ActiveQueryBuilder.FirebirdMetadataProvider; ActiveQueryBuilder.MSSQLCEMetadataProvider; ActiveQueryBuilder.InformixMetadataProvider; ActiveQueryBuilder.MSSQLMetadataProvider; ActiveQueryBuilder.MySQLMetadataProvider; ActiveQueryBuilder.ODBCMetadataProvider; ActiveQueryBuilder.OLEDBMetadataProvider; ActiveQueryBuilder.OracleMetadataProvider; ActiveQueryBuilder.OracleNativeMetadataProvider; ActiveQueryBuilder.PostgreSQLMetadataProvider; ActiveQueryBuilder.SQLiteMetadataProvider; ActiveQueryBuilder.SybaseMetadataProvider; ActiveQueryBuilder.UniversalMetadataProvider; ActiveQueryBuilder.View; ActiveQueryBuilder.View.WinForms; ActiveQueryBuilder.View.WPF; ActiveQueryBuilder.VistaDB5MetadataProvider. Also, the libraries are required: FastReport; FastReport.Bars; FastReport.Editor. And now add the file to the project. It is a plugin for working with ActiveQueryBuilder. It is located here: J:\Program Files (x86)\FastReports\FastReport.Net\Extras\Misc\ActiveQueryBuilder\ActiveQBForm.cs. To do this, right-click the project name in the Solution Explorer and select Add -> Existing Item…. Since we have the demonstration application, the form will contain only one button: And now create the event handler for the button click with a double click on it: ``` using FastReport.Forms; using FastReport.Design; using FastReport; … private void button1_Click(object sender, EventArgs e) { Report report = new Report(); FastReport.Utils.Config.DesignerSettings.CustomQueryBuilder += new FastReport.Design.CustomQueryBuilderEventHandler(DesignerSettings_CustomQueryBuilder); report.Design(); }   private void DesignerSettings_CustomQueryBuilder(object sender, CustomQueryBuilderEventArgs e) { using (ActiveQBForm form = new ActiveQBForm()) { form.Connection = e.Connection; form.SQL = e.SQL; if (form.ShowDialog() == DialogResult.OK) e.SQL = form.SQL; } } ```  When the button is clicked, a report object is created, then the report builder caller is override. And call the report designer. Below, we created a custom report builder for the Report Builder. As you can see, we simply call the ActiveQBForm object previously added to the project. Now start the application. Click the single button and see the report designer. If you want to edit an existing report, after creating the Report object, you need to load the report into it: ``` report.Load("С:/Program Files (x86)/FastReports/FastReport.Net/Demos/Reports/Image.frx"); ```  Now add the data source to the report using the icon: We need to create a connection to the DBMS supporting SQL language, to continue to use SQL query builder. For example, we connect to the Access database. In the next step of the wizard for creating a new data source, we are asked to select the tables we need from the database. But in the right bottom corner there is a button "Add SQL query ...", which starts the query creation wizard. At the first step of creating a query, you need to specify a name for the new view, which results from the application we are creating. At the second step we can manually enter the text of a SQL query. However, in the lower right corner we see the "Query Builder ..." button that will launch the Report Builder. Push it: And we see the report builder we created on the basis of ActiveQueryBuilder. To add a table to the workspace, drag it from the data area on the right. Or right-click on the workspace of the builder and select "Add" from the context menu: And holding down Ctrl, select the desired table from the database: After that, we click the "Add Selected Objects" button and see the associated tables in the builder: At the bottom of the window, we can see the automatically generated text of the SQL query. And on the Result tab, the result of the query. Let's say we are satisfied with the created query. To accept it, click on the green icon at the top of the window. To cancel, select the red icon. The query wizard sends the SQL query text that we created in the builder: Completing the creation of the query by clicking the Next button, and in the end Finish. In the same way, we complete the creation of the data source. Now in the report designer there was a data source: So we used a plugin to replace the standard SQL query builder. Tags: .NET, FastReport, Data Source, SQL ### How to use an online designer in a web application Mono URL: https://www.fast-report.com/blogs/use-online-designer-mono Those who came across with an online designer in FastReport .Net certainly appreciated all its advantages and, working with FastReport Mono, would like to use it in their web applications. In fact, there is nothing complicated. Today we will look at the way to create a web application in MonoDevelop and to use the online designer in it. In addition to the online designer such buttons as download the report to the designer and save the report to the local computer will be located on the page Let's create an ASP .Net MVC project: We need to add libraries to the project in References: FastReport.Mono, FastReport.Web, System.Net.Http. Download the zip archive with an online designer that you have assembled in an online designer on fast-report.com. Unpack the archive and add the WebReportDesigner folder to the project root. We also need a folder in which we will save reports, store a file with data. Add the App_Data folder to the project root. We will use demo reports from the FastReport.Mono delivery, so we will need the nwind.xml database. Add it to the App_Data folder. Now you can start programming. In the Controller folder is the HomeController.cs file. Fix it. In the using section we need libraries: ``` using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.UI; using System.Text; using System.IO; using FastReport; using FastReport.Web; using FastReport.Utils; using System.Web.UI.WebControls; using FastReport.Export.Html; using FastReport.Data; using System.Net.Http.Headers; using FastReport.Export.Image; using System.Net.Http; ```  Fix the main, and so far the only web method Index: ``` private WebReport webReport = new WebReport(); // Web report object public ActionResult Index() { webReport.Width = Unit.Percentage(100); webReport.Height = Unit.Percentage(100); System.Data.DataSet dataSet = new System.Data.DataSet(); dataSet.ReadXml("App_Data/nwind.xml"); // Read database webReport.Report.RegisterData(dataSet, "NorthWind"); // Register data in the report if (System.IO.File.Exists("App_Data/report.frx")) { webReport.Report.Load("App_Data/report.frx"); } webReport.DesignReport = true; webReport.DesignerPath = "WebReportDesigner/index.html"; webReport.DesignerSaveCallBack = "Home/SaveDesignedReport"; webReport.ID = "DesignReport"; ViewBag.WebReport = webReport; // Pass the report to View return View(); } ```  Let’s consider it in more details. Previously, we created a web report object that is accessible inside the class. In the Index () method, at the beginning we set the size of the WebReport object - height and width at 100%. After that we create a data set. And we load into it the xml database. We register the data source in the report. We check if the report template file exists and, if it is successful, load it into the report object. This is followed by the settings of the web report object. Turn on the report editing mode, which allows you to display the online designer. Then, specify the path to the designer page. In the next step, we set up a view to display the callback when the report is saved. The last setting is the identifier of the report object. We will need this for a View in the future. Using ViewBag, we pass the report object to the view. As we agreed at the beginning, in addition to the report designer, the page will contain buttons for downloading the report to the designer and saving the edited report to the local computer. Write web methods for these buttons. First to upload the report to the server: ``` [HttpPost] // The attribute indicates that the method processes the Post request. public ActionResult Upload(HttpPostedFileBase upload) { if (upload != null) { // Save the file on the server upload.SaveAs("App_Data/report.frx"); } return RedirectToAction("Index"); // Call web index method } ```  Now the report download method to the local computer: ``` public FileResult GetFile() { return File("App_Data/tmp.frx", "application/octet-stream", "tmp.frx"); } ```  Great method! Just one line. If only they were all like that ... The path to the tmp.frx report file is specified in the file parameters. You noticed that in the previous method we saved the report as report.frx. But report.frx is the file of the loaded report template, and our goal is to edit the report, and save it under a different name. Therefore, we need another method - the method of saving the edited report. We will create our own event handler for pressing the report save button in the online designer: ``` [HttpPost] // call-back for save the designed report public ActionResult SaveDesignedReport(string reportID, string reportUUID) { ViewBag.Message = String.Format("Confirmed {0} {1}", reportID, reportUUID);   if (reportID == "DesignReport") { Stream reportForSave = Request.InputStream; string pathToSave = "App_Data/tmp.frx";   using (FileStream file = new FileStream(pathToSave, FileMode.Create)) { reportForSave.CopyTo(file); } }   return View(); } ```  In the first line, we show a message confirming the saving of the report. Then, we check the report identifier, if it is equal to "DesignReport", then we send the result to the stream. And create a new report template file based on this stream. For this method, we need to create a view. Right-click on the method signature and create a new view (create view): In the "view" code, simply display the message:

@ViewBag.Message

Thus, the second file will appear in the Home folder – SaveDesignedReport.cshtml. Do you remember, in the Index () method, we specified the web report property? webReport.DesignerSaveCallBack = "Home/SaveDesignedReport"? It's time to set the value of this property if you didn’t know what your view would be called to display the callback to save the report. Now let's move on to an equally interesting part - coding the Index.cshtml view: ``` @{ ViewBag.Title = "Home Page"; }

Select file

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) { } @using (Html.BeginForm("GetFile", "Home", FormMethod.Get)) { } @ViewBag.WebReport.GetHtml() ```  Here, we display the title. And use the BeginForm helper to create a form with a file upload field and a button. As parameters, this helper accepts the name of the web method from the controller, the name of the controller, the type of request, the way the data is encoded. As far as you remember we created two methods in HomeController: to download the report to the designer and to download the report to the local computer. The names of the web methods in the forms created by the helper must match the names from the controller. As you can see, we also created a form with a button to download the report from the server to the local computer. In the last line of code, we convert the report into HTML format and display it. To do this, use the built-in method GetHtml (), which causes the export of the constructed report to this format (in our case, the designer). In the master file of the _Layout.cshtml page, you need to connect FastReport scripts: ``` … @WebReportGlobals.Scripts() @WebReportGlobals.Styles() ```  There are two web configs in the project. In the ASP.Net project, the web.config only applies to the directory in which it is located, and to all subdirectories. Therefore, the Web.config located in the Views directory is designed specifically for views. Open it and add a couple of lines to the Namspaces section: ``` ```  The second Web.config is at the root of the project, which means it configures the entire application. We’ll add a handler to it to enable exporting the web report object to the Html format: ``` ```  If there are no and sections in the web.config, then add them. At this step we can be considered our little web application ready. Let's run it on the xsp debug web server. Just clock Ctrl + F5.  The Browse... button and the label with the file name appeared thanks to . Click this button and select a report template file.  The label now displays the file name. Click the Upload button: The report is uploaded to the designer. Now we can make the necessary changes to the report template. Then go to the Report tab and click on the save icon: After that, the report is ready for download, so click the Download designed report button. A standard browser dialog box appears in which we are offered to download a report or reject an action. Download the report and find it in the downloads folder. That's all. As you can see, ASP .Net web projects on Linux is quite real. Not much more difficult than under Windows. Tags: Mono, Mono, FastReport, FastReport, Online Designer, Online Designer ### How to use an SVG object in FastReport .NET URL: https://www.fast-report.com/blogs/use-svg-object-net Sadly, the issue of vector graphics in FastReport.Net has been poorly worked out. In the designer there is a small set of figures and polygons, but there is no information on how to use files with vector graphics. Quite recently a plug-in for the report designer has appeared. It adds a new SVG object to the component palette. Now you can use any vector drawings in SVG format in your report. Now let us learn what SVG format is. This abbreviation (SVG) stands for Scalable Vector Graphic. SVG is a vector graphics markup language that is based on xml. The use of xml immediately provides popularity to this format. Here is a simple SVG file with lines, if you open it with a text editor: ``` ```  Such an XML document can describe polygons, drawings or a text. SVG allows to create animated and interactive graphics using JavaScript and CSS. Unfortunately, in FastReport this is not available yet. The main advantages of SVG format are: 1) Simplicity of understanding of structure, and hence the ease of creation; 2) A small file size; 3) Scalability; Let us now examine how to add an SVG object to the report designer. To do this, open the project in the \ FastReport.Net \ Extras \ Misc \ SVGObjectPlugin folder. In this case, the nuget package manager downloads updates. We let us build a solution. Open the report designer. In the File menu, use the icon  to open the designer's settings: On the "Plugins" tab add the library that has been created. It is located here: FastReport.Net\Extras\Misc\SVGObjectPlugin\SVGObject\bin\Debug\SVGObject.dll. Click "OK" and restart the designer. Now, at the very bottom on the component panel on the side there is one more element: . Drag it to the report page and work with it like with the "Picture" object. Double-clicking on it opens the editor: Using the "Open" button we load the SVG file. As one can see from the tabs, the file can be downloaded from different sources: a local disk, a database, by a hyperlink. This is it. Now you can stretch the image without losing quality: Using SVG files extends the use of FastReport.Net in print business. We wish developers not to stop at their oars and gladden us with the opportunity to use animated SVG in web reports. Tags: .NET, .NET, FastReport, FastReport, SVG, SVG ### How to use ASP .NET MVC project in FastReport Mono URL: https://www.fast-report.com/blogs/create-asp-net-mvc-mono Summary: An overview of the implementation of an ASP .NET MVC project in FastReport Mono for generating documents from the native code. An overview of the implementation of an ASP .NET MVC project in FastReport Mono for generating documents from the native code. An overview of the implementation of an ASP .NET MVC project in FastReport Mono for generating documents from the native code. First of all, for programming in C # under Linux you will need to install: • MonoDevelop - development environment under the Mono framework; • XSP - a test web server for running ASP .NET applications; • A "battle" web server, for example, Apache. But this is if you are going to deploy an ASP .NET application. In our case, only the XSP server is sufficient for development. This is something like IIS Express, only for Mono. There are a lot of articles on the Internet that demonstrate the installation of MonoDevelop and XSP, so I'll skip this. Let's proceed immediately to creation of the application. Let's create a new solution. From the File menu, select New Solution .... Choose ASP .NET MVC Project. The next step is to cancel the Include Unit Test Project. Next, specify the name of the project and the name of the solution, and select the project directory and click Create. Add libraries to the project in References: FastReport.Mono.dll, FastReport.Web.dll. Add a new folder App_Data to the project. We will copy the database and report template into it: Let's edit the controller for the HomeController.cs homepage. Our objective is to create a report object, upload a report and data to it. ``` public class HomeController : Controller { public ActionResult Index() { WebReport report = new WebReport(); System.Data.DataSet data = new System.Data.DataSet(); data.ReadXml("App_Data/nwind.xml"); report.Report.RegisterData(data, "NorthWind"); report.Report.Load("App_Data/Barcode.frx"); ViewBag.WebReport = report; return View(); } } ```  Let's take a quick look at the code for the Index page. First, we create an object of a web report. Then create the DataSet and load the XML database into it. After that, we register the data source in the report and load the report template into the report object. In the end, we pass the report to the view through ViewBag. Now, it's logical to edit the Index.cshtml view: ``` index.chtml  

FastReport.Mono!

@ViewBag.WebReport.GetHtml() ```  The code is very simple - header and report. As you can see, the report object is exported to the HTML format for display. In order for export to work, we need to add handlers in Web.config in the project root: ```   …     …   ```  There is another Web.config in the Views folder, and it must also be supplemented:             ``` ```  In the Views-> Shared folder, there is a page template for _Layout.cshtml. Connect it to scripts and styles: ``` @ViewBag.Title @WebReportGlobals.Scripts() @WebReportGlobals.Styles() @RenderBody() ```  That's all. Run the application: If you worked before with FastReport .NET, then for you there is nothing new in this article. The implementations in FR .NET and FR.Mono are almost identical. Tags: Mono, FastReport, ASP.NET, MVC ### How to use ASP.NET applications in Linux Debian URL: https://www.fast-report.com/blogs/aspnet-on-linux-debian Summary: The Mono project allows you to run applications that use the .NET Framework in the any operating system different from Windows. The Mono project allows you to run applications that use the .NET Framework in the any operating system different from Windows. The Mono project allows you to run applications that use the .NET Framework in the any operating system different from Windows. The Mono project allows you to run applications that use the .NET Framework in the any operating system different from Windows . Now we will launch FastReport.Mono in Linux Debian. The same settings will be applied to all derived from Debian systems, such as Ubuntu. First, we need to install Mono: ``` #apt-get install mono mono-gmcs mono-gac mono-utils ``` If in the future we plan to develop on the computer , install the visual environment of Mono Develop: ``` #apt-get install monodevelop monodoc-browser monodevelop-nunit monodevelop-versioncontrol ``` For execute the web-applications written in ASP.NET we should install XSP server: ``` #apt-get install mono-xsp2 mono-xsp2-base asp.net2-examples ``` Some examples of ASP.NET 2.0 will installed in /usr/share/asp.net2-demos/. Go to this folder and run XSP server for testing: ``` #xsp2 ``` See the output of the server : ``` Listening on port: 8080 (non-secure) Listening on address: 0.0.0.0 Root directory: /usr/share/asp.net2-demos Hit Return to stop the server. Application_Start ``` By default, XSP listen the address http://localhost:8080 Check default page of XSP in browser. Then we need to install module for Apache2 mod_mono: ``` #apt-get install libapache2-mod-mono ``` Restart Apache : ``` #/etc/init.d/apache2 restart ``` Check the configuration of mod_mono /etc/apache2/conf.d/mono-web.conf: ``` MonoAutoApplication Enabled MonoRunXSP True MonoDebug False MonoSetEnv MONO_IOMAP=all MonoMaxActiveRequests 500 MonoMaxWaitingRequests 500 MonoAutoRestartMode Requests MonoAutoRestartRequests 5000 MonoSetEnv MONO_THREADS_PER_CPU=3000 ``` Example of virtual host configuration in Apache2: ``` NameVirtualHost 192.168.1.2:80 ServerName mytest-server-mono.com ServerAdmin admin@mytest-server-mono.com ServerAlias www.mytest-server-mono.com 192.168.1.2:80 AddMonoApplications FrSite "/:/home/www/fr_asp_net_dir" MonoExecutablePath FrSite "/usr/bin/mono" MonoServerPath FrSite "/usr/bin/mod-mono-server2" MonoMaxMemory FrSite 300000000 MonoMaxCPUTime FrSite 3600 DocumentRoot "/home/www/fr_asp_net_dir" Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all SetHandler mono MonoSetServerAlias FrSite DirectoryIndex Default.aspx AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd   ``` Let's copy FastReport.Mono demos form \Demos\C#\Web to the configured home directory and check working mod_mono and ASP.NET applications in Linux Debian. You can read more information about mod_mono configuration in the home site of Mono project http://www.mono-project.com/Mod_mono Tags: .NET, .NET, Mono, Mono, FastReport, FastReport, Linux, Linux, ASP.NET, ASP.NET ### How to use Configurator in FastReport Desktop URL: https://www.fast-report.com/blogs/configurator-desktop Summary: Get useful tips on how to use the configurator in FastReport Desktop works. Find more usefull tips and articles in our blog. Get useful tips on how to use the configurator in FastReport Desktop works. Find more usefull tips and articles in our blog. In this article I want to consider working with the Configurator, one of the programs of the FastReport Desktop complex. This program is designed to create special configuration files. They are instructions for the report builder, they specify actions with the report. Namely: export the report to various formats, save the report to a local disk or a remote server, send the report via email. In this article I want to consider working with the Configurator, one of the programs of the FastReport Desktop complex. This program is designed to create special configuration files. They are instructions for the report builder, they specify actions with the report. Namely: export the report to various formats, save the report to a local disk or a remote server, send the report via email. You can create such configurations and run them manually or with the help of a special task scheduler. Let's look at the process of creating a configuration file. Run Configurator: You can see a set of options for configuration. And the first of them is the "Report" . To select it, use the icon with the folder on the right. This will show the standard open file window. I would like to draw your attention to the fact that you can select both a report template in the .fpx format and a report preview file in the .fpx format. The next option is "Report Parameters ". It allows you to specify the values of report parameters, if any. We press the button "Settings", and we see the form - the list of parameters: We can add and remove parameters with the corresponding buttons. The "Configure data connections" option allows you to add several data sources for the report: To add a connection, click the appropriate button and select the required data provider from the list: To delete a connection, select it in the list and click the "Remove data connection" button. Next, we can enable the "Export" option. The report will be exported in the selected format. If you do not mark this option, the report will be saved, or sent by email (depending on selected action) in fpx format. The settings for the selected export format are set in a separate window. You can call it up using the "Settings" button: If you plan to save the report using the configuration, enable the "Save to" option and select the save location: In the options settings, you specify the path or connection settings, if you chose cloud service or FTP. For example, the settings for saving to a folder: Interesting option "Add timestamp to file name". The date and time will be assigned. This is useful if you store multiple reports in one folder. In the next step you can specify the settings for sending an email: When this option is enabled, the e-mail sending settings window will be displayed. For those who dealt with the sending of e-mails in FastReport .Net - everything is standard. Account settings for sending: And the message itself: The report file (export, if selected) will be automatically attached to the message. Well, the last option does not need a description: Having adjusted the options you need, we press the "Save" button at the bottom of the main form. The standard file save dialog box is displayed. Next to the save button there is one more button - "Start". With it, you can run the configuration immediately, without creating a task in the scheduler. The configuration file has the extension fcx, but it is essentially an xml document that can be opened with any text editor: ``` ```  As you have noticed, the structure of the file is quite simple. The root tags correspond to the options discussed above. We created a configuration file, now let's talk about ways to use it: 1)      Manual start from the Configurator. Here everything is simple, create a new one or open an existing configuration file and start using the button ; 2)      Running from the command line of the Report Builder (included in the FR Desktop) with the configuration file that we created:"Builder.exe path/to/config.fcx". Here we pass to the Builder a single parameter - the path to the configuration file; 3)      Run the configuration file by job in the Scheduler (included in the FR Desktop).  If the first two options do not cause problems, the third needs to be considered: The scheduler is a typical scheduling program for scheduled tasks. The figures show the main parameters of the task: name, config and trigger. Depending on the value of the trigger, the time settings are changed. If this is a task for a single execution, then the date and time of operation are set. Time is also set for periodic tasks, daily or weekly. And for triggers "When you start the computer" and "When you log on to the system," no parameters are needed. That's all. When the task is fulfilled, the time of the last run will be indicated: You can run the task immediately. Right click on the task and select "Run task now" from the context menu. At the same time, the builder starts: The results of the builder's work are shown on the command line. We looked at the typical task of creating a configuration file and executing it. In fact, this is working with FR Desktop, except for directly creating reports, of course. And finally. If you want to change the localization of the Configurator, open the file C: \ Program Files (x86) \ FastReports \ FastReport.Desktop \ settings.xml in the text editor. Replace the two symbolic designation of the localization to the one you need: ``` EN ``` Tags: FastReport, Desktop ### How to use custom libraries with functions in Designer URL: https://www.fast-report.com/blogs/custom-libraries-functions-designer Summary: We tell you how to use to collect all your favorite functions in a library, connect it to the report designer in FastReport .NET.. We tell you how to use to collect all your favorite functions in a library, connect it to the report designer in FastReport .NET.. We tell you how to use to collect all your favorite functions in a library, connect it to the report designer in FastReport .NET.. Despite the fact that so-called arsenal of built-in functions in the report designer is by no means small, sometimes still lacks some specific. Thanks to the script in the report we can easily implement the desired function. But what if this function is needed in many records? Each time to add it to the report script? Of course, not. You can collect all your favorite functions in a library connected to the report designer. It is desirable to have the library located in the same folder as the report. Let us create a Class Library project in which we will have a test function. For example, the function of converting an array to a string. Turned out to be such a class. ``` namespace ArrayToString { public static class UserDefined { public static string ArrayToString(List parameters) { return String.Join(",", parameters); } } } ```  Compile the library. Now create your application in which we will open report generator and use our library ArrayToString. This is a normal Winforms Application. Add the library FastReport to project references: since it is recommended that you store your library in the same directory as the executable file of your application, you can add a reference to it in draft. In addition to this, the library will be added to a folder with the executable file in the compilation. There are only form and a button in the application. Add button click event handler: ``` private void RunBtn_Click(object sender, EventArgs e) { Report report = new Report(); report.Design(); } ```  Run the application and click the button. The report designer will start with an empty report. In the report properties, you can add a link to your .net library. Now create a simple report template - a list of product categories: Add a text object to the Page Footer band. Soon you will know why it is. Let's go to the Script tab. We need to create a list in which we will add category names. The function from the user library converts the list into one line, which we will display in the basement of the page. So, create a list: ``` public class ReportScript { public List list = new List(); } ```  Let's return to the report page. For the Data band, create the AfterPrint event handler: ``` private void Data1_AfterPrint(object sender, EventArgs e) { list.Add(((String)Report.GetColumnValue("Categories.CategoryName"))); } ```  Here we add the name of the category each time the band "Data" is displayed. Now, add the BeforePrint event handler for the text object in the Page Footer band: ``` private void Text1_BeforePrint(object sender, EventArgs e) { Text1.Text = ArrayToString.UserDefined.ArrayToString(list); } ```  Here, we assign to the text object the string returned by the user-defined function from the previously added dll. Note that the path to the function is full, with the namespace and class name. You can shorten the name if you add the ArrayToString library to using. Now you can run the report in preview mode. Top of the page:  And the bottom of the page: Therefore, we got a list of product categories in one line. By the way, you can use the following expression in a text object in the bottom of the page: [ArrayToString.UserDefined.ArrayToString(list)] It is equivalent to this: ``` private void Text1_BeforePrint(object sender, EventArgs e) { Text1.Text = ArrayToString.UserDefined.ArrayToString(list); } ``` Moreover, you do not need to create an event handler. If you want to use a custom library for reports in a web project, you need to place it in the bin folder. Tags: .NET, .NET, FastReport, FastReport, Designer, Designer, Customization, Customization ### How to use data in JSON format URL: https://www.fast-report.com/blogs/report-data-in-json-format There used to be a question “How to use JSON data to my web reports?” as it was not easy to implement it in FastReport.Net. Recently  a version 2016.2 has been released to answer it and help users. It must be clarified that JSON (Java Script Object Notation) is a text data exchange format based on Java Script. It is actively used in web-programming in communication between the browser and the server or between servers. This format is laconic compared to CML. It is convenient to use it with Java Script. So, in this article it will be introduced how to use the data in JSON format in FastReport.Net. Necessary to remind, that this feature appeared in FastReport.Net 2016.2. Firstly, you should gather the connection plugin to the JSON data. It is located here: C: \ Program Files (x86) \ FastReports \ FastReport.Net \ Extras \ Connections \ FastReport.Json. Let us walk you through the steps: Open the solution FastReport.Json.sln. To build successfully it is needed to correct a reference to System.Data.Json.dll library, which is located here: C: \ Program Files (x86) \ FastReports \ FastReport.Net \ Demo. Compile the project and get FastReport.Json.dll library. There are three ways to register the plugin in a report designer: 1. Registration with report designer help: Open the report designer. There is no difference whether it is a part of Visual Studio project or as a stand-alone application; Add the plugin. You can do this in the menu: View-> Options ..., tab Plugins. Add a new plagin, using the button “Add”. Choose a previously compiled FastReport.Json.dll library; Reopen a report designer. 2. Register manually in a FastReport configuration file: By default, this file is located in the directory: "C: \ Documents and Settings \ user_name \ Local Settings \ Application Data \ FastReport"; Close all running instances of FastReport.Net; Open the configuration file with any text editor. Fix the following lines: ... 3. Register the library in an application code: Add a reference to the library in the project FastReport.Json.dll; Perform the following code once when the program starts :FastReport.Utils.RegisteredObjects.AddConnection (typeof (JsonDataConnection)). After the plug-in registration, it is possible to begin creating a data source in the report. Open the menu in the Report Designer: Data-> Add data source. Activate a data source wizard. Click the button “New connection”. Create a connection string. Select the connection type – JSONdatabase. Next, select the data file with the extension JSON. It is important to say that the database can be located on another web resource. Therefore, to get to the database you need to specify the url. Click “OK”. Click the button “Next” in the Data Wizard. Choose the desired tables. For example, “Products” and click the button“ Finish”. As table "Products" appeared in the data window,  drop the fields to the Data band: ProductName, UnitsInStock, UnitPrice and start the report. As you can see, working with data from the json database is also convenient, as with any other source. Now FastReport.Net has become useful for the followers of this storage technology. Tags: .NET, .NET, FastReport, FastReport, Data Source, Data Source ### How to use DB connectors from the Nuget repository URL: https://www.fast-report.com/blogs/connectors-databases-nuget-repository Summary: We tell you how you can quickly use connectors to databases from the Nuget repository in your project. Suitable for ASP.NET Core. We tell you how you can quickly use connectors to databases from the Nuget repository in your project. Suitable for ASP.NET Core. We tell you how you can quickly use connectors to databases from the Nuget repository in your project. Suitable for ASP.NET Core. FastReport.Net has been supplying plugins for a long time - connectors to various databases. These plugins allow you to add connectors to the report designer to connect to the required database. The purpose of creating these plug-in connectors is to simplify the process of connecting to a data source. However, there is one inconvenience in using such plug-ins - they must first be compiled. And for this you must first download third-party libraries from the developer's database site. But, once you have compiled the plug-in, you can use it for as long as you like. FastReport now distributes these connectors in the form of libraries through the Nuget package manager. This is true both for the .Net Framework 4 application and for ASP .Net Core. Now we are spared the need to compile plugins with third-party libraries, for which many thanks to the developers of FastReport. Let's talk about the peculiarities of using these libraries. To create a report, you need to call the designer. With plugins, you would use a separate Report Designer program, which is convenient. But with the installed connector libraries, you'll need to call a designer from your application to use these connectors in your report. If for WinForms applications to call the report designer from the code is a trifle, then in .Net Core applications it is impossible. Of course, there is Online Designer for web development of reports, but this is a completely different story. Therefore, you must first create a WinForms application, install the required connector into it and call the report designer. Or you can use the already compiled Designer.exe application that comes with FastReport, but in this case the list of supported DBMS will be limited (MS SQL is supported). Let's now take a look at all this with an example. Create a test WinForms application and add FastReport.Net libraries to it. And also try to install connectors from the manager Nuget. The figure shows that we have connectors to the databases: MsSql, MySql, Postgres, SQLite, Json, MongoDB, RavenDB. Let's try to connect to the Json data source. Install the appropriate connector from Nuget. On the form, add a button and the following code for it: ``` using FastReport; using FastReport.Data; using FastReport.Utils; … private void button1_Click(object sender, EventArgs e) { new JsonAssemblyInitializer(); Report report = new Report(); report.Design(); } ```  In the first line of the button click event handler, we initialize the added JSON connector. Then create a report object and call the designer. In the designer, we create a new data connection. And among the available connectors we see the JSON we added. Select it and set the path to the data file with the .json extension. Create a report template and save it. Now, in the code for our button, you can replace the line: ``` report.Design(); ```  to: ``` report.Load(@"TestJsonConnection.frx"); report.Show(); ```  Here we specify the path to the report file that we created earlier and run the report for the show. Thus, using the library-connector required from us only two actions - to install the library from Nuget, and to initialize it in the code. However, not everything is so simple if it comes from ASP .Net Core application. Firstly, we need to create a report. And for this we need to run the designer from the code. In web projects, this is impossible. I'll have to create a WinForms application, specifically to run the designer. Either install the plugin in a separate ReportDesigner and create reports in it. Secondly, the program code is somewhat more complicated. In addition to initializing the connector library, you will need to specify a connection string, create tables, and add a connection to the report: ``` JsonDataConnection conn = new JsonDataConnection(); conn.ConnectionString = "Json=\"K:\\Documents\\nwind.json\""; conn.CreateAllTables(); report.Dictionary.Connections.Add(conn); ```  By labor, this is comparable with the use of third-party libraries for connecting to databases. So, in the case of .Net Core, not everything is so unambiguous. But in the .Net Framework 4 applications, the advantages over third-party libraries are obvious. Tags: .NET, .NET, FastReport, FastReport, Data Source, Data Source ### How to use dynamic queries in FastReport .NET URL: https://www.fast-report.com/blogs/dynamic-queries-net Summary: Let's take a closer look at how to use dynamic queries in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to use dynamic queries in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to use dynamic queries in FastReport .NET. Find more usefull tips and articles in our blog. Most users of FastReport .NET build reports receiving data from SQL DBMS, and would like to take advantage of Sql in their reports. Nothing prevents you from using dynamic queries, stored procedures and functions. In this article, we will have a look at how to use dynamic queries when creating a report data source. This type of query is used to bypass the syntactic restrictions of the SQL language. But such requests can be performed longer due to a suboptimal query plan, and security needs to be built differently. But now it's not about that. Dynamic queries are convenient, and so we want to use them in FastReport. Let's look at the example. Let’s suppose you want to filter the data before the report is displayed. It seems that everything is pretty simple. But, if you want to change the field on which the data will be filtered? Using a dynamic query, you can add variables to the query body. One of which is the field name for imposing the condition, and the second is the value of this field. Create a report. Previously, we need to create two report parameters. Add ParamName and ParamValue of the string type. Now create a connection to the database. We connect to the SQL server: At the stage of selecting tables, click the button  . It runs the query wizard: Set the name of the future table and click Next. Enter a dynamic query manually. This query has two parameters: @ Param1 - field name, @ Param2 - field value. Here you can add the third parameter - the operation sign ( =, in, <, >, <, >). But we will limit ourselves to two. Since the query is represented as a text value, we use the Execute statement to execute. Click the Next button. In the parameter definition window, create two with the same names as in the SQL query. You must specify Expression. For the first parameter, this is [ParamName], and for the second parameter - [ParamValue]. As you guessed, these are the report parameter names that we created earlier. Click the Finish button. We got the data source: Drag the fields from the Product table to the band's data. And now, let's add a dialog form. Drag two parameters from the Data window to it. Now we can specify the name of the field and its value for filtering the sample. Run the report. Set the parameter values and click Ok. And we get the records we need. In our case, it is one. Let's try to filter the report on a different field. Run the report again. And the result: Thus, you can use dynamic queries to help you avoid unnecessary code or report settings. And if you work with large amount of data, you can speed up the time of report generation, by cutting off unnecessary data at the stage of receiving them. Tags: .NET, FastReport, SQL ### How to use Excel file as datasource in a report URL: https://www.fast-report.com/blogs/excel-file-datasource-report Summary: Let's take a closer look at how to use an Excel file as a data source in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to use an Excel file as a data source in FastReport .NET. Find more usefull tips and articles in our blog. Let's take a closer look at how to use an Excel file as a data source in FastReport .NET. Find more usefull tips and articles in our blog. Not everyone knows that FastReport .NET allows you to use files of a spreadsheet editor Excel as a data source. It can be both .xls and .xlsx files. In this article we will show how to create such a data source in the report. First of all - about the requirements for Excel documents. Each table should be placed on a separate sheet. The first line should have the column heads that are used as the names of the table fields. 1. Create Excel document with one table: 2. Create a Windows Forms project; 3. Add the Report control on the form; 4. Double click on the added control. Skip the data source window. The report designer appears; 5. In the Report Designer create a new connection to the data source. Menu Data-> Add Data Source. The data source wizard appears: 6. Create new connection string by using the button with the same name. 7. In the window of string connection creation choose the connection type – ODBC Connection.  Switch the radio button “Use connection string”. Select the data source using button . 8. Here, select the tab "Computer data source". 9. Select “Excel Files” and click Ok. In the opened window select the file .xls or .xlsx, which contains the data. Close the wizard connection string by the button OK. The connection string is as follows: Dsn=Excel Files;dbq=C:\Users\Gromozeka\Documents\Visual Studio 2010\Projects\ExcelDataSource\ExcelDataSource\bin\Debug\Employee.xlsx;defaultdir=C:\Users\Gromozeka\Documents\Visual Studio 2010\Projects\ExcelDataSource\ExcelDataSource\bin\Debug;driverid=1046;maxbuffersize=2048;pagetimeout=5 10. In the data source wizard click Next. В мастере создания источника данных нажимаем Next. Go to the window of data selection. Select desired tables. In our case Employee. And click Finish. 11. The new data source was added to the Data window. 12. Now we can create the report template. Drop all the fields onto the Data band. Run the report: So, you can use data from Excel files to automatization your accounting statements. A data source can contain a lot of tables. It depends on the amount of sheets in the spreadsheet.  Many companies still hold their accounts in excel format. And you can use it in your reports. Tags: .NET, FastReport, Excel, XLSX ### How to Use Excel Formulas in a Report When Exporting to MS Excel URL: https://www.fast-report.com/blogs/export-excel-formulas-net Summary: Starting with version FastReport .NET 2026.1, it is now possible to export formulas to Microsoft Excel. It is important to set up formula exports correctly and follow the syntax. Starting with version FastReport .NET 2026.1, it is now possible to export formulas to Microsoft Excel. It is important to set up formula exports correctly and follow the syntax. In today's world, working with data is an integral part of many professions. Microsoft Excel is one of the most popular tools for processing and analyzing it. Formulas in Excel allow you to automate calculations, simplify data analysis, and make reports more informative. However, when exporting data to Excel, it was not always possible to immediately use all the features of formulas. In today's world, working with data is an integral part of many professions. Microsoft Excel is one of the most popular tools for processing and analyzing it. Formulas in Excel allow you to automate calculations, simplify data analysis, and make reports more informative. However, when exporting data to Excel, it was not always possible to immediately use all the features of formulas. Starting with version FastReport .NET 2026.1, it is now possible to export formulas to Excel. For example, to export the formula =A1*B1 to Excel, you need to create three text objects: 1. The first object is the value for cell A1. 2. The second object is the value for cell B1. 3. The third object is the formula that will be calculated in Excel (=A1*B1). Report Designer view: Important Points for Correct Work 1. The formula must always start with an equal sign “=.” 2. By default, formula export is disabled. 3. Formula export is controlled by the ExportFormulas parameter. To use this function, enable the checkbox in the export settings (Other → Export formulas section). What Happens if the Formula is Incorrect? If an incorrect formula is encountered in the report, the application will attempt to process it during export. In case of an error, a standard error message will appear in the file, and the cell with the formula will remain empty. Supported Formulas and Operators Formulas must use English Excel syntax. For example, instead of СУММ, you need to write SUM. Available operators: 1.  Unary +, - and binary +, -, *, /, ^, as well as comparisons <, <=, =, >=, >, <>. 2.  Unary operator % (divides the number by 100). For example: =A1% is equivalent to =A1/100. 3.  Operator : for specifying ranges. Example: =SUM(G1:G3) or =SUM(G1, G2, G3). 4.  Operator ! : for references to other sheets. Example: =SUM(PageB!C1:C10). 5.  Area intersection operator (space). For example, the expression A2:C2 B1:H8 will result in B2. What it looks like in the prepared report: What It looks like after export to Excel: Working with Functions You can call standard Excel functions in formulas. One of these well-known functions is SUM—it sums its arguments. Among these functions are the widely used SUM, AVERAGE, INDIRECT, MIN, MAX, AND, OR, and so on. What It looks like in the prepared report: What It looks like after export to Excel: A few technical details when working with formulas: In the final .xls file, the formula is stored as a regular cell. To ensure it works correctly, it is important to understand what data will be substituted into the cells that the formula references. Thus, using Excel formulas when exporting reports from FastReport .NET allows you to automate calculations and make data analysis more efficient. It is important to properly configure the export of formulas, observe the syntax, and take into account the features of working with Excel operators and functions, which will ensure the correct display and calculation of data in the final tables. Tags: .NET, Export, FastReport, Excel, Report ### How to use FastCube .NET in ASP .NET Core application URL: https://www.fast-report.com/blogs/using-pivot-cube-in-asp-net-core-application Summary: Examining the tool for not only outputting the data, but also operating (pivoting) it Examining the tool for not only outputting the data, but also operating (pivoting) it Examining the tool for not only outputting the data, but also operating (pivoting) it 1. About FastCube Report generator FastReport .NET covers nearly all requirements of users in report making. Nearly all, but still not absolutely all! When it comes to cross tables, it becomes “tight”. The Matrix object is intended only for the output of cross data, but not for manipulations with them. In those cases, OLAP system would come very useful and there is such a system in FastReports – it is FastCube .NET. It allows displaying data cubes and slices in .Net applications. Especially interesting is the possibility to use these libraries in ASP .NET Core applications. Let us consider such a case as an example. 2. How to assemble libraries At first, we have to assemble libraries of the source code. For that, use the FastCube.Core.sln solution. After the assembling, you will get two nuget packages: FastCube.Web.2020.2.1.nupkg and FastCube.Core.2020.2.1.nupkg. Place them into one directory that will be used as a local package source. 3. Creating a project Now we can transfer to creating a project ASP .Net Core MVC.  4. Adding libraries from Nuget First we add FastCube Core libraries into the created project. For that, we use the NuGet package manager. As the library packages are placed on the local disc, we will have to add the local package source. To do that, click the gear icon in the upper right corner of the package manager and add a new source, which will refer to the local directory with your nupkg packages: Now you can select the added source of packages in the drop-down list and install the packages: 5. Adding to Startup We have added the libraries to the project, now we have to plug them in. For that, in Startup.cs file in Configure() method we add the code: ``` app.UseFastCube(); ``` 6. Adding into the controller and view The standard template-based application is ready for start and contains a controller and view. We can use it to display our data cube.  ``` HomeController: public IActionResult Index() { Cube cube = new Cube(); Slice slice = new Slice() { Cube = cube };   WebGrid grid; grid = new WebSliceGrid() { Slice = slice };   cube.SourceType = SourceType.File; cube.Load(Path.Combine("C:\\Users\\FR\\Downloads\\fastcube-net-master\\Demos\\Data\\", "Cubes", "calculated_measures.mdc")); ViewBag.WebGrid = grid; return View(); } ``` Let us consider this technique in more detail. Here we use the objects of Cube and Slice. To display data, we use the object WebGrid, which can receive data from a cube or a slice via the corresponding inhering objects WebCubeGrid and WebSliceGrid. In this case, we will display a slice, thus, the second object is selected. The next step is to download the existing cube from the file. Instead of using the existing files, you may create cubes and slices within the application code. Our example shows downloading of a cube file, which contains connection to the data and the relevant slice. However, you may also download a slice file instead of a cube. In this case, you have to set the source of the cube data. For example: ``` cube.Active = false; cube.SourceType = SourceType.DataSource; cube.DataSource = new DataSource(); cube.DataSource.DataSet = new DBDataSet(); SqliteConnection connection = new SqliteConnection($@"Data source={Path.Combine(dataFolder, "demo.sqlite")}"); SqliteCommand cmdItems = new SqliteCommand(@" SELECT items.OrderNo, items.PartNo, items.Qty, orders.CustNo, orders.EmpNo, orders.SaleDate FROM items LEFT OUTER JOIN orders ON (items.OrderNo = orders.OrderNo)", connection); ((DBDataSet)cube.DataSource.DataSet).DbCommand = cmdItems; cube.Active = true; slice.Load(Path.Combine(dataFolder, "Cubes", fileName)); ``` Now let us return to our application. The only step left is to arrange a display of this object. Change the code in file Index.cshtml: ``` @await ViewBag.WebGrid.Render() ``` That is all! We can run our web application and view the data slice: Now you can not only view data in a cross table but also manipulate them – add, remove measures and facts, fold groups. This will help you to analyze data. To sum it all up, using OLAP cubes in web application is new and demanded. Today, you need not buying licenses for desktop software versions, if you can make analysts work with data via a web application. As you can see, displaying a cube or a slice in the web application is extremely simple, which is another advantage. Tags: .NET, .NET, FastCube, FastCube, OLAP, OLAP, ASP.NET, ASP.NET, MVC, MVC, Core, Core ### How to use FastCube .NET in React application URL: https://www.fast-report.com/blogs/cube-net-react-application Summary: Displaying cubes and slices of data from FastCube.Core on a web page with ReactJS, using use a template in the .Net SDK. Displaying cubes and slices of data from FastCube.Core on a web page with ReactJS, using use a template in the .Net SDK. Displaying cubes and slices of data from FastCube.Core on a web page with ReactJS, using use a template in the .Net SDK. UPD: Applies to the versions of FastCube .NET before 2022.1. License packages are now available on our  NuGet server . The ReactJs library has become widespread in the web development of single-page applications. Previously we have covered how to display reports and the online report designer in React SPA application. Now it is possible to display cubes and slices of data from FastCube.Core on a web page. Let's consider how to do this. To create an ASP .NET Core app with a React frontend part, you can use a template in the .NET SDK. Run in the command line: ``` dotnet new react -o MyReactApp ``` This command will create a demo application that we can use to display the cube. Of course, for this, you must have the .NET Core SDK installed. In addition, the application will require Node.js. Go to the directory of the created application: ``` cd MyReactApp ``` and install javascript packages using the command: ``` npm install ``` Let's start working with the created web application. First, let’s install the FastCube packages. Open the Nuget package manager. In the upper right corner of the window, you will see a gear icon, which opens the settings of package sources. Click on it and add a new package source - a folder with our FastCube packages, which are located in the C:\Program Files (x86)\FastReports\FastCube.Net Professional\Nuget folder. Select the added package source in the drop-down list and install the packages: We connect FastCube in the Startup.cs file, add the code in the Configure () method: ``` app.UseFastCube(); ``` Our application already contains WeatherForecastController. Let's add our web method to it: ``` [HttpGet("[action]")] public IActionResult ShowCube() { Cube cube = new Cube(); Slice slice = new Slice() { Cube = cube }; FilterManager filterManager = new FilterManager() { Cube = cube }; WebGrid grid; grid = new WebSliceGrid() { Slice = slice };   ViewBag.WebGrid = grid;   cube.SourceType = SourceType.File; cube.Load(Path.Combine("C:\\Users\\FR\\Downloads\\fastcube-net-master\\Demos\\Data\\", "Cubes", "calculated_measures.mdc")); return View(); } ``` The Cube and Slice objects are related because, in fact, the slice is part of the cube. A WebGrid object is used to display an interactive crosstab. It can display both a WebCubeGrid slice and a WebSliceGrid cube. In our example, we loaded the cube that we previously created in the FastCube .NET desktop version. Pay attention to the class from which the controller inherits. It should be Controller, not BaseController. Now let's create a view for this method. This can be done by right-clicking on the ShowCube method signature. The view will contain a single line of the code: ``` @await ViewBag.WebGrid.Render() ``` Now let's move on to SPA application, which is located in the ClientApp folder. We need to add our component to the src->components folder. It will display the iframe with the view we created above. Add the Cube.js file with the following code: ``` import React, { Component } from 'react'; export class Cube extends Component { static getCube() { return { __html: '
``` Mind the function safeUrl, which transforms url to a safe mode. We will add it later. The button activates the Click function, which installs the show flag to display the frame and sets url to ShowCube method in the controller at backend. This is implementation of the Click function in cube.component.ts file: ``` import { Component } from '@angular/core';   @Component({ selector: 'app-cube-component', templateUrl: './cube.component.html' }) export class CubeComponent { public show: boolean = false; public url: string;   Clicked() { this.show = true; this.url = "/WeatherForecast/ShowCube"; } } ``` Now we add the function of transforming the link into the normal mode – add file safeUrl.pipe.ts into the same directory: ``` import { Pipe, PipeTransform } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser';   @Pipe({ name: 'safeUrl' }) export class SafeUrlPipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) { } transform(url) { return this.sanitizer.bypassSecurityTrustResourceUrl(url); } } ``` The added component and function must be registered in the app.module.ts file: ``` import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { HttpClientModule } from '@angular/common/http'; import { RouterModule } from '@angular/router';   import { AppComponent } from './app.component'; import { NavMenuComponent } from './nav-menu/nav-menu.component'; import { HomeComponent } from './home/home.component'; import { CounterComponent } from './counter/counter.component'; import { FetchDataComponent } from './fetch-data/fetch-data.component'; import { CubeComponent } from './cube/cube.component'; import { SafeUrlPipe } from './cube/safeUrl.pipe';   @NgModule({ declarations: [ AppComponent, NavMenuComponent, HomeComponent, CounterComponent, FetchDataComponent, CubeComponent, SafeUrlPipe ], imports: [ BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }), HttpClientModule, FormsModule, RouterModule.forRoot([ { path: '', component: HomeComponent, pathMatch: 'full' }, { path: 'counter', component: CounterComponent }, { path: 'fetch-data', component: FetchDataComponent }, { path: 'cube', component: CubeComponent } ]) ], providers: [], bootstrap: [AppComponent] }) export class AppModule { } ``` Also, we add a new header into the menu in file nav-menu.component.html: ```
``` The application is ready. We run it: This simple example shows how one can display a data cube based on FastCube libraries in a single-page application Angular. Now the web application provides you with a convenient tool for data analysis. You can add or remove measures, facts, or filter your data. Tags: .NET, FastCube, OLAP, MVC, WebReport, Angular, SPA ### How to use FastCube .NET in the SPA application Knockout.js URL: https://www.fast-report.com/blogs/fastcube-net-in-spa-knockout-application Summary: Displaying FastCube .NET cube data on the web pages of SPA Knockout.js app. Displaying FastCube .NET cube data on the web pages of SPA Knockout.js app. Displaying FastCube .NET cube data on the web pages of SPA Knockout.js app. To output the data cube, we will create a SPA application by means of Knockout.js (library for creating web apps). With the help of this library, we will be able to use TypeScript for the frontend part of our application and also ASP.NET Core MVC for the backend part. With it, we will be able to use FastCube .NET reports. To use Knockout.js together with .NET Core, we need to have pre-installed .NET Core SDK 2.0 or MS Visual Studio. Initially, the application template with the usage of Knockout.js will not be accessible. Install it using the command. For this go to the command line and enter the command: ``` dotnet new — install Microsoft.AspNetCore.SpaTemplates::* ``` After that, you can create an SPA application based on Knockout.js. In the folder we need, open the command prompt and enter the command: ``` dotnet new knockout –o KnockWebReport ``` After creating the application, go to the folder with the created application and install the necessary packets using the command: ``` npm install ``` Before working with our web application, prepare Nuget packets with FastCube libraries. To do this, open the FastCube.Core.sln solution and execute the build. You will get two packets as a result - FastCube. Web.2020.2.1.nupkg and FastCube.Core.2020.2.1.nupkg. Place them into any local folder that we will use as a local source of Nuget packets. Now you can run the created project. Let's start by installing the FastCube packets. Open the packets manager Nuget. In the upper-right corner of the window, you will see the gear icon - it opens the packets source settings. Click on it and add a new packet source - the folder with our FastCube packets: Now select the added packets sources from the list and install them: Add the folder App_Data in the catalogue wwwroot. Here the ”Cubes” will be stored: Connect FastCube in the Startup.cs file. Add the code to the Configure() method: ``` app.UseFastCube(); ``` Our application contains a SampleDataController controller. Let's add the following method to it: ``` [HttpGet("[action]")] public IActionResult ShowCube(string name) { Cube cube = new Cube(); Slice slice = new Slice() { Cube = cube }; FilterManager filterManager = new FilterManager() { Cube = cube }; WebGrid grid; grid = new WebSliceGrid() { Slice = slice }; ViewBag.WebGrid = grid; cube.SourceType = SourceType.File; cube.Load(Path.Combine(_env.WebRootPath,(String.Format("App_Data/{0}",name)))); return View(cube); } ``` Here we use Cube and Slice objects. To display the data, a WebGrid object is used, which can receive data from Cube or from Slice using the corresponding inherited WebCubeGrid and WebSliceGrid objects. For the method ShowCube create a “view”: This view will contain only one line of code: ``` @await ViewBag.WebReport.Render() ``` Next, we need to configure the client application. It is located in the ClientApp folder: In our case, we will use the home page to output the cube. Edit the code in the file home-page.html: ```
``` We will display a button that opens a window of the file selection. And also, depending on the value of the logical parameter show, we output a frame with a web report object. Now we will write a script for this template in the home-page.ts file: ``` import * as ko from 'knockout';   class HomePageViewModel { public show = ko.observable(false); public url = ko.observable('');   upload(file: Blob) { var files = new FormData(); files.append("files", file) console.log(files); if (file != null) { fetch('api/SampleData/Upload', { method: 'POST', body: files }) .then(response => response.text()) .then(data => { this.url("api/SampleData/ShowCube?name=" + data) }); this.show(true); } } }   export default { viewModel: HomePageViewModel, template: require('./home-page.html') }; ``` In this script, we implemented the function of uploading a file to the server. A POST request is executed, and we receive the name of the saved file from the server as a result. Next, we assign the url variable the path to the report display method, taking into account the received report name. Finally, we will get a web-cube. Let's launch our application and make sure of this. Select the file in the mdc format. And we get the cube to our web page. As you may have noticed, work with FastCube .NET in Knockout.js is very simple, especially if you need to output a cube in a web application. Tags: .NET, .NET, FastCube, FastCube, OLAP, OLAP, ASP.NET, ASP.NET, MVC, MVC, Core, Core, WebReport, WebReport, Knockout, Knockout, SPA, SPA ### How to use FastCube .NET in Vue SPA application URL: https://www.fast-report.com/blogs/fastcube-net-in-vue-spa-application Summary: Looking at the way to display FastReport web report in a single-page application on Vue.js with backend on ASP .NET Core. Looking at the way to display FastReport web report in a single-page application on Vue.js with backend on ASP .NET Core. Looking at the way to display FastReport web report in a single-page application on Vue.js with backend on ASP .NET Core. The Vue.js framework is currently very popular and stands in line with Angular. We have already considered how to use FastReport.Core in Angular application. Now let us consider how to implement the display of a FastReport web report in a single-page application on Vue.js with backend on ASP .NET Core. For that, we need to install Node.js and, as minimum, NET Core SDK 2.0; however, a newer version is even better. By default, dotnet sdk does not have a vue application template. But it can be installed! To do that, create a catalog, in which your application will be placed, and run the PowerShell command line in it. This can be done from the context menu, which is invoked by a right button click on the empty space in the directory with the pressed shift button. Input the command in the command line: ``` dotnet new — install Microsoft.AspNetCore.SpaTemplates::* ``` Then you will have the Vue template available for generating a demo application. Use it to create the application with a command: ``` dotnet new vue -o FRCubeVue ``` After creating the application you will see a warning that the following command must be executed: ``` npm install ``` But before executing it, you should go to the created catalog: ``` cd FRCubeVue ``` After all the necessary packages are installed, open the project file .csproj. Now we must add FastCube libraries into the project we had created, but first they should be assembled from the source codes. For that, use the FastCube.Core.sln solution. After the assembling you will get two Nuget packages: FastCube.Web.2020.2.1.nupkg and FastCube.Core.2020.2.1.nupkg. Place them into one directory, which will be used as a local package source later. Now we start adding packages into the project with the help of NuGet package manager. It is to be recalled that the packages are stored locally. To enter the settings, click the gear icon in the upper right corner of the package manager and add a new source, which will refer to the local directory with your nupkg packages: Select the added source of packages in the drop-down list and install the packages: Plug in FastCube in Startup.cs file Configure() method by adding a code: ``` app.UseFastCube(); ``` The standard template-based application is ready for start and contains a controller and view. We can use it to display our data cube. Now add a new method to  ``` [HttpGet("[action]")] public IActionResult ShowCube() { Cube cube = new Cube(); Slice slice = new Slice() { Cube = cube }; FilterManager filterManager = new FilterManager() { Cube = cube }; WebGrid grid; grid = new WebSliceGrid() { Slice = slice };   ViewBag.WebGrid = grid   cube.SourceType = SourceType.File; cube.Load(Path.Combine("C:\\Users\\FR\\Downloads\\fastcube-net-master\\Demos\\Data\\", "Cubes", "calculated_measures.mdc")); return View(model); } ``` Let us consider this technique in more detail. Here we use the objects of Cube and Slice. To display data, we use the object WebGrid, which can receive data from a cube or a slice via the corresponding inhering objects WebCubeGrid and WebSliceGrid. In this case, we will display a slice, thus, the second object is selected. Then we download the existing cube from the file. For the added ShowCube method, we have to create a display - ShowCube.cshtml.cs with a single code line: ``` @await ViewBag.WebGrid.Render() ``` Now we pass to the SPA application. As we have created the project with a template, it already contains a demo single-page application. Thus, all we have to do is to add a new component and set the menu. Two new files must appear in the application structure:  The file cube.vue.html is the html display of the new component: ``` ``` The display formed in the ASP .Net Core application will be downloaded in iframe. The file cube.ts is the script of the new component: ``` import Vue from 'vue'; import { Component } from 'vue-property-decorator';   @Component export default class CubeComponent extends Vue { url: string = ''; show: boolean = false; cubeData: string ='';   Clicked() { this.show = true; this.url = "api/SampleData/ShowCube"; } } ``` In the script we set url for the iframe source as a button click. At this stage, the new component must be registered in the file boot.ts: ``` const routes = [ ... { path: '/cube', component: require('./components/cube/cube.vue.html') } ]; ``` Also, we add the new menu header in the file navmenu.vue.html: ```  
Category
Species Name
Length (cm)
Length In
  ``` Now to link our HTML code with data fields just use the object editor with expression editor and insert data expressions. The image data field will be automatically encoded to base64 with the correct mime-type of images stored in the database. FastReport VCL will do that automatically. The "HTMView" object supports grow to the bottom(stretch) relative to the content inside it just like the "RichText" object. And of course, "HTMLView" object supports data split when the report page doesn't have enough free space. A data stretch and data split can be activated like in other report objects of FastReport VCL. First, we need to set Stretched and AllowSplit properties of the band.  Then set  StretchMode property of the "HTMLView" object to smActualHeight in our case. That's all! Just run the report and check the result. As can be seen use HTML4.0 and CSS with links to the data is very easy in the new version of  FastReport VCL 2021.2 .  Tags: VCL, FastReport, Data Source, HTML ### Overview of Update 2026.2 for FastReport VCL URL: https://www.fast-report.com/news/release-fastreport-vcl-2026.2 Summary: Version 2026.2 of the FastReport VCL introduces 10 new UI components for Delphi and Lazarus, an updated FastGrid with nested groupings, a report validation system. Version 2026.2 of the FastReport VCL introduces 10 new UI components for Delphi and Lazarus, an updated FastGrid with nested groupings, a report validation system. Version 2026.2 of the FastReport VCL introduces 10 new UI components for Delphi and Lazarus, an updated FastGrid with nested groupings, a report validation system, and a property for managing band column layout (TfrxDataBand.BandColumns.Layout). New features include a center-align mode for containers, the UseSizeConstraints property for tables, image post-processing effects, and the ability to preserve original image links during export. Improvements have also been made to FastReport FMX, FastCube, and FastQueryBuilder. New UI Components (Editors) for Delphi and Lazarus  The component base has been expanded with 10 new UI editors: TfrBarcode, TfrButtonEdit, TfrCalendar, TfrCheckBox, TfrComboBox, TfrCurrencyEdit, TfrEdit, TfrImage, TfrMaskEdit, TfrSpinEdit. The main difference between our UI components and the standard ones is their additional display and control settings. TfrBarcode — embed all available linear and 2D barcodes from the FastReport suite into your non-reporting application. TfrCalendar — use a calendar with an extended set of settings. TfrMaskEdit — add edit fields with complex masks to your application. TfrCurrencyEdit is a currency display editor that is essential for any modern business application. Try our editors in your application. FastGrid Has Received a Major Update The update introduces the ability to create nested groupings within the grid. You can now easily collapse and expand groups. Creating groups is now easier—just drag a field into the grouping area. Each field type has its own editor. FastGrid uses all available UI editors for editing fields. You can also quickly export data as reports in any format using FastReport. Check out the new UI component functionality in our demo app. New Features of FastReport VCL Report Validation System Before saving, check your reports for errors, following development guidelines. Implement a report validation system in your CI/CD. The new system allows you to validate reports both from the designer and from code. Its flexibility allows you to add your own validation rules—whether it's checking for correct object naming or ensuring compliance with corporate style guidelines in report templates. The validation system contains a set of validation rules: object intersections, conflicting properties, data sets, expressions, empty objects, and report scripts. You can prevent users from saving reports that fail validation. Read more about the report validation system in our article. New Property for Managing the Arrangement of Band Columns The report engine now allows you to control the layout of band columns using the TfrxDataBand.BandColumns.Layout property. This property allows you to select the column display order: first to the right, then down (AcrossThenDown) or first down, then to the right (DownThenAcross). In DownThenAcross mode, you can set the maximum number of rows in a column using the MaxRows property. The average value of the total number of records is used by default. New Alignment Mode In this 2026.2 update, we've added a container center alignment mode that uses not only the width but also the height of the baHVCenter. UseSizeConstraints: New Property for Tables UseSizeConstraints property has been added to table columns and rows. This property allows you to set maximum and minimum width and height dimensions not only when creating a report, but also when designing and resizing a table. This property is useful for creating fixed rows and columns when stretching a table to the full-page width (using FitPartsToPageWidth or Align). New Image Effects  The redesigned image output now includes a post-processing pipeline. This enabled adding new post-processing properties for the TfrxPictureView object: Transparency for setting a translucency mask; image rotation; and mirroring. Export Improvement: Retaining Original Image Links The latest version of our export tool adds a new feature to preserve the original image links specified in the DataLink.Link property. This functionality allows users to more flexibly manage the export process and ensures that all necessary data is preserved. This process is controlled by the dltOnExport flag for the LoadType property and the ExportDataLinksMode property for all export filters. Exports can now operate in three modes: edmNone (default)—exports only what is loaded into the image object. edmLoadToObject —when exporting to an object, data is loaded from a link and then exported. edmInternalExport —HTML exports use the original link specified in the DataLink.Link field. This feature greatly simplifies data export and allows you to preserve all important image links, which is especially useful when working with large amounts of data and complex projects. FastReport FMX, FastCube, and FastQueryBuilder Improvements FastReport FMX now allows you to print reports with the Skia Canvas function on Windows platform in RAD Studio 13. The TfcxSliceGridToolbar.AutoExpandPopups property has been added to FastCube for automatic group expansion. The CrossView and ChartView editors have been updated and improved for integration with FastReport. FastQueryBuilder now supports escaping of fields and tables for different SQL dialects. In addition to these changes, the products include many improvements and fixes. See the full list of changes. Version 2026.2.0 VCL.Core --------------- [Engine] - fixed CSS error handling in HTMLView [Graphic] - fixed EPNGOutMemory error when scrolling images - fixed output of transparent SVG in TfrxPictureView - fixed SVG transparency  - fixed AV occurring when a TfrxSVGGraphic object is destroyed - fixed TfrxPictureView error with SVG [Localization] * updated Portuguese resources * TfrLocalizationController.Language property was made case-independent Lazarus.Core --------------- [Engine] - fixed CSS error handling in HTMLView [Graphic] - fixed EPNGOutMemory error when scrolling images - fixed output of transparent SVG in TfrxPictureView - fixed SVG transparency  - fixed AV occurring when TfrxSVGGraphic object is destroyed. [Localization] * updated Portuguese resources * TfrLocalizationController.Language property was made case-independent VCL.Controls --------------- [Engine] + added CTRL+(Up/Down/PageUp/PageDown) handling to the Memo family [UI] * improved Gutter and Footer handling for the Memo family  - fixed AV when collapsing nodes after the tree is fully expanded - fixed incorrect rendering of HotTrek and Select when using themes in TfrTreeView - fixed a TfrTreeView bug where multiple selections were not cancelled by clicking on an unselected node. - fixed incorrect colors of tooltip text and node highlighting when using themes in TfrTreeView Lazarus.Controls --------------- [Engine] + added CTRL+(Up/Down/PageUp/PageDown) handling to the Memo family - fixed AV in the Linux console application [UI] * improved Gutter and Footer handling for the Memo family  - fixed AV when collapsing a node after the tree is fully expanded - fixed a TfrTreeView bug where multiple selections were not cancelled by clicking on an unselected node. VCL.FastScript --------------- [Engine] - fixed FastScript ClearLocalVars for an array of variants - fixed fvtInt 64 support [RTTI] + added WeekOf function to the script - fixed InRange function FMX.FastScript --------------- [Engine] - fixed FastScript ClearLocalVars for an array of variants [RTTI] + added WeekOf function to the script - fixed InRange function - fixed fvtInt 64 support Lazarus.FastScript --------------- [Engine] - fixed FastScript ClearLocalVars for an array of variants [RTTI] + added WeekOf function to the script -fixed InRange function  -fixed fvtInt 64 support VCL.FastCube --------------- [Engine] - fixed a bug when working with ftBCD fields [UI] + added icon for TfcxpMemoView + added AutoExpandPopups property to TfcxSliceGridToolbar, like in TfcxSliceGrid - fixed the non-working context menu item "Create a custom filter..." for measurements FMX.FastCube --------------- [Engine] - fixed icon rendering [UI] + added icon for TfcxpMemoView + added AutoExpandPopups property to TfcxSliceGridToolbar, like in TfcxSliceGrid - fixed the non-working context menu item "Create a custom filter..." for measurements - fixed CrossView editor - fixed ChartView editor  Lazarus.FastCube --------------- [Exports] - fixed style font sizes when exporting for Lazarus and HiDPI [UI] + added icon for TfcxpMemoView + added AutoExpandPopups property to TfcxSliceGridToolbar, like in TfcxSliceGrid - fixed the non-working context menu item "Create a custom filter..." for measurements VCL.FastQueryBuilder --------------- [Engine] + added support for SQL escaping for table and field names + added the TfqbFDEngine.TablePattern property Lazarus.FastQueryBuilder --------------- [Engine] + added support for SQL escaping for table and field names + added the TfqbFDEngine.TablePattern property VCL.FastReport --------------- [Client-server] - fixed a format detection error in Server Online-Designer API [Engine] + added a validator rule for checking script compilation + added object validation rules + added validation of report datasets + added new property TfrxDataBand.BandColumns.Layout to control the order of printing columns (AcrossThenDown or DownThenAcross) + added a new alignment type for objects—baHVCenter, which aligns the object by the width and height of the parent container. + added report validator + added image post-processing pipeline (mirroring and rotating images) * network printer settings use cached results to quickly load the report designer * accelerated rotations and reflections in PictureView  - fixed rendering of translucent watermarks with Rotation less than 0 - fixed the behavior of the transparency property for vector images - fixed the use of watermarks from the script - fixed a bug that caused the dynamic table to use previous values when working with repeating data bands - fixed decoding of Base 64 strings - fixed Richview break bug - fixed KeepTogether behavior when using the StartNewPage flag - fixed the behavior of the PrintOn property when the band moves to the next page - fixed a bug in GridTableBuilder when using default property editors [Report object] + added Transparency field to the TfrxPictureView object - fixed a bug in HTMLView that occurred when the table did not contain any columns - fixed a bug where 2D barcode presets were missing when exporting to PDF - fixed rotation of vector images at angles close to 45, 135, 225, 315 degrees - fixed support for the Win 64 platform [Preview] - fixed a bug where the preview would trigger mouse click events while scrolling the page using the Pan tool [Exports] + added internal DataLink processing for HTML exports + added read confirmation for mail export (Indy) - fixed PDF export dialog - fixed missing HTML tag styles in the DOCX export filter - fixed a bug when exporting an HTMLDiv embedded in another HTML page - fixed export to RTF of reports with pages of different orientations - fixed PDF export errors - fixed PDF export for 64-bit systems - fixed PDF structure with ZUGFERD - fixed export of Arabic to PDF - fixed issue with PNG/SVG transparency when exporting to PDF - fixed Embedded Subset in PDF - fixed export of spaces to PDF for lines with tab characters ($09) - fixed export of empty TfrxMemoView with AllowHTMLTags = True to DOCX - fixed errors in PDF/A and PDF with CMYK color space [Designer] + added intersection checking for bends + added saving of DataTree settings in object and expression editors + added DebugLn function to the report designer * improved search and highlighting of intersections * the default value for the TfrxDesigner.DefaultFont.Color field has been changed to clBlack - fixed the "Access Denied" error with the clipboard in the designer. - fixed usage of frxEditSQL.inc - fixed updating of internal parameters of data sets in edit mode - fixed a bug where the report designer inserted an incorrect mouse event for dialog controls - fixed adding icons for custom components - fixed opening of the run-time designer with a custom TfrxReport.IniFile - fixed highlighting of intersecting objects FMX.FastReport --------------- [Engine] + added the ability to print reports with the enabled Skia Canvas function on Windows platform in RAD Studio 13 [Designer] - fixed tooltips in the designer - fixed a memory leak in the designer if there was an image in the clipboard - fixed sorting of the designer elements panel [Exports] - fixed RTF export of reports with pages of different orientations - fixed incorrect size of 2D barcode during code export  Lazarus.FastReport --------------- [Client-server] - fixed a format detection error in Server Online-Designer API [Engine] + added a validator rule for checking script compilation + added object validation rules + added validation of report datasets + implemented the first version of the report validator  + added new property TfrxDataBand.BandColumns.Layout to control the order of printing columns (AcrossThenDown or DownThenAcross) + added a new alignment type for objects—baHVCenter, which aligns the object by the width and height of the parent container. + added image post-processing pipeline * network printer settings use cached results to quickly load the report designer - fixed the use of watermarks from the script - fixed a bug that caused the dynamic table to use previous values when working with repeating data bands - fixed KeepTogether behavior when using the StartNewPage flag - fixed the behavior of the PrintOn property when the band moves to the next page - fixed a bug in GridTableBuilder when using default property editors [Report object] + added Transparency field to the TfrxPictureView object  - fixed a bug in HTMLView that occurred when the table did not contain any columns - fixed a bug where 2D barcode presets were missing when exporting to PDF - fixed decoding of Base 64 strings - fixed rotation of vector images at angles close to 45, 135, 225, 315 degrees [Preview] - fixed a bug where the preview would trigger mouse click events while scrolling the page using the Pan tool [Exports] + added internal DataLink processing for HTML exports - fixed PDF export dialog - fixed missing HTML tag styles in the DOCX export filter - fixed a bug when exporting an HTMLDiv embedded in another HTML page - fixed RTF export of reports with pages of different orientations - fixed PDF export dialog - fixed PDF export errors - fixed PDF export for 64-bit systems - fixed PDF structure with ZUGFERD - fixed export of Arabic to PDF - fixed an issue with PNG/SVG transparency when exporting to PDF - fixed Embedded Subset in PDF - fixed export of spaces to PDF for lines with tab characters ($09) - fixed export of empty TfrxMemoView with AllowHTMLTags = True to DOCX - fixed errors in PDF/A and PDF with CMYK color space [Designer] + added intersection checking for bends + added saving of DataTree settings in object and expression editors + added DebugLn function to the report designer * improved search and highlighting of intersections * the default value for the TfrxDesigner.DefaultFont.Color field has been changed to clBlack - fixed copying in the PictureView editor when there is no image - fixed usage of frxEditSQL.inc - fixed updating of internal parameters of data sets in edit mode - fixed a bug where the report designer inserted an incorrect mouse event for dialog controls - fixed adding icons for custom components - fixed opening of the run-time designer with a custom TfrxReport.IniFile - fixed highlighting of intersecting objects VCL.FastGrid --------------- [UI] + added a new column deletion cursor + added the ability to resize a column if its right border is out of view + added cancellation of dragging and resizing columns by pressing ESC in design time - fixed highlighting of grid elements when dragging and resizing a column - fixed the cell frame being displayed on the header when scrolling the grid while in focus - fixed an issue on Linux where editing would not work if the editor was activated by clicking the mouse - fixed support for the Win 64 platform [Engine] + added the ability to group data in a table view + added the TfrSpinEdit property. ValueType, MinValue, and MaxValue depend on the corresponding properties of the field bound to the SpinEdit column. - fixed a bug where the maximum length of text entered in a cell did not match the dimensions of the data field associated with the column of that cell. - fixed the OnKeyPress event to work with the WideChar type and fixed problems with navigation in Lazarus cells with UTF-8 characters - fixed an AV that would close the application if the built-in editor was active before setting Grid.Parent to nil. - fixed a bug where multiple exceptions were triggered when a column assigned with Image properties contained invalid data [Exports] + added the ability to create grouped tabular reports from FastGrid - improvements in the FastGrid table report builder Lazarus.FastGrid --------------- [UI] + added a new column deletion cursor + added the ability to resize a column if its right border is out of view + added cancellation of dragging and resizing columns by pressing ESC in design time - fixed highlighting of grid elements when dragging and resizing a column - fixed the cell frame being displayed on the header when scrolling the grid while in focus [Engine] + added the ability to group data in a table view + added the TfrSpinEdit property. ValueType, MinValue, and MaxValue depend on the corresponding properties of the field bound to the SpinEdit column. - fixed a bug where the maximum length of text entered in a cell did not match the dimensions of the data field associated with the column of that cell. - fixed the OnKeyPress event to work with the WideChar type and fixed problems with navigation in Lazarus cells with UTF-8 characters - fixed an issue on Linux where editing would not work if the editor was activated by clicking the mouse - fixed an AV that would close the application if the built-in editor was active before setting Grid.Parent to nil. - fixed a bug where multiple exceptions were triggered when a column assigned with Image properties contained invalid data [Exports] + added the ability to create grouped tabular reports from FastGrid - improvements in the FastGrid table report builder VCL.Transport --------------- [Engine] + added read confirmation for mail transport (Indy) VCL.FastEditors --------------- [UI] + added the OnButtonCustomDraw event to TfrButtonEditProperties + added the BorderSpacing property for all Lazarus editors  + added the ability to get the changed value of the editor using the Text property in Lazarus - fixed an error that occurred when trying to iterate through a drop-down list of values when the list is empty - fixed incorrect background display in TfrCalendar - fixed Access Violation error when TfrCalendar was destroyed or hidden during animation - fixed support for the Win 64 platform [Engine] + added new component TfrCalendar + added new component TfrCurrencyEdit + added new component TfrBarCode + added new component TfrMaskEdit Lazarus.FastEditors --------------- [UI] + added the OnButtonCustomDraw event to TfrButtonEditProperties + added the BorderSpacing property for all Lazarus editors  + added the ability to get the changed value of the editor using the Text property in Lazarus - fixed an error that occurred when trying to iterate through a drop-down list of values when the list is empty - fixed incorrect background display in TfrCalendar - fixed the Access Violation error when TfrCalendar was destroyed or hidden during animation - fixed support for the Win 64 platform [Engine] + added new component TfrCalendar + added new component TfrCurrencyEdit + added new component TfrBarCode + added new component TfrMaskEdit ### Page description language – ZPL URL: https://www.fast-report.com/blogs/zpl-language Summary: Learn about ZPL language for printing. Find more useful tips and articles in our blog. Learn about ZPL language for printing. Find more useful tips and articles in our blog. Learn about ZPL language for printing. Find more useful tips and articles in our blog. ZPL - Zebra Programming Language - the language of description of printed pages, also known as PDL (Page Description Language). There are many PDLs. Almost every printer manufacturer has its own page description language. This language allows you to describe the page by high-level commands, which will be interpreted by the printer in low-level ones. The most famous PDL is PostScript from Adobe. The PDL allows to describe page objects. There is something, that makes the program be independent from a particular hardware platform of a printer. The printer receives commands for printing a square, a symbol or a line and we do not care how it will be realized. The printer itself knows how to do this. This is the main advantage of the PDL. American company "Zebra Technologies" has developed the ZPL mainly for creating and printing of labels. Labels can contain a text, barcodes and simple graphics. Such labels are printed with special Zebra printers, which are used in the trade for printing receipts and checks. There are two standards: ZPL and ZPL ll. Differences The main reason for development of ZPL II was a significant reduction of the time when a printer starts to receive data and when the first character goes to be printed. This was made primarily by changing the way of how ZPL programs are written. The ZPL II standard is not 100% compatible with the ZPL standard. But the differences between are minimal. All programs on the ZPL can easily be modified to the level of ZPL ll. There is a backward compatibility. That is, you can write programs on the ZPL ll for ZPL printers, of course, taking into account the old syntax. So, here are two main differences between ZPL ll and ZPL: 1. In ZPL II the data is formatted immediately as received. And in the ZPL standart, the formatting does not start until you get the command to complete the process formatting ^ XZ. 2. ZPL ll has a lot of new commands. Syntax Considering a programming language without examples makes no sense. Therefore, the program code for printing a simple label is given to allow to look at the syntax. ``` ^XA   ^FX Top section with company logo, name and address. ^CF0,60 ^FO55,55^GC100^FS ^FO75,55^GC100^FS ^FO75,75^GC100^FS ^FO55,75^GC100^FS ^FO88,88^GC50,50^FS ^FO220,50^FDLorem Ipsum, Inc.^FS ^CF0,40 ^FO220,100^FD1000 Shipping Lane^FS ^FO220,135^FDShelbyville TN 38102^FS ^FO220,170^FDEURO UNION (EU)^FS ^FO50,250^GB700,1,3^FS   ^FX Second section with recipient address and permit information. ^CFA,30 ^FO50,300^FDKarl Marks^FS ^FO50,340^FD100 Main Street^FS ^FO50,380^FDEURO UNION (EU)^FS ^CFA,15 ^FO50,450^GB700,1,3^FS   ^FX Third section with barcode. ^BY5,2,120 ^FO175,500^BC^FD1234567890^FS   ^FX Fourth section (the two boxes on the bottom). ^FO50,700^GB700,250,3^FS ^FO400,700^GB1,250,3^FS ^CF0,40 ^FO100,760^FDShipping Ctr. Y74H-1^FS ^FO100,800^FDREF1 F99L17^FS ^FO100,840^FDREF2 YUH88^FS ^CF0,190 ^FO485,765^FDAA^FS   ^XZ ```  Now, we get the ticket for the shipping control: As you can see, the code begins with the tag (command) ^ XA and ends with the tag ^ XZ. The code is divided by the comments into four sections for convenience of consideration. 1)  The first section displays the company logo and its legal data: ``` ^FX Top section with company logo, name and address. ^CF0,60 ^FO55,55^GC100^FS ^FO75,55^GC100^FS ^FO75,75^GC100^FS ^FO55,75^GC100^FS ^FO88,88^GC50,50^FS ^FO220,50^FDLorem Ipsum, Inc.^FS ^CF0,40 ^FO220,100^FD1000 Shipping Lane^FS ^FO220,135^FDShelbyville TN 38102^FS ^FO220,170^FDEURO UNION (EU)^FS ^FO50,250^GB700,1,3^FS ```  It is clear that tag ^ FX means a comment. ^CF x, y, z – Default font settings: font, height and width. ^FO x,y  - left and top indentation. ^FS  – end of line. Next, draw a logo from four circles: ^GC x,y – draw a circle. Diameter – x, line thickness – y. Legal data: ^FD – data field. 2)  In the second section we will not see new tags. 3)  In the third section we add a barcode: ``` ^FX Third section with barcode. ^BY5,2,120 ^FO175,500^BC^FD1234567890^FS ```  Here: ^BY x,y,z – width, width of bar, height. 4) In the fourth section another tag appeares: ^GB x,y,z – rectangle (box). Width, height, thickness of the frame. By using a small set of tags, we described the entire printed page. The process is rather simple. You only need to set the distance in points. All the measurements are in points. Summing up, in this article we have considered a part of the ZPL commands to meet a user with the main point of the language. As on the Internet there are many online interpreters of the ZPL code, you can always test it visually. Tags: ZPL ### Partners URL: https://www.fast-report.com/partners Summary: Partners - Check out the companies we partner with. Resellers Filters Continents Com&Lan 6/F, Tower A, Fenglin Xi'ao, Datun Road, Chaoyang District, Beijing 100101 P.R. Tel. +86-10-64844488 ext. 221 | Fax +86-10-64844477 ext. 221 comlan.com info@comlan.com The the Beijing Kunlun Unicom Technology Development Co., Ltd. is a comprehensive enterprise operating direction to provide operation and maintenance services of IT products and professional. The company was founded in 1998 on the development of technology-based service to the community, "the general direction from its inception. The entire company set hardware products, software products, sales and service in one, continue to adhere to the introduction of foreign advanced products and technologies, providing IT solutions and technical support services for corporate clients. CompuCom Systems 3414 25th Street NE, Calgary, Alberta  T1Y 6C1 Tel. +1 403-205-5619 compucom.com contacts CompuCom Canada is a national IT services and solutions company providing infrastructure management services, application services, systems integration and consulting services, as well as the procurement and management of hardware and software. With more than 20 years of IT experience, CompuCom employs thousands of highly skilled associates who have earned a nearly 100 thousand industry certifications company-wide. As experts in workplace services, CompuCom’s unique Integrated Infrastructure Management (IIM™) solution reduces costs, increases productivity and helps clients gain maximum value from information. HTK Pro s.r.o. Kutnohorská 55, Praha 10, 109 00 Tel. +420-810-100-810 | Fax +420-286-891-391 devshop.cz kadlecek@htkpro.cz Petr Zahradnik, Computer Laboratory Obvodova 740/14, CZ-40007 Usti nad Labem, Czech Republic Tel. +420-47-5500610 | Fax +420-47-5511338 clexpert.cz petr@zahradnik.cz Inteli Scape Ltd 22 Larnakos Avenue, 4th Floor, Aglantzia, Nicosia 2101, Cyprus Tel. +357-22448500 | Fax +357-22448511 inteliscape.com sales@inteliscape.com In addition to turn-key solutions, inteliscape provides custom project services - we have "the glove that fits your hand"! At inteliscape, customer satisfaction is driven by our people; people who understand e-business, people who think, people who do, people who get it. We have both undergone appropriate training and gained significance in delivering e-business solutions. All our services professionals are recognised for their excellence by IBM, Lotus, and Microsoft in all competencies we perform: Consultancy, Sales, Solution Architecture/Design, Implementation, Administration, Learning, and Support. HongDi Science & Technology Development co. Room 1113 Building B JinMao Square No.251 QiLiTing Road HuZhou, Zhejiang 313000  Tel. +86 572 2607144 | Mobile +86 (0) 13511221372 cookcode.net sales@cookcode.com HuZhou HongDi science & technology development co.,ltd., located in HuZhou, Zhejiang, China, specializes in selling and supporting expert programming components. we have selled our graphical components in global countries, and take a good effect to developers. Established in 2001 , provide components and software tools to the developer community, CookCode has expanded to become a leading of components supplier in China, USA, Europe, and provide thousands of components to developers, designers, IT Managers, Network Administrators, DBAs and Corporate Buyers. Katálogo Software Tel. +55 (11) 3581-4400 katalogo.com.br vendas@katalogo.com.br Fundada em 1997, a Katálogo Software tem como objetivo de atender as necessidades em software para desenvolvedores, profissionais de TI e empresas de todos os portes. A empresa tem sua matriz em São Paulo e filiais no Rio de Janeiro, Curitiba e Estados Unidos. A Katálogo Software hoje é referência no merdado de software, com vasta experiência na área de importação e exportação de softwares profissionais. Pan Yan Chongqing Science and Technology Yanghe Road, Jiangbei District, Chongqing, the 2nd international Tongchuang the 3rd Room 1904 Tel. 023 -67870900 componentcn.com sales@componentcn.com Software reusability is one of the key factors in the development of the software industry. To achieve the software " industrialized "and " software component " is the foundation for achieving this goal. Therefore, our long-term commitment to excellent control products at home and abroad to introduce the software development process, China's major software development companyto help improve the development efficiency and shorten the development cycle of the software product, to reduce the risk of the development of software projects, thereby enhancing software products in the market competitiveness. Barnsten B.V. Zijlstraat 47, 2011 TK Haarlem Tel. +31-23-542-2227 | Fax +31-84-755-5260 barnsten.com info@barnsten.com Leading the way with Innovative, Multi-Platform, Developer and Database Solutions Barnsten is dedicated to providing its customers with the industry’s broadest and deepest set of tools for enhancing the productivity of software developers and database professionals. Cogito Software Room 5003,Guang Yuan Da Sha, No.5 Guang Yuan Zha, Hai Dian District, Beijing China 100081 Tel. +86-010-68421378, 68421379 | Fax +86-010-68703469 cogitosoft.com sales@cogitosoft.com We corporate closely with over 2000 Reseller and we had established relationships with local retail outlets and online shops. We have over 40,000 users within mainland China, a large proportion of them are from government agencies, educational institutes and commercial departments. We have established business relationships with many of the world's top 500 enterprises, for instance: Motorala, Simens, Lucent-Alcate ,etc. Qast Software Group RM 3705, BM Business Center, No.100 Yutong Road, Shanghai, 200070, China Tel:+86-21-5240-0198  | Fax: +86-21-6211-9020 www.qast.com info@qast.com Qast Software Group is one of the largest software distribution companies in China. Our goals are to continuously bring global software and technologies to the growing Chinese market. QBS Software GmbH Grünwalder Weg 13a, 82008 Unterhaching, Germany Tel. +49 (0) 89 231 4142 0 https://www.qbssoftware.com/ info@qbssoftware.de WESTcom Logiciels et Services Tel. +33-2-97-88-07-44 westcom.fr infos@westcom.fr Westcom is an IT company established in 2000 specializes in publishing management software (accounting, production management and inventory, fixed assets, ...) and LIMS (Computerized Management Laboratory). DATAVENIR sarl 119, rue Vi De Chenaz, 74380 BONNE Tel. +33-0489-61-21-40 | Fax +33-0450-92-30-77 datavenir.com info@datavenir.com DATAVENIR undertakes to study and offer at any time solution that best suits your needs for your information system. (Business, Accounting, Management, Networking, Internet Technologies, Multimedia, Online Services, Training). IT Haimerl Datentechnik Kreuzacker 10, 94356 Kirchroth, Germany Tel. +49-9428-305324 | Fax +49-9428-305325 https://www.fast-report.de/ info@fast-report.biz Mitrasoft Infonet Kompleks Roxy Mas Blok E-2 No. 3 Jl. K.H. Hasyim Ashari No. 125-B Jakarta 10150 Tel. +62-21-632-6533 | Fax +62-21-632-6364 mitrasoft.co.id info@mitrasoft.co.id We provide a wide range of IT solutions and services; Hardware & System software Infrastructure, System Integration, Structured Cabling, LAN/WAN Design and Implementation, Financial Management System, Business Intelligence, Software Licensing, Outsourcing, Maintenance, Training, Consultingand Custom Application Development. In June 1996, PT. Mitrasoft Infonet was formed to focus on software's business. Mitrasoft's main business includes providing Software Licensing, System Integration Services, Outsourcing, Maintenance, Training, Business Solutions and custom application development. It is noteworthy that one thing about our companies that have not changed over the years is our vision of providing the best products and the best solutions for our customers and today our companies continue to serve our customers even better. Intcom Systems Pvt Ltd Office No 20, Rajasthan technical Centre, Grd Floor, Patanwala Estate, Near Shre, Ghatkopar West, Mumbai, MH 400086, India Tel. +91-022-41117777 intcomsystems.com sales@intcomsystems.com Intcom Systems Pvt. Ltd., incorporated in 1994, caters to all aspects of Software Products / licenses procurement. With domain knowledge in software licensing models and years of experience reselling software products from worlds foremost software publishers, we provide purchase option that assist you get a properly licensed and most economic software deal. Our services division caters to Infrastructure solutions like, Network & E-mail Security, Print management, Online meeting solutions & Infrastructure solution. Intcom Systems Pvt. Ltd. is managed by Mahendra Patil and a team of professionals. With a focus on serving the Software Development, Corporate Houses & SME Small & Medium Enterprise in INDIA, We have tied up at various levels with software publishers worldwide to provide Indian developers with cutting edge tools to assist them through various stages of software development process. Amazing (HK) Trading Ltd Tel. +852-6255 3802 | Fax +852-3011 6235 amazinghk.com.hk sales@amazinghk.com.hk Kvazar-Miro CEE Kft Gubacsi ut 6., Budapest 1097 - Hungary Tel. +361-880-4415 | Fax +361-880-4465 kvazar-micro.hu info@kvazar-micro.hu SoDiCe Kereskedelmi Kft. 1143, Budapest, körút 83, Hungária Tel. +36 1 881 6486 sodice.hu info@sodice.hu A SoDiCe Kereskedelmi Kft. azzal a céllal jött létre, hogy közvetlenül a gyártóktól vásárolt szoftvereket kínáljon a magyar piac részére. Fő célunk, hogy a szoftver kiadókkal együttműködve részt vegyünk egy nemzetközi IT megoldásokat kínáló hálózat kiépítésében, kapcsolataik megerősítésében és a meglévő értékesítési csatornáikat kiegészítve hozzájáruljunk eredményeik növeléséhez. Kínálatunk az informatika különböző területein használatos szoftverek széles választékát tartalmazza: - Biztonsági/Security termékek - Network Management - Webdesign - Üzleti Megoldások - E-Learning - Tudományos szoftverek - Kommunikációs és Multimédiás termékek R2 Data Technology SAC. Tel. 511 402 0622  / 529 8069 r2datatechnology.com ventas@r2datatechnology.com R2 Data Technology es un proveedor de herramientas de desarrollo de software para empresas, ingenieria, investigacion e instituciones educativas. Software Sources Ltd. 64B Hasharon St. P.O.Box 639 Ra'anana 43106 Tel. +972-9-7714578 | Fax +972-9-7712194 software-sources.co.il chen@software-sources.co.il Wintech Italia Srl Tel. +39-0523.1998395 | Fax +39-0523.014654 shop.wintech-italia.com info@wintech-italia.com Wintech Italia is a training and consulting company specialized on Delphi, with the unique contribution of Delphi's "guru" Marco Cantù. We offer onsite and public training classes, consulting and development support, mentoring and code review. The company also resells in Italy the licences of Delphi and some third party components. AG-TECH Corporation 6F, Daiwa Kandabashi Bldg. 1-17-5 Kanda Nishikicho Chiyoda-ku, Tokyo 101-0054 Japan Tel. +81-3-3293-5300 | Fax +81-3-3293-5270 agtech.co.jp ``` sales@agtech.co.jp ``` AG-TECH is a company with over 35 years of experience in localizing, selling and importing packaged software into the Japanese market. We are the exclusive distributors in Japan for fully localized into Japanese versions of the FastReports.NET and FastReports VCL product range. As well as fully localized products, with full Japanese language manuals, we have an experienced team of local support and sales engineers, able to offer Japanese report developers and standalone report users a fully featured complete reporting solution. For full details, please refer to our Japanese language Fast Reports home page Danysoft Internatioal S.L. Avda. de la industria 4, edif. 1, 3ª planta, Natea Business Park, 28108 Alcobendas, Madrid +34-916-638683 danysoft.com Contact Danysoft es el representante exclusivo de Embarcadero en la península ibérica, estando especializados en ayudar a la comunidad de Delphi y C++Builder en licencias, formación, libros y utilidades tan imprescindibles como Fast Reports Isah Business Software Droogdokkeneiland 11, 5026 SP Tilburg Tel. +31-88-4724-000 | Fax +31-88-4724-001 isah.com A stable, hi-tech software solution: that is what Isah offers you. That is not just a promise. It is a guarantee. The manufacturing industry is our core market. With extensive industry experience dating back to 1987, we know precisely what is needed to optimise business management processes and attain better results. Rambla Informаtica S.L. Paseo Roma Fabra, 12, 08320 El Masnou – Barcelona Tel. +34-93-306-34-47 ramblainf.com DevTools Inc. Tel. +82-2521-7900 | Fax +82-22297-7900 devtools.co.kr midmee@devtools.co.kr AccessSoft Inc. 3F.-5, No.86, Sec. 1, Zhongxiao E. Rd., Zhongzheng Dist., Taipei City 100, Tel. +886-2-23560269 | Fax +886-2-23956826 accesssoft.com.tw rachelwu@accesssoft.com.tw  |  elsalin@accesssoft.com.tw Qun Yu Co., Ltd. (AccessSoft) positioning of the "Your Brilliant Solutions Provider", software integration services to provide customers with professional information, and for many of the world's leading software partners in Taiwan, the Taiwan user has a faster, more professional, more The regional software services. Linksoft Inc. 6th Floor, New Taipei City and District No. 351, Sec 10 Tel. +886-2-2221-2155 | Fax +886-2-2221-9008 linksoft.com.tw anna@linksoft.com.tw Founded in 2007, Linksoft is a professional distributor and reseller in Taiwan and China. As a professional software provider, Linksoft cooperates with global outstanding IT industries, reselling thousands of software includes Statistical Analysis, Development Program, Database Management, Network Security, Design and Edit software. Linksoft cultivates its mature service along Commercial, Government, Academic and Home users, with more than 500,000 customers in Asia. Working for customer-oriented, Linksoft provides in time product information and decent first-line support to overcome the difficulties caused by long distance and different time zones. Sinter Information Corp Tel. +886-2-2577-7755 | Fax +886-4-2471-7448 sinter.com.tw service@sinter.com.tw eBIZINET Co., Ltd. 24/128 Soi 21 Yak 3, Chom Phon, Chatuchak, Bangkok 10900 Tel. +66-02-5125933 ebizinet.com info@ebizinet.com Invite Course to Web Learning & Training on Internet. BTG (Bilgi ve Teknoloji Grubu Ltd.) Ankara: Bilkent 5.Cadde No:4 Ofis:9, 06533 Bilkent. İstanbul: Büyükdere Cad. No:185 Kanyon Ofis Binası K:6, 34394 Levent Tel. +90+212-319-7722 btgrubu.com cozum@btgrubu.com BTG (Bilgi ve Teknoloji Grubu Ltd.), yazılım geliştirme süreçleri ve test aşamalarında Türkiye çapında çeşitli büyük kurumsal projelerde danışmanlık, eğitim ve destek hizmetleri veren uzman bir kadroya sahiptir. Instant Buy Tel. +34-959-10-11-80 | Fax +34-959-87-06-49 instantbuy.es info@instantbuy.es Netsync Network Solutions 2500 West Loop South, Ste 410, Houston, 77027 +1-713-218-5041 | +1-832-606-2131 Lola Charles lcharles@netsyncnetwork.com Netsync Network Solutions (Netsync),is a HUB certified, minority owned, Houston-based, Value-Added Reseller,who holds a variety of manufacturer and industry certifications while specializing in the areas of Networking, Servers, Storage, Wireless Devices, Security, Enterprise Computing, Datacenter and other IT-related disciplines. Xailer +34 902 955 144 www.xailer.com sales@xailer.com Xailer Inc. is one of the most important companies in the xBase world created almost 10 years ago. They have been active in the development of Harbour since its inception. Our flagship product, Xailer is a complete visual development environment for xBase using Harbour as its main compiler. bit Time Software Via di Prataporci ,185 - 00132 Roma | Via C. Menotti 2/A, 20129 Milano 06 20763518 | 02 87399401 bittime.it dir_comm@bittime.it Bit Time Software è una dinamica IT company che opera nel panorama italiano ed europeo dell’information technology dal 2002. Nata come software house focalizzata sulla fornitura di soluzioni informatiche per la gestione delle attività aziendali, la società ha progressivamente esteso e ampliato le sue competenze, abbracciando l’area della consulenza e della formazione IT. Shanghai Quweishi Software Co., Ltd. Room 1222, No.580, West Nanjing Rd., Shanghai, 200041 021 - 3211 0920 commuch.com sales@commuch.com Quweishi Software is a professional software service vendor. We focus on providing development solution ,tools, on-site service for help , training and outsourcing. We work with many components and tools software company all over the world and provide technical support for their local customers. SOS Software Unterer Talweg 40 86179 Augsburg 0821 25782 - 0 sos-software.com info@sos-software.com Die SOS Software Service GmbH wurde im Juli 1987 gegründet und ist spezialisiert auf die Distribution und den Vertrieb von Software, Softwarebeschaffung und Lizenzberatung. Wir vertreiben Software von über 1.000 Herstellern mit 70.000 Artikeln. Täglich erweitern wir unser Software-Portfolio, um Ihnen Software aller Hersteller aus einer Hand zu bieten. FireBase www.firebase.com.br fdd@firebase.com.br A FireBase é o maior portal brasileiro de informações sobre Firebird, oferecendo serviços de consultoria, suporte, cursos, desenvolvimento, além de gerenciar uma das mais movimentadas listas de discussão sobre Firebird de todo o mundo. Cadastre-se gratuitamente para ficar atualizado com as últimas notícias do mundo Firebird! 51Component China 24D, No 15 Jincheng Mansion, Xiangcheng Road, Pudong,Shanghai,China +86-(0)21-50318395 51component.com sales@51component.com Beijing TL-Chinasoft Technology Haidian District, Beijing Zhongguancun South Street, Building 718 52 010-62115400 pcsofttech.com yiyong.ji@pcsofttech.com Codiprof Rua 31 de Janeiro, 76 4470-553 MAIA 229424216 www.codiprof.pt info@codiprof.pt Devart 192a Klochkovskaya str., Kharkov, Ukraine, 61145 sales@devart.com devart.com Founded in 1997, Devart now has 18 years of experience in developing database tools and native data access solutions for different database servers with headquarters situated in Czech Republic and research and development center - in Ukraine. Comsoft 400 Avenue de Roumanille Green Side 1 Bât. 2, 06410 Biot 0 825 07 06 07 comsoft.fr infos@comsoft.fr Corporate Tech +55 (51) 4063 8011 corporatetech.com.br comercial@corporatetech.com.br A CORPORATE TECH Tecnologia – tem por tradição à atuação no mercado de tecnologia da informação desde 2010, ano que iniciou suas atividades na cidade de Porto Alegre com o objetivo de atender pequenas, médias empresas, profissionais da área de desenvolvimento e infraestrutura com produtos de software e licenciamento. Atualmente atuamos em todo território nacional, com base em Porto Alegre e escritório na cidade do Rio de Janeiro, atendendo clientes das mais diversas áreas e seguimentos, fornecendo softwares e consultoria gratuita na área de licenciamento. Nosso trabalho é focado sempre na atuação consultiva, buscando entender a necessidade do cliente para lhe oferecer o melhor licenciamento e o software adequado a sua real necessidade e orçamento. WSB Solutions B.V. Kade 30, 3371 EP Hardinxveld-Giessendam (0184) 61 88 37 www.wsb-solutions.nl info@wsb-solutions.nl Elmer İSTANBUL Rasimpaşa Mahallesi Tayyareci Sami Sokak Demirli İşhanı No:18 Kat:2  34716 Kadıköy İstanbul +90 216 577 64 71 www.elmer.com.tr ANKARA Kabil Cad. 1335. Sokak No:10/2 06450 Öveçler, Ankara +90 312 478 42 78 www.elmer.com.tr CiKa Software Schwalmtalstr. 18 34628 Willingshausen-Steina Deutschland 06691-929621 www.cika-software.de info@cika-software.de Login Infotech #63, 1st Main Road, Seshadripuram, Bangalore - 560 020 Karnataka +91-80-23349809 | 23563500-02 login2it.com sanjay@login2it.com LOGIN INFOTECH PVT LTD was incorporated in the year 1996 by a group of professionals with more than a decade of experience in the IT industry. Login started its business as a reseller company for Software and Hardware products and in a short span of time Login was recognized as one of the leading Value Added Partners for Microsoft. Login was also appointed as Partners for leading MNC brands like HP, COMPAQ, IBM, ACER and Wipro among Indian brands. Today with a turnover of over $8 million, Login is one of the preferred vendors for leading Corporate, Government and Banks & PSU's across the country. Login will be accredited with ISO 9002 Certification shortly. Targetware (55) (11) 3665 8550 targetware.com.br comercial@targetware.com.br DHorde Gengqian Information Technology Office Building 1-2198, Building A, Baguazhou Pioneering Park, No. 270 Lidao Road, Baguazhou Street, Qixia District, Nanjing +86 17558866126 dhorde.com sales@dhorde.com Nanjing Gengqian Information Technology Co., Ltd. ("Gengqian" for short), established in 2017, is a national high-tech enterprise specializing in providing global software and information technology services. The headquarter is located in Baguazhou Pioneering Park with a pleasant environment, and has branches in various regions of the country Evget +86 (23) 68661681 www.evget.com qiuyt@evget.com EXE +421-2-67 296 111 exe.sk Uznávame princípy, ktoré sme si stanovili pri samotnom vzniku firmy. Nadobudnuté skúsenosti nám dávajú zdravé sebavedomie a rešpekt pred potrebami zákazníkov. Svojich klientov nikdy nezavádzame a vždy vytvárame len také riešenia, ktorým sami dôverujeme. Symbionis Software Nussdorfer Strasse 64, Top 3b, 1090 Wien Tel. +43-1-7866496 | Fax +43-1-7866496-30 symbionis.at office@symbionis.at Wir vereinen die drei Hauptbereiche, Software, Skills und Technologies, in einem zentralen Knotenpunkt, um Ihnen optimale Lösungen für Ihre Projekte zur Verfügung zu stellen. Durch die Verknüpfung dieser drei Schwerpunkte können wir Ihnen maßgeschneiderte Angebote von der Entwicklung Ihrer Softwarekomponenten über geeignete Fachkräfte bis zu speziellen Datenbankservices machen. Ker-Soft Computing Szombathelyi tér 14. 1119 Budapest, Hungary +36(1) 206-2147 kersoft.hu info@kersoft.hu The company, gradually faced with a greater number of complex tasks was urged to take on with more professionals thus providing further technical expertise. In respose to growing customers needs, Ker-Soft developed its IT expert team. Similarly, we have built partnerships with the world’s leading IT suppliers -enriching our competency in solutions and products of Microsoft, CA. PT Interaktif Cipta Lestari Jl. Pualam I No. 49 Sumur Batu, Kemayoran, Jakarta Pusat +62 21 21477722 www.interaktif.solutions iwancs@interaktif.solutions PT Interaktif Cipta Lestari is an IT Company that provide the best, effective, and efficient solutions for companies needs. We provide many service in several area such as Custom Software Development, Original Software License, Technical Support, Data Entry Services, Network Infrastructure Consultation, and much more DEVGEAR 359, Sapyeong-daero (Banpo-dong, 3rd floor)Seocho-gu, Seoul, 06542 02 595 4288 www.devgear.co.kr DevGear is a company established in Korea through agreements with Embarcadero (acquired by IDERA) such as Delphi and C++ Builder. In line with the ever-increasing demand for Delphi and C++ Builder developers, DevGear provides products as well as related services (books, education, technical support, etc.) to the domestic market. AHA Computer Company Ltd. Tel. 02-2749-1909 https://www.ahasoft.com.tw sales@ahasoft.com.tw AHA Computer Company Ltd. was founded in 1990, specializing in the marketing and licensing of computer software all over the world. Serving the market with active minds over decades, we are proud to say that satisfaction and support from our business partners have clearly marked our excellent reputation. Pure Green Bulevar Arsenija Čarnojevića 140/2, Beograd +381 63 640 218 puregreen.rs info@puregreen.rs PureGreen is an IT-based company founded in 2015. Great vision inspires us to connect the real and digital world in a way to be the MVP partner for both our customers and suppliers. The base structure of our portfolio has a focus on software development, design and offering the best IT products and solutions. JSC Softex Baltic Sviliškių str. 10-46, Vilnius, Lithuania +370 683 77221 www.softex.lt info@softex.lt OSB Software Rua Vergueiro, 1421, Conj. 1309, Torre Sul. Paraíso – São Paulo/SP – 04101-000  Tel. +55 11 4280 6660 www.osbsoftware.com.br contato@osbs.com.br Não importa se o software que você procura está na América, Europa, Oceania, Ásia ou África. Na OSB Software você poderá encontrar os softwares de qualquer fabricante independentemente do país onde ele esteja. A OSB Software firmou contrato de parceria com mais de 2.000 fabricantes que expressam a AUTORIZAÇÃO de comercialização do software em todo território nacional, além de uma equipe experiente que é responsável pela busca constante de novas soluções para disponibilizar o que há de mais recente no mercado de TI. MicroWay Pty Ltd PO Box 84, Braeside, Victoria, 3195, Australia Tel. +61-1300-553-313 | Fax. +61-1300-132-709 microway.com.au sales@microway.com.au MicroWay is Australia's largest distributor of development products and software for IT Professionals. With over 3,000 products and over 20,000 customers throughout Australia and New Zealand, we've been helping IT Professionals for over 27 years. We assist developers, system administrators and other IT Professionals by encouraging the use of tried and tested, quality products. Software development products fit into many categories including the category of "don't reinvent the wheel"—if someone has already written code to do what you're trying to do, why not just buy that code? Products of this sort are usually fairly robust after having been sold on the world market. InchalBase Yongsan-gu, Seoul, Yongsan-dong 5-Yongsan Park Tower 103 No. 1503 Tel. +82-02-589-2900 | Fax +82-02-548-1123 ibmart.co.kr tkim@inchalbase.com 1995 inchael goal is to computer and Internet users to offer the best experience and satisfaction . Customers a variety of products based on the technology accumulated over 10 years in software solutions, ranging from the client to the server until you are offered to Recognized in the development of a Web system used worldwide by End to End testing and performance monitoring solutions and management solutions to our customers can offer. In the development of VoIP and IMS products, network services, such as installation to provide a solution that can verify the quality and performance during the whole life cycle of up to. Web, VoIP, NGN, and IMS based on numerous tests and has the expertise and knowledge gained from experience in inchael base the quality of service in real-time visualization by showing a variety of monitoring solutions. Accumulated technology and experience a wide variety of state-of-the-art techniques provides consulting and tuning services. inchael base and OneSight 's easier and safer position in the web system management plan have been provided for users and administrators Korea empirically Riggs and merger integration decisions by truly comprehensive solutions company that provides VoIP, Enterprise & Contact Center solutions, as well as the process of expansion and diversification of business and one more step to leap to. Orangean International Corp Address: 8F., No. 527, Huajiang 1st Rd., Banqiao Dist., New Taipei City 220, Taiwan (R.O.C.) orangean.com.tw info@orangean.com.tw Orangean International Corp. ,established in 2020, primarily serves as an authorized distributor for international software. We specialize in the sale of professional commercial software and offer services in enterprise IT system planning and implementation, information security management, and computer hardware sales. ComponentSource 650 Claremore Professional Way, Suite 100, Woodstock, GA 30188-5188, USA Tel. +1-770-250-6100 | Fax. +1-770-250-6199 componentsource.com sales@componentsource.com ComponentSource was established in 1995, to ensure Software Developers were supplied with the best software development products the world had to offer. Hitherto, inefficiencies imposed by the established, country-based, software distribution channels meant that only a small number of products made it to market. Consequently, ComponentSource pioneered the open market for reusable software components and tools, through innovative use of electronic software delivery (ESD). Today, ComponentSource offer the world's best collection of labor saving software through eCommerce Web Sites; carrying over 10,000 SKU's from 230+ Publishers. ComponentSource have offices in the USA, UK and Japan supporting over 100,000+ Customers, from 160 Countries. Aquion Suite 25, L3 357 Military Rd Mosman NSW 2088 1300-AQUION (278-466) www.aquion.com.au send mail Aquion - Taking Award Winning Vendors to Customers in Australia, New Zealand, Asia Pacific and IndiaAquion supplies quality software and solutions backed by extensive technical expertise from our vendors as well as inhouse to enterprise, business and government customers in the Region. Vendors benefit from our customer relationships, established channels, and local knowledge. Our partners benefit from our close relationship with vendors, product and licensing expertise and technical support. End user customers benefit from best of breed software, locally supplied and supported. QBS Software Ltd Tel. +44-020-8733-7101 qbssoftware.com sales@qbssoftware.com Established in 1987 to provide tools to the developer community, QBS Software has expanded to become a leading software supplier in Europe providing thousands of products to developers, designers, IT Managers, Network Administrators, DBAs and Corporate Buyers. Products range from IDEs to code tools, components to Installation tools as well as security, reporting, installation, web, database, help creation, system tools and application software. QBS has developed a keen expertise in product marketing and management alongside sophisticated in-house publishing and fulfilment. We have an extensive network of industry connections and commercial relationships with software publishers and vendors throughout the world, many of whom rely on QBS Software to build strong markets for them in the UK and Europe. QBS Software is an active participant in leading industry exhibitions, conferences and roadshows and works closely with various user groups. Prianto Barthstraße 18, 80339 München +49 89 416148 210 prianto.com kontakt@prianto.com Die Prianto GmbH wurde 2009 von William Geens und Oliver Roth gegründet und gehört inzwischen zu den führenden, auf Software spezialisierten Distributoren Deutschlands. Seit 2011 ist Prianto auch in Großbritannien,Österreich und in der Schweiz vertreten, 2012 folgten die BeneLux-Staaten. Wir setzen auf absolute Fachhandelstreue und beliefern ausschließlich Wiederverkäufer im Channel (VARs, Systemhäuser, Integratoren, Fachhändler, Service-Provider, etc.). Unser Ziel ist es, langfristige, vertrauensvolle und erfolgreiche Geschäftsbeziehungen mit Fachhändlern und Systemhäusern einzugehen. Dafür bieten wir margenstarke und innovative Software-Lösungen an und garantieren schnelle und fundierte Leistungen bei der Beschaffung von Softwarelizenzen. Akdatasoft Yazilim ve Bilgisayar Kazımiye Mahallesi Aşık Veysel Sokak Çamlık Sitesi B-Blok No.:10 Daire:14 P.K.59860 ÇORLU, TEKİRDAĞ +90-282-653-13-89 akdata.com info@akdata.com Since the year of 1995, our company has been serving with integrated/modular software programs as a reliable provider for production sector with the help of operational business experienced personnel. It is only possible to provide right and on-time service to customers during changing competition conditions is to monitor / control production and stock, and to establish cost-benefit balance by using computer aided technology and services. Also used technology should be ready for development depending on changing necessities, and be modular based, has integrated parts. The major factors that are keys to be successful company; continuous cooperation with customers, support after selling, and improving our products as all we mentioned above. Thus we would like you as precious companies dealing with production to know that we are ready to create every production management systems, data collection projects, product pursuing and cost analyzing systems, and also ready to serve continuously and free of problems. Chongqing Huidu Technology Tel. 023-66090381 fastreportcn.com sales@evget.com Huidu Technology was established in 2003, focusing on controls (components and middleware) industry and software industry development consulting, which is the largest control reseller and reusable technology consulting service provider. We have a wide range of partners all over the world, adding up to more than 200 partners including top control producers in the world. We are devoted to provide world-leading reusable technology and tools for software developer, medium-sized and big enterprises, universities and etc. aiming at promote the common development of state software industry in China. Codetalk 359, Sapyeong-daero (Banpo-dong, 3rd floor), Seocho-gu, Seoul, 06542 (+82) 02 595 4288 https://www.codetalk.co.kr/ Сodetalk selects high-quality software for software professionals and then supplies and spreads genuine software based on partner agreements with the manufacturer. AVIR s.r.o. Záhumenice 15, 902 01 Pezinok Tel. +421-905-859812 | Fax +421-33-6401895 avir.sk Firma AVIR sa už dlhší čas zaoberá šírením a registráciou shareware (voľne šíriteľných) programov. Výhodou registrácie shareware u nás je možnosť platby v Euro na účet v slovenskej banke, promptné zaslanie papierovej faktúry od firmy AVIR ako slovenského platcu DPH, rýchle jednanie, komunikácia v slovenskom jazyku a mnoho ďalších výhod. Ku každému nami ponúkanému programu nájdete krátky popis alebo recenziu, ako aj link na jeho stiahnutie. Na základe overenia funkčnosti skúšobnej verzie na Vašom počítači sa potom môžete po uplynutí autorom určenej skúšobnej doby rozhodnúť pre registráciu programu (objednanie registrácie je už ale záväzné a po dodávke tovaru nie je možné jeho navrátenie, keďže licenciu firma AVIR platí autorským firmám vopred a súčasne licencie sú menovite vystavené na meno zákazníka, nie je možné ich predať inému zákazníkovi). Registrácia shareware programov sa dá realizovať aj v prípade produktov, ktoré sa nenachádzajú na týchto stránkach - kontaktujte nás s Vašimi požiadavkami. Infomedia Systems Services 18 Boon Lay Way #03-104 TradeHub21 Singapore 609966 +65-6270-0121 infomedia.com.sg sales@infomedia.com.sg Established in 1996, Infomedia Systems Services Pte Ltd is today’s leading system integration company providing One Stop Solutions for a wide range of customers ranging from the Small-Medium Enterprises (SME) to the Multi-National Corporations (MNC), Government Linked Corporations (GLC) and Government Bodies. With the extensive technical knowledge we possessed, we are able to assist customers transform their legacy and time consuming work operations into effective cost-cutting IT solutions. At Infomedia, we strongly believe in customer satisfaction and are always striving to work towards this goal. We are committed to our projects and promised to satisfy our clients by delivering quality works and solutions. It is also with this believed that we are able to offer cutting edge technology to our customers in this internet era. We understand the problems encountered by our customers when they deal with multiple vendors and thus we aim to establish ourselves as the one-stop IT solutions provider for them. We are able to provide consultancy, design, implementation and even the maintenance of the entire IT infrastructure for our customers. By engaging us you can rest assured that your network is in the safe hands and concentrate on your core business. Knowing the problems and frustrations that are faced by our customers when the system is not working in the daily operations, we are always ready to provide fast and efficient services to them when called upon. Your call is important to us and it is one of our company policies to provide prompt services without compromising on the quality of work to be done. We do not have RED TAPES like big corporations on servicing and supporting, our flexibility allow us to attend to our customers’ calls promptly. Getting your system up and running is always our number one priority. With the fast-paced and ever-changing of IT, we strive to maximize the best strategies and techniques to our staff so that they are always fully and readily equipped with the most reliable and cost effective solutions to reach customers across multiple channels. Software Asli Harco Mas Mangga Dua, Lantai Dasar No 89 (Dekat Lift) Jakarta Pusat 10739 Tel. +91-021- 6230 1345 | Fax +91-021-6230 4562 softwareasli.com info@softwareasli.com PT Digital Asia Utama/Software-Asli.com is an Indonesian leading Distributor and Master Dealer of Original Software. List of Top Brands carried includes Microsoft, Adobe, Corel, Autodesk, Symantec, Kaspersky, McAfee, AVG, Bit Defender, Norman, Zone Alarm, Eset, ACDSee, NetOp, Farstone, Oracle, SPSS, Redhat, MYOB, ESRI, Business Objects, Borland, MapInfo, IBM, Magix, UltraEdit, Techsmith, and many more. PT Digital Asia Utama is Private Owned Limited Liability company, located at Mangga Dua Jakarta, Indonesia, where the central of Computer Business located. The company was founded at 2003. After years of efforts, we have developed reputation, trust and confidence among our customers and partners. During the years, we continue to expand and grow. PT Digital Asia Utama have been working with more than 300 Reseller, Retail shops, and Online shops across Indonesia, Which is considered as one of the Biggest, most complete and most active Software Distribution channel in Indonesia. Cheer Chain Enterprise +886 4 2386 3559 cheerchain.com.tw info@cheerchain.com.tw Cheer Chain Enterprise (CCE) is a leading technology company based in Taiwan.We use our vast experience to provide a wide range of software, consulting and training services to organizations looking for solutions to qualitative research ,mixed methods research,eLearning, scientific publishing and statistical analysis challenges. BSC Polska Sp. z o.o. ul. Schroegera 32, 01-822, Warszawa bsc.com.pl BSC Polska, founded in 1996, is a representative of carefully selected software vendors offering solutions for the whole process of software development - application lifecycle management, coding, software testing, quality assurance and application performance monitoring. Our company additionally offers tools for database tuning and maintenance. We also provide training and consulting services supporting all products from our portfolio. LOGON Software Asia No 2-8 Airport Road, Guangzhou, Guangdong, China Tel. +852-25128491 logon-int.com sales@logon-int.com LOGON International Limited has created this privacy statement in order to demonstrate our firm commitment to privacy. The following discloses our information gathering and dissemination practices for this website: LOGON Software Services. LOGON's WEB Site is an extension of its customer service and technical support organizations. Through this WEB site, we strive to provide information on our products and services to valuable customers like yourself. Through this WEB site you are able to request evaluation software, software catalogs, subscription to TechNews, a weekly technical newsletter and enjoy prompt technical support assistance. In order for us to offer you these services, we require that you offer us contact information like your name, telephone, email address. In order that we understand your technical environment and your requirements, we also require that you mention information like development tools used, operating systems being managed, nature of applications being built or managed and your functional role in IT. With this information, we deliver customised information on products, technical tips, suggestions, etc.. info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Payment completed successfully URL: https://www.fast-report.com/successful-payment Summary: Thank you for your order. After payment checking by our payment processing service you will get a license in your personal panel. Thank you for your order. After payment checking by our payment processing service you will get a license in your personal panel. Thank you for your order. After payment checking by our payment processing service you will get a license in your personal panel . Also we will send you a notification by e-mail. In case of any problems with obtaining a license, feel free to contact us by e-mail , phone or through the support service ! We will be glad to see you as our new happy customer! ### PDF document in a report – using of new TfrxPDFView object URL: https://www.fast-report.com/blogs/pdf-document-in-report-vcl Summary: With the release of FastReport VCL 2021.3, a new TfrxPDFView object has been added, which allows you to display PDF documents inside a report. With the release of FastReport VCL 2021.3, a new TfrxPDFView object has been added, which allows you to display PDF documents inside a report. With the release of FastReport VCL 2021.3, a new TfrxPDFView object has been added, which allows you to display PDF documents inside a report. First of all, FastReport VCL is a report generator. Based on this conclusion, we can assume that previewing or embedding documents of other formats into a report is excessive. But according to requests from our customers, we can see the opposite point of view. Many of our customers are solving tasks with the integration of new and old systems. Such an old system may contain already prepared documents that need to connect to the news reports. In other words – embed and view documents of third-party formats into a report adding new pages or fields to it. For such tasks in FastReport VCL 2021.3, we have added the new report object - TfrxPDFView. This object uses the Open-source library Pdfium  and is designed to view PDF documents in a report. You can build this library from the source code or use one ready-to-use from FastReport VCL installation package (frx_pdfium.dll and frx_pdfium_64.dll in Bin folder). After the manual build, you need to rename the library to frx_pdfium.dll for 32-bit system and to frx_pdfium_64.dll for 64-bit system. For the manual build, you need Visual Studio and Google depot_tools. More information can be found here  and  here . As was written above you don’t need to build Pdfium, you can use prepared libraries from the FastReport VCL installation package, but if your company has a security limitation and requires building all code on your side use links from above. The TfrxPDFView can draw documents both on one and several report pages. Using the ability of the report engine to split objects. Let’s check more closely how to use this object and what ability it provides. After clear installation latest FastReport VCL 2021.3 version this component should appear on Delphi’s components palate in FastReport VCL section. Just place the TfrxPDFObject on the application form, to use the TfrxPDFView at Run-time. If you started with a new project also add the TfrxReport component to a Form and with a double click on it call the report designer. Then click on the PDF Object in the report designer objects panel and create a new object on the band in the report. Just like any other FastReport VCL object. The object was created. After that, the object editor should appear which allows loading a PDF document. TfrxPDFView allows printing multi-page documents. Special for this TfrxPDFView has new properties. DetailStretchMode property is responsible for displaying the content inside the container of the object and can be one of the following values: pdOneToOneStrongStretch – a page is always stretched using report object size. It does not keep the aspect ratio. pdOneToOneNormalize – a page is always stretched and keeps the aspect ratio of the original page in a PDF document. pdManyToOneNormalize – allows to fit several pages into the report object area and keeps the aspect ratio of the original page in a PDF document. Printing of multi-page PDF document FastReport VCL allows printing PDF documents as one page of a PDF document onto one page of the report for each page of a PDF document. We already created and load a PDF document on the Report Title band in the report. Let’s stretch it to the whole page of the report template page. It should look like the picture below. If we click on the report preview now, we will see only one page of the load PDF document even when a document has more than one page. To print all the pages, we need to perform a series of steps. Step 1. Turn on AllowSplit and Stretched properties and set them to True in the band object which has TfrxPDFView as a child. We need this band for stretches and splits. Step 2. Set StretchMode property to smActualHeight or smMaxHeight on the TfrxPDFView object. This object can stretch now. Let’s run the report preview and check the report output. FastReport VCL prints all pages of PDF document each on the report page. The TfrxPDFView object has and other properties. The “Password” property sets a PDF document password. “DrawOptions” flags allow controlling document output. In addition, you can use a file name as a source for the TfrxPDFView object by using the FileLink property. And that’s not all! With the new DataLink property, it’s possible to load documents even through HTTP and HTTPS protocols. Now FastReport VCL can print PDF documents inside a report and not only generate them! Tags: VCL, VCL, Lazarus, Lazarus, FastReport, FastReport, PDF, PDF, Report, Report, Delphi, Delphi ### PDF viewing settings when exporting from FastReport .NET URL: https://www.fast-report.com/blogs/configure-viewer-pdf-exporting-net Summary: Title of the article partly reveals subject. I would like to consider configuration a viewer PDF files when exporting FastReport .NET report. Title of the article partly reveals subject. I would like to consider configuration a viewer PDF files when exporting FastReport .NET report. Title of the article partly reveals subject. I would like to consider configuration a viewer PDF files when exporting FastReport .NET report. Title of the article partly reveals subject. I would like to consider configuration a viewer PDF files when exporting FastReport .NET report. This can be Acrobat Reader or browser's built-in viewer (Edge, Chrome) or any other viewer. You'll find that some of the options are very useful. Here is the tab "View" window in PDF export settings: Consider all the options in order: Show print dialog - when you start pdf file will immediately show the print dialog; Hide toolbar - disables the toolbar menu at the viewer; With the menu: Without the toolbar menu: Hide menubar - includes a main menu in the viewer; With the main menu: Without the main menu: Hide window user interface - this option enables / disables the sidebar that displays document pages in miniature. Interface hidden: Fit window - it allows you to adjust the size of the document window so that the page of the document was placed in width. If the window is smaller than the width of the document page, it will be increased; Center window - this option allows you to center the Viewer window on the screen; Print scaling - allows you to compress the large pages. For example, the image on the entire page had fields (some printers may not print entirely on the entire sheet, they require field). If you select this option, in the print window of the PDF document you will see the selected item Shrink oversized pages.  Scale - the opportunity to ask the original display scale of the document. You can change it later, when viewing the document. For example, choose the size of the "Fit Page". The scale will be chosen so that the entire page is fully displayed on the screen: Outline - allows you to display report the plan as a PDF file. Here is a sample report with a built-up: And here is the document PDF, if for such a report to include the option Outline: On the left is displayed bookmarks toolbar, which contains the report plan. We have considered all the options for configuring the display of the document in the viewer. Which of them will be useful to you to judge. But it is obvious that you shouldn't ignore these settings if you want to create a document that is easy to read the end-user. Tags: .NET, Export, FastReport, Viewer, PDF ### PDF/X, PDF/A, PDF/E: What is the difference, and why are there so many formats? URL: https://www.fast-report.com/blogs/comparison-pdf-formats Summary: Let's try to understand the variety of PDF formats, compare the pros and cons of standards for various industries and their needs. Let's try to understand the variety of PDF formats, compare the pros and cons of standards for various industries and their needs. Let's try to understand the variety of PDF formats, compare the pros and cons of standards for various industries and their needs. PDF is an all-purpose file format that allows users to present and share documents regardless of software, hardware, or operating system. Over the years, several PDF subtypes have been created to meet the different needs of various industries. Let's look at some of the most popular formats: PDF/X, PDF/A, and PDF/E. 1. PDF/X PDF/X is a professional standard for graphics interchange optimized for consistent and predictable printing. Unlike regular PDFs, which can include any content, like interactive elements and media files, PDF/X is limited to certain data types, making it especially suitable for sharing print-ready files. Main characteristics of PDF/X: Color model. All colors in a document must be defined in pre-known color spaces, typically CMYK or spot colors. It eliminates the uncertainties associated with color interpretation in printing. Built-in resources. All necessary resources, such as fonts and images, must be embedded in the file. It ensures that the document will look the same on any hardware. No interactive elements. There are no interactive elements such as comments, form fields, videos, and JavaScript. The specified output format. The document must contain information about how it will appear when printed, which implies certain requirements for the placement and layout of pages. PDF/X subtypes: PDF/X-1a: Based on the PDF 1.3 standard. Colors are defined as CMYK or spot colors only. Does not support ICC profiles. PDF/X-3: Supports CMYK, spot colors, and ICC profiles. Allows you to use different color spaces in one document. PDF/X-4: Supports layers, transparency, and other new features available in PDF 1.6 and higher. Supports multiple color spaces. 2. PDF/A PDF/A is a subset of the PDF format designed to meet the needs for long-term storage of electronic documents. Unlike PDF standard, PDF/A prohibits components that can cause problems with a document's appearance over long periods of time, making it ideal for archiving. Main characteristics of PDF/A : Built-in resources . All resources for the correct display of the document (for example, fonts, and images) must be embedded in the file. Lack of interactivity . Interactive elements such as JavaScript, audio, video, and executable files are prohibited. Color stability . The document must use a stable color model to ensure long-term display consistency. Prohibition of external dependencies . You may not refer to external resources that may change or disappear over time. PDF/A subtypes : PDF/A-1: Based on the PDF 1.4 standard. It is divided into two parts: PDF/A-1a for full compliance, including structure tags for accessibility, and PDF/A-1b for basic visual compliance. PDF/A-2: Based on the PDF 1.7 standard. Includes improved support for embedded annotations, layers, transparency, and compression. It is also divided into compliance levels: PDF/A-2a, PDF/A-2b, PDF/A-2u. PDF/A-3: Extends PDF/A-2 allowing to build in embedded files of any format (including, for example, XML, CSV, or CAD files). It is also divided into compliance levels: PDF/A-3a, PDF/A-3b, PDF/A-3u. 3. PDF/E PDF/E is a subset of the PDF format designed specifically for engineering, architecture, and construction professionals. This standard addresses the need for sharing, viewing, and printing dynamic technical documents, including diagrams, drawings, and 3D graphics. Main characteristics of PDF/E : Support for complex graphics . Including layers, transparency, 3D models, and interactive elements. Metadata . Enhanced metadata for improved search and management of document content. Precise geometry . For accurate reproduction of geometric objects such as lines, curves, and surfaces. Embedded files . Ability to include related or source files such as specifications or CAD data. Why so many formats? Various industries have different needs. The creation of specialized PDF subsets allows us to meet these needs without creating an entirely new standard. These profiles ensure standardization, predictability, and reliability for specific applications. Are these formats available in FastReport .NET? FastReport .NET has most export formats, only PDF/E is missing. These formats can be used both in the designer and the application code. To select the desired format in the designer, click "Save" and "PDF format." Then go to the "Settings" tab and select the needed format. At the end, we will receive the required file in the desired format. To export to a specific format, we need to create an application, connect the FastReport package, and write the required code. Below is an example of how to save a PDF as PDF/A. ``` Report report = new Report(); report.Load("PathToYourReport.frx"); // Setting up PDF export PDFExport pdfExport = new PDFExport(); // For export to PDF/A format pdfExport.PdfCompliance=PDFExport.PdfStandard.PdfA_2a; // You can select the desired compliance level report.Prepare(); report.Export(pdfExport, "OutputPath.pdf"); ``` Conclusion Although there are many PDF subtypes, each was developed with a specific purpose and to meet the needs of a specific industry. The choice is entirely yours, which format and for what purposes you need it. Tags: .NET, Export, FastReport, PDF ### Peculiarities of built-in Chrome PDF viewer URL: https://www.fast-report.com/blogs/chrome-pdf-viewer Summary: Let's take a closer look at how the Features of the built-in Chrome PDF viewer in FastReport works. Find more usefull tips and articles in our blog. Let's take a closer look at how the Features of the built-in Chrome PDF viewer in FastReport works. Find more usefull tips and articles in our blog. Let's take a closer look at how the Features of the built-in Chrome PDF viewer in FastReport works. Find more usefull tips and articles in our blog. The PDF format is so prevalent in the document flow, that is quite rightly called it the most popular in this area. Such a document is self-sufficient, it can include graphical information, special fonts, and more. There are many free software for viewing PDF files. Modern browsers also allow you to do this. For example, Google Chrome has its own built-in viewer for PDF documents. However, the Chrome PDF Viewer functionality is rather limited, compared with the Acrobat Reader. There is one more feature, which few people know. Chrome does not fully supports the PDF standard. This manifests itself when you print a document that contains the dotted line. These lines are displayed correctly when viewed in Chrome PDF Viewer, but when you print the document, they will not. Programmers from FastReport preoccupied by this problem. And in FastReport .NET (starting with version 2016.2.13) exported to PDF report can correctly display dotted lines when printing from Chrome PDF Viewer. To this end it was decided to depart from the PDF standard and draw dotted and dash-dotted lines by using segments of conventional lines. If you are using other means of generating PDF documents, remember the problem with the dashed lines when printing from Chrome PDF Viewer! Let's consider the situation when the error of printing the dotted line in Chrome PDF Viewer can cause serious consequences. For example, was formed a document for cutting sheet material in which the dashed lines are used. The file has been sent by mail. The manager received the letter and opened it in Chrome. The browser was use default built-in PDF viewer. Unsuspecting manager sends the document to print after previewing (where everything is displayed correctly). The document is printed incorrectly, but sure it is correct, the manager transmits it to the cutting. As a result, the master performs the job incorrectly. So, relying on the browser's built-in PDF viewer, you can get the major problems in the workplace. It is therefore important to use the professional tools. Tags: .NET, FastReport, PDF ### Performance evaluation of the new version of FastReport .Net 2017.1.0 URL: https://www.fast-report.com/blogs/performance-evaluation-net With the release of the new version FastReport.Net 2017.1.0 we got a significant acceleration of report building, exporting, and reduced memory consumption. These changes have prompted me to make a comparison test of the "old" and the "new" versions. Testing technique For testing we will build a report and make its export to multiple formats: PDF, XLSX, HTML export with layer method (because it is used in web reports).   At the same time, exports time will be measured  as well as the size of the file. First let’s test the version 2016.4.0, then - the new 2017.1.0. Let’s take the most popular template Master-Detail Report. XML data base. I've done simple enough application: Here a  Multi page is a usual multipage report, and Unlimited page  is a report with enabled property UnlimitedHeight. This wat we use two almost identical report, but one of them will have a unlimited page. Here I must point out that the size of this report is limited to 100 MB. Exceeding this limit will still create new pages. To make the unlimited report, open it in the designer. In the Property inspector, select the page of the report and set UnlimitedHeight property = true, or UnlimitedWidth = true if your report grows in width. For the measurements we use the built-in FastReport profiler: Profiler.Start(); - to start; Profiler.Stop(); - to stop and show result. I'm starting each export in turns and recording the results of profiling. By the way, profiler displays the results in a MessageBox: Measurement results For a typical multipage report time of building mostly got reduced. However, not for all reports: when exporting to PDF format time of building increased slightly. Apparently not all optimization has been completed. For the same multipage report memory consumption is reduced considerably. And what about the "unlimited" report? Here’s the same thing. Time of construction reduced for each dimension. As well as memory consumption – it has strongly reduced. For each dimension, except PDF. But the difference is minimal. For those who prefer in tabular form: Measurements version 2016.4.0 Multi page Unlimited page Размер, Kb Время, ms Размер, Kb Время, ms Prepare 1336 875 4040 875 PDF 87396 7031 81986 7220 XLSX 23092 1547 18784 1734 HTML 7354 2897 50576 1954 Measurements version 2017.1.0 Multi page Unlimited page Размер, Kb Время, ms Размер, Kb Время, ms Prepare 1020 735 1088 703 PDF 85482 7167 82654 7149 XLSX 16512 1359 16228 1640 HTML 2445 2725 9180 1890 As you can see, the overall picture is significantly improved in the new version. See how memory consumption decreased for the HTML report with dimensionless page. Unlike 2016.4.0 memory consumption has decreased from 50576 to 9180Kb. Value has improved by more than 5 times! But this is the most used reports, for the web. Excellent job! What has changed inside? In versions below 2016.4.4 used ExportPage method. It received the entire page to move then through all the objects and save them in the desired format. Then the page was removed from memory and next one was taken. If the totals were tabular formats, all of it accumulated in the intermediate matrix. If your report was not very big, you do not notice the problems. However, with the advent of "unlimited page" (UnlimitedHeight and UnlimitedWidth), there were problems - memory consumption. It was decided to move to Band's data transfer to export. This has greatly reduced memory consumption. FastReport team thoroughly worked and reworked the core of generator. However, the issue with the matrices is still not resolved because they occupy only one band, but grow in size. But it's just a matter of time. In tests, we found that memory consumption for the unlimited pages noticeably reduced. But the time of construction in some cases slightly increased. However, not much. So, as we have seen, much work has been done and performance improved significantly. This is especially noticeable for HTML export, which is extremely valuable for Web-based reporting. Tags: .NET, .NET, FastReport, FastReport ### Persian Calendar in the Report URL: https://www.fast-report.com/blogs/persian-calendar-document Summary: Coverting the date format for the persian users. Coverting the date format for the persian users. Coverting the date format for the persian users. Did you know that different countries have different date formats? When you make a multilingual report, or a report for a country where they speak Persian (Farsi), it is important to bring up dates in the correct format. By default, FastReport uses the European date format, but the .NET tools allow converting it into different formats. Thus, our task is to convert the date into the Persian format. For example, our report has an expression [Date], bringing up today’s date: The expression [Date] gets the current system date in the DateTime format, but the value of the text report after all processing is the String. Let us create a new function in the report script: ``` private void ConvertToPersianDate(object sender, EventArgs e) ``` We will evoke this function from text objects. We create a temporary variable, which will convert the text of the object into DateTime: ``` DateTime d = DateTime.Parse((sender as TextObject).Text); ``` “sender as TextObject” is the address to the object which evoked the function. We may use the functions and properties of an object if we address it in such a way. After that, we will need the PersianCalendar object, which will convert the date into the Persian format: ``` PersianCalendar pc = new PersianCalendar(); ``` Note that this object is stored in the System.Globalization library, and it must be indicated in the “using” section. Then we must change the text of the object. Consider this line in more detail: ``` (sender as TextObject).Text = string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d)); ``` Here we set the text of our object. The value will be in the format year/month/day, because we use the functions of the PersianCalendar which get the respective values. The code section where the text is set can be edited as you wish. For example, the code for the date in the day.month.year format looks like this: ``` "{0}.{1}.{2}", pc.GetDayOfMonth(d), pc.GetMonth(d), pc.GetYear(d) ``` As a result, we get the following function: ``` using System.Globalization; namespace FastReport { public class ReportScript { private void ConvertToPersianDate(object sender, EventArgs e) { // Converting to DateTime format DateTime d = DateTime.Parse((sender as TextObject).Text);   // Creating an object for conversion PersianCalendar pc = new PersianCalendar();   // Creating a string using PersianCalendar // It is possible to change the string template (sender as TextObject).Text = string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d)); } } } ``` Add the function to the AfterData event of the relevant object. Now the date looks like this: To use other functions related to time, you can consult the following table:  GetDayOfWeek(),  Day of week  GetMonth(),  Month  GetDayOfMonth(),  Day of month  GetYear(),  Year  GetHour()  Hour  GetMinute()  Minute  GetSecond()  Second Now you know how to change the format of date in your report. This article may help in changing the format to (year, month, day). This format is used in Japan, China, North Korea, South Korea, Taiwan, Hungary, Lithuania, and Iran; also, it is used as a collateral one in some European and Asian countries. Tags: .NET, .NET, FastReport, FastReport ### Pharmacode in FastReport .NET URL: https://www.fast-report.com/blogs/barcode-pharmacode-net Summary: Let's take a closer look at what Pharmacode QR-code in FastReport .NET is. Find more usefull tips and articles in our blog. Let's take a closer look at what Pharmacode QR-code in FastReport .NET is. Find more usefull tips and articles in our blog. Let's take a closer look at what Pharmacode QR-code in FastReport .NET is. Find more usefull tips and articles in our blog. In this article we are going to introduce and explore a new type of barcode in FastReport .NET - Pharmacode. One can guess from the name of the barcode, that it is related to pharmaceutical industry. Pharmacode is a binary code, which was developed by a German company LAETUS GMBH specially for pharmaceutical packaging. This code is widely used as a pharmaceutical product packaging control system. As a part of an automated packaging system, Pharmacode allows you to scan and detect pharmaceutical shipments easily by using universal identifiers. It is also easy to determine, whether the batch is mixed with other drugs by using scanners. Pharmacode is used in pharmaceutical industry as a part of their package management system and it is specifically designed to guaranty reading, despite possible misprints and typos. Also, to ensure that the rest of the package, apart from its code, is correctly printed, Pharmacode can be printed in multiple colors, as opposed to barcodes intended for reading by a laser or a laser emulation. This is possible because Pharmacode is scanned by special white color scanners LAETUS. This makes Pharmacode a very practical format for printing on packagings or documents that do not contain black ink. As it was mentioned earlier, Pharmacode can be printed in different colors. Both the code itself and the background color may be different from the white and black colors. There is a special specification code color combination and background used depending on the type of a scanner for reading. For example, standard black-and-white scanners perceive only a code and a contrasting background, whereas special scanners that recognize the color do not have strict limitations. Unlike other 1D barcodes, Pharmacode stores data in binary rather than decimal. In addition, Pharmacode can only represent single integers from 3 to 131070. The smallest number of lines is equal to 2 for the number 3 and the maximum value is 16 for 131070. Pharmacode should be read from right to left, which makes Pharmacode unique among other linear barcodes. They usually have a start and a stop character. If you read the code from left to right, you'll get an entirely different sequence of numbers. The Pharmacode creator LAETUS describes barcode standard in the document PharmaCode Guide. Here is an example of Pharmacode: FastReport.Net allows you to create such codes in your reports. You can design a package immediately with a barcode. To add a code to your report use a side toolbar, namely the component Barcode: Place the barcode object on the report page. For editing you need to double - click on the added component: In the function of the code values you can enter a numerical sequence, specify a function, select a report variable or a value from the database. In barcode propertiesy ou can change: the interval between lines (WideBarRatio), the code height (Height), displaying of numbers (ShowText). What is more important - you can set the code color and background color. To set the background color, use the feature "Fill -> Color". To change the code color - "Barcode -> Color": In such a way it is possible to set any combination of colors and background color code. However, one should still adhere the standard of colors combination for Pharmacode: Thus, the number of available FastReport .NET barcode formats has increased to 25. That covers all modern types of barcodes and extends the use of the reporting tool in pharmaceutical industry. Tags: .NET, FastReport, Barcode ### Please participate in our survey URL: https://www.fast-report.com/news/survey-training-fastreport-vcl Summary: Please participate in our survey Please participate in our survey Загрузка... ### Plugin for importing data from .XLSX to FastReport .NET URL: https://www.fast-report.com/blogs/plugin-import-excel-dotnet Summary: Expanding the number of data sources for FastReport .NET 2022.2 using a plugin to connect files in the format .XLSX. Expanding the number of data sources for FastReport .NET 2022.2 using a plugin to connect files in the format .XLSX. Expanding the number of data sources for FastReport .NET 2022.2 using a plugin to connect files in the format .XLSX. With the release of FastReport .NET 2022.2, we added a plug-in to connect .XLSX files as a data source. To use it, you must first build the project: С:\Program Files (x86)\FastReports\FastReport.Net\Extras\Core\FastReport.Data\FastReport.Data.Excel After building the project, you will need to add the plugin to the application in one of two ways. 1. Connecting the plugin through the designer: 2. Add the plugin as a dependency when starting the project and register it in the code with the following command: FastReport.Utils.RegisteredObjects.AddConnection(typeof(ExcelDataConnection)); To create a connection to Excel, you need to click on the "Data" tab in the designer, and select the "Add Data Source" item. In the window that appears, click on the "New Connection" button. To connect, you need the path to the .XLSX file. If there are no problems with accessing the file, then a list of tables will appear after clicking the "Next" button. When connecting a table, you must check the box to the left of the table name. After that, you can complete the connection. Upon completion of the data source connection, you need to connect a band to it. The final report will use the data from the created connection to Excel. An example of connecting to Excel from code: ``` // Create ExcelDataConnection instance var connection = new ExcelDataConnection(); // Set connection string connection.ConnectionString = @"C:\Matrix With Rows Only.xlsx"; // Initialize all table connection.CreateAllTables(); // Set name connection connection.Name = "NewConnection"; // Create Report instance var report = new Report(); // Add connection to report report.Dictionary.Connections.Add(connection); // Set connection show connection.Enabled = true; // Choose all tables and connect it to the report foreach (TableDataSource table in connection.Tables) { table.Enabled = true; } ``` Because of executing this code, we can see a new connection with tables in the designer. This will be shown in the list of available connections. It is worth noting that the names of the "sheets" are used as the table name, and the names of the columns are used as the field names. As you can see, it is now possible to create a connection to Excel and use the data stored there. Tags: .NET, .NET, FastReport, FastReport, Excel, Excel, Designer, Designer, Plugin, Plugin, XLSX, XLSX ### Pre-registration of data sources before create a new report URL: https://www.fast-report.com/blogs/pre-registration-data-sources In order to send a data source to a report it must previously be pre-registered in the report. Then, within the report select an available source from the list and only after that - start to work. It would be great if the data source could be available to a paste when you open the report designer. Better yet, if it was already selected in the report designer. In this case, you could immediately begin to develop a report, not worrying about the data. Such an approach would avoid the routine work during the extensive report development. Make registration of a data source and its automatic choice in a report at the launch of the designer - not a difficult task. The main problem is to keep the registered data source when creating a new report using the File menu. The essence of the method that I want to introduce - to intercept the process of creating a new report by using the File menu. Let's consider the following example. Create an application with a form and a single button. The required for work libraries are: ``` using FastReport; using FastReport.Utils; using FastReport.Data; using FastReport.Design; using FastReport.Wizards; ``` Declare the data source and then  create it: ``` private DataSet FDataSet; private void CreateDataSource() { FDataSet = new DataSet(); FDataSet.ReadXml(Environment.CurrentDirectory + "//nwind.xml"); } ``` In this case, I use XML database from the FastReport .Net package. Create a method of data source registration : ``` private void RegisterData(Report FReport) { FReport.RegisterData(FDataSet, "NorthWind");   // activate all data sources by default foreach (DataSourceBase source in FReport.Dictionary.DataSources) { source.Enabled = true; } } ``` Here, the loop iterates through all the data sources that are registered in the report and activates them. Thus they will be immediately available in the data window. Call an event handler of starting Report Designer: ``` private void DesignerSettings_DesignerLoaded(object sender, EventArgs e) { (sender as Designer).cmdNew.CustomAction += new EventHandler(cmdNew_CustomAction); } ``` Add a custom handler for the event of creation the new report from the File menu. Now we need to write the custom handler. It will create a new, blank report with already added data source: ``` void cmdNew_CustomAction(object sender, EventArgs e) { Designer designer = sender as Designer;   //StandardReportWizard wizard = new StandardReportWizard(); // you can use any wizard form package BlankReportWizard wizard = new BlankReportWizard(); wizard.Run(designer);   RegisterData(designer.Report); // refresh data tree view designer.SetModified(this, "EditData"); } ``` Here we create an instance of a blank report or run the "standard report wizard." It's your choice. Then open a new report in the designer. Re-register a data source and update the list in the data tree. It remains to write the handler pressing:  ``` private void button1_Click(object sender, EventArgs e) { Report FReport = new Report(); Config.DesignerSettings.DesignerLoaded += DesignerSettings_DesignerLoaded; CreateDataSource();   // FReport.Load("myreport.frx"); // load report RegisterData(FReport); // register data before design FReport.Design(); } ``` Create a copy of the report object. Assign a handler of loading report designer, which we have written, instead of the standard one. Create a data source. Now you can download the report, or not do it. Then it will be created empty report. Before calling the designer is required to register the data. Now, with the launch of the designer, the database tables will be displayed immediately in the "Data" window. Also when creating a new report from the File menu, the data source will be added. In this article I showed you how to intercept the process of creating a new report, if to create it via the File menu. The same principle can override other actions of the designer, such as Save. Tags: .NET, .NET, FastReport, FastReport ### Press about us URL: https://www.fast-report.com/press_about_us Summary: Press about us Fast Reports. Press about us Fast Reports. Press about us Fast Reports Press about us Fast Reports. Press about us Fast Reports. Press about us Fast Reports Report server for small business — Reporting For Info The manager of reports — Reporting For Info Convert file .FP3 to .PDF - Indonesia ### Press about us URL: https://www.fast-report.com/publications Press about us June 12, 2022 #best-reporting-tool Best Reporting Tool for ASP.NET (MVC, Core or Web-Forms) In previous article, I have mentioned best free asp.net hosting provider and asp.net apm tools, now in this article, I will be listing best reporting tool which you can use with asp.net mvc, asp.net core or asp.net web-forms, with a brief discusion about the tools. К источнику April 06, 2022 #opensourse FastReport OpenSource Generate Pdf Without PdfSimple FastReport provides open source report generator for .NET6/.NET Core/.NET Framework 4.x. You can use the FastReport in MVC, Web API applications. FastReport Open Source is based on the FastReport.Net project. You can find more information at https://github.com/FastReports/FastReport.Documentation К источнику February 25, 2022 #OLAP Overview of the OLAP data cube technology in the FastCube VCL product FastCube VCL is a high-speed OLAP engine that will help you quickly process large amounts of data from your business process. Nowadays, one of the main problems of business processes is data processing. It takes a lot of effort and precious time of the company. К источнику December 24, 2021 #component-sourse FastReport .NET Professional Reporting for .NET 5, .NET Core, Blazor, ASP .NET and WinForms. К источнику November 26, 2021 #QR-code QR codes were discovered back in the Middle Ages! Today, it’s hard to find an individual who doesn’t know what a “QR code” is and what it looks like. It is not known whether the introduction and their subsequent use is a consequence of the pandemic (it is better to talk about them in a separate article), but absolutely everyone has become familiar with black and white squares. К источнику November 19, 2021 #NET .NET 6.0 update A closer look at what’s under the hood of .NET 6 in addition to our previous post on the topic. К источнику November 12, 2021 #Cloud A closer look at FastReport Cloud — cloud reporting FastReport Cloud is a set of tools for building documents. The service allows making reports and documents based on preconceived templates kept in a cloud. К источнику November 10, 2021 #Microsoft Brand new Microsoft .NET 6 and Visual Studio 2022 Microsoft announced the new technology on November 8. What’s new in .NET 6 for developers? К источнику info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Price of FastReport 4 URL: https://www.fast-report.com/news/price-fastreport-4 Summary: Price of FastReport 4 Price of FastReport 4 FastReport 4 editions  Basic   $79 Standard   $179 Professional  $249 Enterprise   $349 Upgrade from FR3 (purchase date after May 1st, 2006 is a FREE upgrade  to the same FR4 edition) Upgrade Basic   $39 Upgrade Standard   $99 Upgrade Professional   $139 Upgrade Enterprise   $199 Basic to Standard   $99 Basic to Professional   $169 Basic to Enterprise   $269 Standard to Professional   $69 Standard to Enterprise   $169 Professional to Enterprise   $99 ### Privacy Policy Statement URL: https://www.fast-report.com/cloud-privacy PLEASE READ THIS DOCUMENT CAREFULLY. IT CONTAINS IMPORTANT INFORMATION THAT YOU SHOULD KNOW BEFORE USING THE WEBSITE OR SERVICES. BY USING THE WEBSITE OR SERVICES, YOU WILL BE DEEMED TO HAVE ACCEPTED FAST REPORTS’ PRIVACY POLICY. Your use of the Website and Services (as each of these terms are defined in this Privacy Policy), including any dispute concerning privacy, is subject to this Privacy Policy. By using the Website or Services, you accept the practices set forth in this Privacy Policy and the Terms of Service. Fast Reports Inc. reserves the right to modify this Privacy Policy at any time by posting such changes on this page. Please check the revision date below to determine if this Privacy Policy has been modified since you last reviewed it. Your continued use of any portion of the Website or Services following posting of the updated Privacy Policy will constitute your acceptance of the changes. This privacy statement was last updated on March 12, 2021. Fast Reports Inc. and its affiliates (collectively, “Fast Reports”) have created this privacy statement in order to disclose its information gathering and dissemination practices for its website located at  https://fastreport.cloud/  (“Website”) and the services offered and provided through the Website (“Services”). Table of Contents Background Information Word from Fast Reports A. Information We Collect Information We Collect Through the Website User Content Providing Information to Fast Reports User Account Third Party Websites Third Party Applications Information Relating to Children California Online Privacy Protection Act Notice Cookies and Web Beacons B. Use and Disclosure of Information How your Information is Used Disclosure of Information to Third Parties Change in Control Disclosure of Information to Other Users Securing the Transmission and Storage and Storage of Information C. Choices Available to You D. Rights of European Users under the GDPR Data Controller Data Processor Consent Legal Basis for Processing GDPR Rights: Right of Confirmation Right of Access Right to Rectification Right to Erasure Right of Restriction of Processing Right of Data Portability Right to Objection to Automated Decision Making Right to Objection Processing Retention Policy Cross Border Data Transfers Data Protection Officer E. Privacy-Related Inquiries and Complaints Background Information Upon reading this Privacy Policy, you will be informed of the following: description of the types of personally identifiable information (yours and that of third parties) collected through the Website and Services; how the collected personally identifiable information is used; with whom the collected personally identifiable information may be shared; the choices available to you regarding the collection, use, and distribution of such information; security procedures that are in place to protect against the loss, misuse, or alteration of personally identifiable information under Fast Reports’ control; and instructions how you can access and correct inaccuracies in the information collected about you. A note about the Website and Services: some of our Services, data centers, service providers, affiliates or operating partners and servers may be located in other countries. As such, the Website and Services may be subject to the laws of numerous countries and jurisdictions, some of which may require us to disclose certain information about our users. We are committed to keeping your information private, while still complying with all applicable laws in jurisdiction in which we operate. Should you have any concerns or believe that there are problems or issues relating to compliance with the policies outlined in this Privacy Policy, please notify us by e-mail at:  info@fast-report.com A Word from Fast Reports Fast Reports has a strong commitment to providing superior service to all of our customers and visitors and particularly respecting their concerns about privacy. We understand that you may have questions about how the Website and Services collect and use your information. Accordingly, we prepared this statement to inform you of the privacy principles that govern the Website and Services (the “Privacy Policy”). We will not sell or rent your personally identifiable information or a list of our customers to third parties. However, as described in more detail below, there are limited circumstances in which some of your information may be shared with third parties, under strict restrictions, so it is important for you to review this Privacy Policy. This Privacy Policy contains numerous general and technical details about the steps we take to respect your privacy. We have organized this Privacy Policy by major processes and areas so that you can quickly link to the information of most interest to you. The bottom line is that meeting your needs and expectations forms the foundation of everything we do, including protecting your privacy. Changes in Privacy Policy We want you to always be aware of what personal and other information we collect, how we use that information, and under what circumstances we may disclose it. All personal information that we collect will be handled according to the Privacy Policy in effect at the time the information is collected. If the Privacy Policy changes in any significant respect in the meantime, we will not (without your permission) use your personal data in a manner that is inconsistent with the Privacy Policy in effect at the time your information was collected. From time to time, we may find the need to make changes to this Privacy Policy. This Privacy Policy may be amended by Fast Reports upon notice given through the Website or via e-mail. Please check the Privacy Policy published on this Website regularly to ensure that you are aware of all terms governing your use of this Website. A. INFORMATION WE COLLECT Information We Collect Through the Website This Website does not collect personally identifiable information from your computer when you browse the Website and request pages from our servers. This means that, unless you voluntarily and knowingly provide us with personally identifiable information, we will not know your name, your e-mail address, or any other personally identifiable information. When you request a page from our Website, our servers log the information provided in the HTTP request header, JavaScript or similar technical tools, including the IP number, the time of the request, the URL of your request and other information. We collect this information in order to make our Website function correctly and provide you the functionality that you see on the Website, as our servers use this information to deliver to you the pages on this Website. We also use this information to better understand how visitors use our Website and how we can better tune our Website, its contents, and functionality to meet your needs. However, this information is not associated with any personally identifiable information of persons browsing the Website. When you use the Website, Fast Reports or trusted third parties authorized by Fast Reports may also collect certain technical and routing information about your computer (also known as environmental variables) to facilitate your use of the Website and the Services enabled thereby. When you browse the Internet, your Internet browser (such as Mozilla Firefox, Google Chrome, Safari, Edge, or Microsoft Internet Explorer) automatically transmits some information to Fast Reports every time you access content on one of our internet domains. Examples of such information include the URL of the particular Web page you visited, the IP (Internet Protocol) address of the computer you are using, or the browser version that you are using to access the Website. All of this information may be collected by Fast Reports and used to help improve our offerings to you. User Content User Account holders may be permitted to upload certain content onto the Website and Services (“User Content”). This information shall be private and, except in accordance with this Privacy Policy, will not be disclosed to third parties without your prior permission. Providing Your Information to Fast Reports You never have to provide personally identifiable information to Fast Reports. However, should you choose to withhold certain required information, Fast Reports may not be able to provide you with some or all of the Services. Some of the information we ask you to provide may be identified as mandatory or optional. If you do not provide the mandatory information with respect to a particular activity, you may not be able to engage in that activity or make such a purchase. Fast Reports will inform you of the mandatory or optional nature of the requested or required information. Fast Reports is the sole owner of the information it gathers on the Website and Services. Fast Reports will only share your information with outside parties in ways that are described in this privacy statement or if we are required to do so by law or in the good-faith belief that such action is necessary in order to conform to the edicts of the law, cooperate with law enforcement agencies, or comply with a legal process served on us and otherwise to comply with any current or future laws and regulations applicable to Fast Reports. You may be provided an opportunity on the Website to allow Fast Reports to contact you from time to time regarding company news and product or Services updates. In order to do so, you may be required to provide certain personally identifiable information to Fast Reports. Fast Reports will treat this information in accordance with the policies set forth in this Privacy Policy. When you submit personal information to Fast Reports through the Website, you understand and agree that this information may be transferred across national boundaries and may be stored and processed in any of the countries in which Fast Reports and its affiliates and subsidiaries maintain offices. You also acknowledge that in certain countries or with respect to certain activities, the collection, transferring, storage, and processing of your information may be undertaken by trusted vendors of Fast Reports. Such vendors are bound by contract not to use your personal information for their own purposes or provide it to any third parties. Fast Reports may establish relationships with various service providers whose services may become available to you from the Website or from other websites that are linked to the Website. Typically, these providers would offer services that Fast Reports customers might find useful, such as those that can be used in conjunction with the Website and Services. In order to use these services, you may be required to provide personal information to the services providers. Unless expressly provided to the contrary, personal information that you provide while you are visiting a provider's website will be subject to the privacy policy posted on such site, and personal information that you provide while on the Website in conjunction with a provider’s service will be subject to this Privacy Policy. For instance, credit card information entered as part of the filling out the purchase form or registration process is collected by the third-parties registration services and subject to their respective privacy policies. You should be aware that our agreements with these service providers often provide that they will share with Fast Reports personal information collected from you. In such instances, Fast Reports may use this information in a manner consistent with this Privacy Policy. User Account When registering for a User Account or otherwise contacting Fast Reports in connection with your interest in purchasing Fast Reports products or services, Fast Reports may ask you to provide certain information. Such information may include your name, e-mail, and other personally identifiable information. It is completely optional for you to register for a User Account or engage in activities requiring a User Account or provide any personal identifiable information. However, certain information and proper identification may be required in order for you to engage in a business relationship with Fast Reports. Once you create a User Account, you will be deemed a Registered User. You may also request to change information associated with you User Account by contacting us at  info@fast-report.com . If you wish to deactivate your User Account, you may contact us at  info@fast-report.com . When you deactivate your personal account, all information stored and maintained as part of your account may be retained for archival, backup and record purposes. Third Party Websites The Website may contain links to websites owned and operated by third parties. These links are presented for your convenience and information. Fast Reports does not control these third-party websites and is not responsible for their privacy practices or content. Fast Reports does not control the information collection and distribution policies on such websites other than those that are under the control of Fast Reports itself. Content on third party websites may not reflect products, services, and/or information provided by Fast Reports. Third parties may also set their own cookies and/or use web beacons, which may be used to identify some of your preferences or to recognize you if you have previously had contact these third parties. Fast Reports does not control the use of such technology by third parties, the information they collect, or how they use such information. You should direct all concerns regarding any third-party website to the site administrator or webmaster of such website. Third Party Applications Fast Reports may make third party applications available to you through the Website or Services. The information collected by Fast Reports when you enable a third-party application is processed under this Privacy Policy. Information collected by the third-party application provider is governed by the provider’s privacy policies. Information Relating to Children The Children's Online Privacy Protection Act (COPPA) was passed by the U.S. Congress in November 1998. COPPA provides parents with specific rights regarding their children's privacy. For additional information and resources on COPPA, please visit the Federal Trade Commission Web site at  http://www.ftc.gov/ . The Fast Reports Website and any Software or Services available on that site are not directed at children under 13 years of age and, therefore, COPPA does not apply. However, we recognize that children under the age of 13 may potentially access this Website and subscribe to the newsletter, purchase Software and Services, or download software programs. The collection of information is covered above. Parents and Legal Guardians may request from us to review, delete or stop the collection of the personally identifiable information of their child. You may do so by contacting us by email at:  info@fast-report.com . California Online Privacy Protection Act Notice Fast Reports does not track users over time and across third party websites to provide targeted advertising and therefore does use do not track (DNT) signals. However, some third-party sites may keep track of your browsing activities when they serve you content, which enables them to tailor what they present to you. If you are visiting such sites, your web browser may allow you to set the DNT signal on your browser so that third parties (particularly advertisers) know you do not want to be tracked. Fast Reports does not authorize the collection of personally identifiable information by third parties and third parties cannot collect this information unless you provide it to them directly. Cookies and Web Beacons The Website uses “cookie” and “web beacon” technology. “Cookies” are short pieces of data generated by a web server that a website stores on a user’s computer. Certain pages on our Website may require the use of a cookie for purposes of keeping information you enter on multiple pages together. Cookies also enable us to customize our Website and offerings to your needs and provide you with a better online experience with us. In addition, cookies are used to: measure usage of various pages on our Website to help us make our information; more pertinent to your needs and easy for you to access; identify and categorized the internet webpages from which the visitor came to the Website and observe the browsing patterns; and provide functionality such as online orders, Fast Reports services and other functionality that we believe would be of interest and value to you. The types of cookies that we use are referred to as “session” cookies and “persistent” cookies. Session cookies are temporary and are automatically deleted once you leave the Website. Persistent cookies remain on your computer hard drive until you delete them. We do not use cookies to gather information concerning your visits to other websites, nor ascertain any personally identifiable information about you apart from what you voluntarily provide us in your dealings with Fast Reports. Cookies do not, under ordinary circumstances, corrupt or damage your computer, programs, or computer files. In addition, the service providers we use to serve and host our advertisements, and/or deliver our e-mails use session and persistent cookies, to track the number of times the Website is accessed and whether the site was accessed from an advertisement. There are no cookies in the advertisements or e-mails. A cookie is placed on your computer only if and when you click on an advertisement or open the e-mail. The cookie generated from the advertisement or e-mail does not contain any personally identifiable information and will remain on your hard drive until you delete it. You may set your browser to block cookies (consult the instructions for your particular browser on how to do this), although doing so may adversely affect your ability to perform certain transactions, use certain functionality and access certain content on our Website. Web beacons are used in combination with cookies to help website operators understand how visitors interact with their websites. A web beacon is typically a transparent graphic image (usually 1 pixel x 1 pixel) that is placed on a site. As opposed to cookies, which are stored on a user’s computer hard drive, web beacons are embedded invisibly on Web pages and are about the size of the period at the end of this sentence. These web beacons are not tied to personally identifiable information. The use of a web beacons allows the site to measure the actions of the visitor opening the page that contains the web beacon. It makes it easier to follow and record the activities of a recognized browser, such as the path of pages visited at a website. Fast Reports uses the information provided by web beacons to develop a better understanding of how the Website’s visitors use the Website, and to facilitate those visitors' interactions with the Website. Fast Reports may make the aggregate data obtained from web analytics (including from our third-party analytics providers, if applicable) publicly available. If this data is made available, none of the information will be personally identifying information or potentially-personally identifying information. B. USE AND DISCLOSURE OF INFORMATION How Your Personal Information is Used Fast Reports collects information from you in order to record and support your participation in the activities provided by Fast Reports We may use your e-mail address to send a confirmation e-mail when you sign up for a User Account and, if necessary, may use other information you provide to contact you for help to process the purchase or service you have selected. Your personal information also may be used to keep you informed about new services, service upgrades, special offers, and other Services. As described above, Fast Reports may collect information about your use of the Website and Services. This information is collected in aggregate form, without identifying any user individually. Fast Reports may use this aggregate, non-identifying statistical data for statistical analysis, marketing, or similar promotional purposes. Fast Reports recognizes and appreciates the importance of responsible use of information collected on this Website. Without your consent, Fast Reports will not communicate any information to you regarding the Website, Services, or special offers available from Fast Reports or its affiliates, although we may find it necessary to communicate with you regarding your use of the Website, or Services in certain limited circumstances. Except in the particular circumstances described in this Privacy Policy, Fast Reports will not provide your name to other companies or organizations without your consent. Disclosure of Information to Third Parties Although we will always strive to guard your identity, we may disclose your personally identifiable information without your permission in limited circumstances. We will only do so if we have a good-faith belief that disclosure is reasonably necessary to (1) comply with laws, regulations, or government requests or (2) to investigate or protect against harmful activities to our guests, visitors, associates, or property (including the Website or Services), or to others. If we are required by law enforcement or judicial authorities to provide your personally identifiable information, we will only do so upon receipt of appropriate documentation. We may also disclose your information to investigate violation of and enforce our Terms of Service. Please know that we do not take this responsibility lightly. Your privacy is of paramount importance to us. Fast Reports does use the services of third parties, such as e-mail service providers, purchase, shipping and order processing merchants and marketing companies that act as independent contractors on behalf of Fast Reports. These parties are contractually prohibited from using personally identifiable information for any purpose other than for the purpose Fast Reports specifies. We do provide non-personally identifiable information to certain service providers for their use on an aggregated basis for the purpose of performing their contractual obligations to us. We prohibit the sale or transfer of personal information to entities outside of the Fast Reports’ affiliates for their use without your approval. Change of Control In the event that all or substantially all of Fast Reports’ stock and/or all or substantially all assets are transferred or sold to another entity, Fast Reports may transfer personally identifiable information to the acquiring entity. If, as a result of such a business transition, your personally identifiable information will be used in a materially different manner, you will be given choice consistent with our policy regarding notification of changes. Securing the Transmission and Storage of Information Fast Reports operates secure data networks protected by industry standard firewall and password protection systems. Our security and privacy policies are periodically reviewed and enhanced as necessary, and only authorized individuals have access to the information provided by our users. Fast Reports takes steps to ensure that your information is treated securely and in accordance with this Privacy Policy. Unfortunately, no data transmission over the Internet can be guaranteed secure. As a result, while we strive to protect your personal information, we cannot guarantee the security of any information you transmit to us or from the Website or Services. Your use of the Website and Services is at your own risk. We treat the information you provide to us as confidential information; it is, accordingly, subject to our company’s security procedures and corporate policies regarding protection and use of confidential information. After personally identifiable information reaches Fast Reports, it is stored on a server with physical and electronic security features as customary in the industry, including utilization of login/password procedures and electronic firewalls designed to block unauthorized access from outside of Fast Reports. Because laws applicable to personal information vary by country, our offices or other business operations may put in place additional measures that vary depending on the applicable legal requirements. Information collected on the sites covered by this Privacy Policy is processed and stored in the United States and possibly other jurisdictions and also in other countries where Fast Reports and its service providers conduct business. All Fast Reports employees are aware of our privacy and security policies. Your information is only accessible to those employees who need it in order to perform their jobs. C. CHOICES AVAILABLE TO YOU You can always choose whether or not to disclose personally identifiable information and that choice will not prevent you from using the Website. Please note, however, if you should choose to withhold requested information, we may not be able to provide you with some of the Services dependent upon the collection of this information and you will be given an opportunity to “opt-in” and make your preference choices for any items that are optional and which are not prerequisite for our rendering such Services. You can choose at any time to opt-out of receiving emails from Fast Reports by clicking the unsubscribe link at the bottom of any email you receive from Fast Reports or by contacting Fast Reports directly at  info@fast-report.com . If you elect to opt-out, we will not, as applicable, share your personal information with third parties or send you emails. However, we may continue to use your personal information for internal purposes, to enhance your user experience or as necessary to administer the site or comply with applicable law. We reserve the right to send a one-time registration confirmation email, and infrequent service alert messages to users to inform you of specific changes that may impact your ability to use a service that you have previously signed up for, regardless of email contact opt-in status. We also reserve the right to contact you if compelled to do so as part of a legal proceeding or if there has been a violation of any applicable licensing, warranty and purchase agreements. Fast Reports is retaining these rights because in limited cases we feel that we may need the right to contact you as a matter of law or regarding matters that will be important to you. These rights do not allow us to contact you to market a new or existing Service if you have asked us not to do so, and issuance of these types of communications is rare. If you wish to opt out of receiving emails, the sharing or retention of any personal identification information, or otherwise change your personal preferences, you must contact Fast Reports at  info@fast-report.com To ensure that your request is honored, you must provide Fast Reports with information sufficient for us to accurately identify and access your records. The information we require is your full name, address and the email address you provided to Fast Reports when you requested Services or Software. Fast Reports reserves the right to contact you to verify that we have accurately identified your record. D. RIGHTS OF EUROPEAN USERS UNDER THE GDPR Fast Reports complies with the principles of Regulation (EU) 2016/679 of the European Parliament and of the Council “ On the protection of natural persons with regard to the processing of personal data and on the free movement of such data, and repealing Directive 95/46/EC (General Data Protection Regulation)  (“GDPR”). If you are a natural person (“Qualified Individual”) of the European Union within the meaning of the GDPR, you are afforded certain additional rights by the GDPR as further described within this section. Data Controller When and if Fast Reports receives your personal information directly from you through its Website, it performs the functions of a Data Controller, as defined by the GDPR, and has the ability to determine how personal data is collected, for what purposes, and how this data is to be processed. As the controller, Fast Reports has implemented many technical and operational measures to ensure the most complete protection of personal data processed through its Website, and Services. Contact information for the Data Protection Officer can be found below. Data Processor Fast Reports processes your data in accordance with this Privacy Policy. Fast Reports uses industry standard safe guards to secure your information. Consent If you are a Qualified Individual, consents concerning your personal information are handled in compliance with the GDPR. Where and if consent requirements under this Privacy Policy conflict with the GDPR, the GDPR prevails if the regulation applies to you. Legal Basis for Processing Art. 6(1) a. of the GDPR serves as the legal basis for processing operations for which we obtain consent for a processing purpose. If the processing of personal data is necessary for the performance of a contract to which you are a party, as is the case, for example, when processing operations are necessary to provide a service, the processing is based on Article 6(1) b. The same applies to such processing operations which are necessary for carrying out pre-contractual measures, for example in the case of inquiries concerning our products or services. If our company is subject to a legal obligation by which processing of personal data is required, such as for the fulfillment of tax obligations, the processing is based on Art. 6(1) c. If the processing of personal data may be necessary to protect your vital interests or of another natural person, then the processing is based on Art. 6(1) d. Finally, processing operations could be based on Article 6(1) f., if processing is necessary for the purposes of the legitimate interests pursued by our company or by a third party, except where such interests are overridden by your fundamental rights and freedoms under the GDPR. GDPR Rights: 1. Right of Confirmation You may obtain confirmation of whether or not your personal data is being processed. If you wish to exercise your right of confirmation, you may contact Fast Reports and/or its Data Protection Officer. 2. Right of Access You may obtain from information about your stored personal data at any time and a copy of this information. If you wish to exercise your right of access, you may contact Fast Reports, and/or its respective Data Protection Officer. 3. Right to Rectification You may request the rectification of inaccurate personal data. Taking into account the purposes of the processing, you have the right to have incomplete personal data completed, by means of providing a supplementary statement. If you wish to exercise your right of rectification, you may contact Fast Reports and/or its respective Data Protection Officer. 4. Right to Erasure (Right to be Forgotten) You may request the erasure of your personal information by contacting Fast Reports and/or its respective Data Protection Officer. Furthermore, you may delete your User Account information by accessing your User Account settings page on the Applications. Please note that while any changes you make will be reflected in active user databases within a reasonable time, we may retain all information you submit for the prevention of fraud and abuse, analytics, satisfaction of legal obligations, or where we otherwise reasonably believe that we have a legitimate reason to do so, such as for archiving purposes within the public interest. 5. Right of Restriction of Processing You have the right to restrict processing where one of the following applies: The accuracy of the personal data is contested by the data subject, for a period enabling the Controller to verify the accuracy of the personal data. The processing is unlawful and the data subject opposes the erasure of the personal data and requests instead the restriction of their use instead. The controller no longer needs the personal data for the purposes of the processing, but they are required by the data subject for the establishment, exercise or defense of legal claims. The data subject has objected to processing pending the verification whether the legitimate grounds of the controller override those of the data subject. 6. Right to Data Portability You may request to receive your personal data in a structured, commonly used and machine-readable format. You have the right to transmit this data to another controller without interference. Furthermore, you may have the personal data transmitted directly from one controller to another, where technically feasible and does not adversely affect the rights and freedoms of others. 7. Right to Object to Automated Decision Making You may object to decisions based solely on automated processing, including profiling, which produces legal effects or similarly significantly affects you, as long as the decision is not is necessary for entering into, or performance of, a contract between you and Fast Reports; or is not authorized by European Union or Member State law to which you are subject; or is not based on the data subject’s explicit consent. 8. Right to Objection to Processing You may object to the processing of your personal data, unless there are legitimate grounds for the processing within the public interest, or for the establishment, exercise or defense of legal claims. If Fast Reports processes personal data for direct marketing purposes, you shall have the right to object at any time to the processing of your personal data for such marketing. This applies to profiling to the extent that it is related to such direct marketing. If you object to Fast Reports to the processing for direct marketing purposes, then we will no longer process the personal data for these purposes. Retention Policy We only retain the personally identifiable information about you for as long as your User Account remains active or for a limited period of time as long as we need it to provide you with services or otherwise fulfill the purposes for which we have initially collected it, unless otherwise required by law. We will retain and use information as necessary to comply with our legal obligations, archival purposes, resolve disputes, and enforce our agreements. Cross Border Data Transfers If and when sharing of information involves cross-border data transfers, for instance to the United States of America and other jurisdictions. Where the Applications allow for users to be located in the European Union, their personal information is transferred to countries outside of the EU. We use EU Standard Contract Clauses or other suitable safeguards to permit data transfers from the EU to other countries. The Standard Contractual Clauses commit companies transferring and receiving your personal information to protecting the privacy and security of your data. E. PRIVACY RELATED INQUIRIES AND COMPLAINTS Fast Reports takes and addresses its users’ privacy concerns with utmost respect and attention. If you believe that there was an instance of non-compliance with this Privacy Policy with regard to your personal information or you have other related inquiries or concerns, you may write or contact Fast Reports at email:  info@fast-report.com In your message, please describe in as much detail as possible the nature of your inquiry or the ways in which you believe that the Fast Reports Online Privacy Policy has not been complied with. We will investigate your inquiry or complaint promptly. If you are a Qualified Individual, you may lodge a complaint with the data protection supervisory authority in the country where you live if you are unsatisfied with how your complaint is handled by Fast Reports. Please note that if you provide Fast Reports with inconsistent privacy preferences (for example, by indicating on one occasion that third parties may contact you with marketing offers and indicating on another occasion that they may not), Fast Reports cannot guarantee that your most recent privacy preference will be honored. Copyright © 2021 Fast Reports Inc. All rights reserved. The Website, Services, and all documentation are the copyrighted property of Fast Reports Inc. and/or its licensors and protected by copyright laws and international intellectual property treaties. FastReport® and related logo, and all related Product and service names, design marks and slogans are the trademarks and/or registered trademarks of Fast Reports Inc. and/or its affiliates. All other product and service marks contained herein are the trademarks of their respective owners. Any use of the Fast Reports Inc. or third-party trademarks or logos without the prior written consent of Fast Reports Inc. or the applicable trademark owner is strictly prohibited. ### Privacy Policy Statement URL: https://www.fast-report.com/privacy Summary: PLEASE READ THIS DOCUMENT CAREFULLY. IT CONTAINS IMPORTANT INFORMATION THAT YOU SHOULD KNOW BEFORE USING THE WEBSITE OR SERVICES. PLEASE READ THIS DOCUMENT CAREFULLY. IT CONTAINS IMPORTANT INFORMATION THAT YOU SHOULD KNOW BEFORE USING THE WEBSITE OR SERVICES. PLEASE READ THIS DOCUMENT CAREFULLY.  IT CONTAINS IMPORTANT INFORMATION THAT YOU SHOULD KNOW BEFORE USING THE WEBSITE OR SERVICES.  BY USING THE WEBSITE OR SERVICES, YOU WILL BE DEEMED TO HAVE ACCEPTED FAST REPORTS’ PRIVACY POLICY.   Your use of the Website and Services (as each of these terms are defined in this Privacy Policy), including any dispute concerning privacy, is subject to this Privacy Policy. By using the Website or Services, you accept the practices set forth in this Privacy Policy and the Terms of Service. Fast Reports Inc. reserves the right to modify this Privacy Policy at any time by posting such changes on this page. Please check the revision date below to determine if this Privacy Policy has been modified since you last reviewed it.  Your continued use of any portion of the Website or Services following posting of the updated Privacy Policy will constitute your acceptance of the changes.  This privacy statement was last updated on June 25, 2018. Fast Reports Inc. and its affiliates (collectively, “Fast Reports” ) have created this privacy statement in order to disclose its information gathering and dissemination practices for its website located at https://www.fast-report.com/en/ ( “Website” ) and the services offered and provided through the Website ( “Services” ). Table of Contents  Background Information Word from Fast Reports A.  Information We Collect Information We Collect Through the Website User Content Providing Information to Fast Reports User Account Third Party Websites Third Party Applications Information Relating to Children California Online Privacy Protection Act Notice Cookies and Web Beacons B.  Use and Disclosure of Information How your Information is Used Disclosure of Information to Third Parties Change in Control Disclosure of Information to Other Users Securing the Transmission and Storage and Storage of Information C.  Choices Available to You D.  Rights of European Users under the GDPR Data Controller Data Processor Consent Legal Basis for Processing  GDPR Rights: Right of Confirmation Right of Access Right to Rectification Right to Erasure Right of Restriction of Processing Right of Data Portability Right to Objection to Automated Decision Making Right to Objection Processing Retention Policy  Cross Border Data Transfers Data Protection Officer E.  Privacy-Related Inquiries and Complaints Background Information  Upon reading this Privacy Policy, you will be informed of the following:  description of the types of personally identifiable information (yours and that of third parties) collected through the Website and Services; how the collected personally identifiable information is used; with whom the collected personally identifiable information may be shared; the choices available to you regarding the collection, use, and distribution of such information; security procedures that are in place to protect against the loss, misuse, or alteration of personally identifiable information under Fast Reports’ control; and  instructions how you can access and correct inaccuracies in the information collected about you. A note about the Website and Services:  some of our Services, data centers, service providers, affiliates or operating partners and servers may be located in other countries.  As such, the Website and Services may be subject to the laws of numerous countries and jurisdictions, some of which may require us to disclose certain information about our users.  We are committed to keeping your information private, while still complying with all applicable laws in jurisdiction in which we operate. Should you have any concerns or believe that there are problems or issues relating to compliance with the policies outlined in this Privacy Policy, please notify us by e-mail at: info@fast-report.com A Word from Fast Reports Fast Reports has a strong commitment to providing superior service to all of our customers and visitors and particularly respecting their concerns about privacy. We understand that you may have questions about how the Website and Services collect and use your information.  Accordingly, we prepared this statement to inform you of the privacy principles that govern the Website and Services (the “Privacy Policy” ).  We will not sell or rent your personally identifiable information or a list of our customers to third parties.  However, as described in more detail below, there are limited circumstances in which some of your information may be shared with third parties, under strict restrictions, so it is important for you to review this Privacy Policy.  This Privacy Policy contains numerous general and technical details about the steps we take to respect your privacy.  We have organized this Privacy Policy by major processes and areas so that you can quickly link to the information of most interest to you.  The bottom line is that meeting your needs and expectations forms the foundation of everything we do, including protecting your privacy. Changes in Privacy Policy We want you to always be aware of what personal and other information we collect, how we use that information, and under what circumstances we may disclose it.  All personal information that we collect will be handled according to the Privacy Policy in effect at the time the information is collected.  If the Privacy Policy changes in any significant respect in the meantime, we will not (without your permission) use your personal data in a manner that is inconsistent with the Privacy Policy in effect at the time your information was collected.   From time to time, we may find the need to make changes to this Privacy Policy.  This Privacy Policy may be amended by Fast Reports upon notice given through the Website or via e-mail.  Please check the Privacy Policy published on this Website regularly to ensure that you are aware of all terms governing your use of this Website.  A. INFORMATION WE COLLECT Information We Collect Through the Website This Website does not collect personally identifiable information from your computer when you browse the Website and request pages from our servers.  This means that, unless you voluntarily and knowingly provide us with personally identifiable information, we will not know your name, your e-mail address, or any other personally identifiable information.   When you request a page from our Website, our servers log the information provided in the HTTP request header, JavaScript or similar technical tools, including the IP number, the time of the request, the URL of your request and other information.  We collect this information in order to make our Website function correctly and provide you the functionality that you see on the Website, as our servers use this information to deliver to you the pages on this Website. We also use this information to better understand how visitors use our Website and how we can better tune our Website, its contents, and functionality to meet your needs.  However, this information is not associated with any personally identifiable information of persons browsing the Website. When you use the Website, Fast Reports or trusted third parties authorized by Fast Reports may also collect certain technical and routing information about your computer (also known as environmental variables) to facilitate your use of the Website and the Services enabled thereby.  When you browse the Internet, your Internet browser (such as Mozilla Firefox, Google Chrome, or Microsoft Internet Explorer) automatically transmits some information to Fast Reports every time you access content on one of our internet domains.  Examples of such information include the URL of the particular Web page you visited, the IP (Internet Protocol) address of the computer you are using, or the browser version that you are using to access the Website.  All of this information may be collected by Fast Reports and used to help improve our offerings to you. User Content User Account holders may be permitted to upload certain content onto the Website and Services ( “User Content” ).  This information shall be private and, except in accordance with this Privacy Policy, will not be disclosed to third parties without your prior permission.   Providing Your Information to Fast Reports You never have to provide personally identifiable information to Fast Reports.  However, should you choose to withhold certain required information, Fast Reports may not be able to provide you with some or all of the Services.  Some of the information we ask you to provide may be identified as mandatory or optional.  If you do not provide the mandatory information with respect to a particular activity, you may not be able to engage in that activity or make such a purchase.  Fast Reports will inform you of the mandatory or optional nature of the requested or required information. Fast Reports is the sole owner of the information it gathers on the Website and Services.  Fast Reports will only share your information with outside parties in ways that are described in this privacy statement or if we are required to do so by law or in the good-faith belief that such action is necessary in order to conform to the edicts of the law, cooperate with law enforcement agencies, or comply with a legal process served on us and otherwise to comply with any current or future laws and regulations applicable to Fast Reports.  You may be provided an opportunity on the Website to allow Fast Reports to contact you from time to time regarding company news and product or Services updates.  In order to do so, you may be required to provide certain personally identifiable information to Fast Reports.  Fast Reports will treat this information in accordance with the policies set forth in this Privacy Policy. When you submit personal information to Fast Reports through the Website, you understand and agree that this information may be transferred across national boundaries and may be stored and processed in any of the countries in which Fast Reports and its affiliates and subsidiaries maintain offices.  You also acknowledge that in certain countries or with respect to certain activities, the collection, transferring, storage, and processing of your information may be undertaken by trusted vendors of Fast Reports.  Such vendors are bound by contract not to use your personal information for their own purposes or provide it to any third parties. Fast Reports may establish relationships with various service providers whose services may become available to you from the Website or from other websites that are linked to the Website.  Typically, these providers would offer services that Fast Reports customers might find useful, such as those that can be used in conjunction with the Website and Services.  In order to use these services, you may be required to provide personal information to the services providers.  Unless expressly provided to the contrary, personal information that you provide while you are visiting a provider's website will be subject to the privacy policy posted on such site, and personal information that you provide while on the Website in conjunction with a provider’s service will be subject to this Privacy Policy.  For instance, credit card information entered as part of the filling out the purchase form or registration process is collected by the third-parties registration services and subject to their respective privacy policies.  You should be aware that our agreements with these service providers often provide that they will share with Fast Reports personal information collected from you.  In such instances, Fast Reports may use this information in a manner consistent with this Privacy Policy.  User Account When registering for a User Account or otherwise contacting Fast Reports in connection with your interest in purchasing Fast Reports products or services, Fast Reports may ask you to provide certain information.  Such information may include your name, e-mail, and other personally identifiable information.  It is completely optional for you to register for a User Account or engage in activities requiring a User Account or provide any personal identifiable information. However, certain information and proper identification may be required in order for you to engage in a business relationship with Fast Reports.  Once you create a User Account, you will be deemed a Registered User. You may also request to change information associated with you User Account by contacting us at info@fast-report.com . If you wish to deactivate your User Account, you may contact us at info@fast-report.com .  When you deactivate your personal account, all information stored and maintained as part of your account may be retained for archival, backup and record purposes. Third Party Websites The Website may contain links to websites owned and operated by third parties.  These links are presented for your convenience and information. Fast Reports does not control these third-party websites and is not responsible for their privacy practices or content. Fast Reports does not control the information collection and distribution policies on such websites other than those that are under the control of Fast Reports itself.  Content on third party websites may not reflect products, services, and/or information provided by Fast Reports.  Third parties may also set their own cookies and/or use web beacons, which may be used to identify some of your preferences or to recognize you if you have previously had contact these third parties. Fast Reports does not control the use of such technology by third parties, the information they collect, or how they use such information.  You should direct all concerns regarding any third-party website to the site administrator or webmaster of such website. Third Party Applications Fast Reports may make third party applications available to you through the Website or Services.  The information collected by Fast Reports when you enable a third-party application is processed under this Privacy Policy.  Information collected by the third-party application provider is governed by the provider’s privacy policies. Information Relating to Children The Children's Online Privacy Protection Act (COPPA) was passed by the U.S. Congress in November 1998. COPPA provides parents with specific rights regarding their children's privacy. For additional information and resources on COPPA, please visit the Federal Trade Commission Web site at https://www.ftc.gov/ . The Fast Reports Website and any Software or Services available on that site are not directed at children under 13 years of age and, therefore, COPPA does not apply.  However, we recognize that children under the age of 13 may potentially access this Website and subscribe to the newsletter, purchase Software and Services, or download software programs.  The collection of information is covered above.  Parents and Legal Guardians may request from us to review, delete or stop the collection of the personally identifiable information of their child.  You may do so by contacting us by email at: info@fast-report.com . California Online Privacy Protection Act Notice Fast Reports does not track users over time and across third party websites to provide targeted advertising and therefore does use do not track (DNT) signals. However, some third-party sites may keep track of your browsing activities when they serve you content, which enables them to tailor what they present to you. If you are visiting such sites, your web browser may allow you to set the DNT signal on your browser so that third parties (particularly advertisers) know you do not want to be tracked.  Fast Reports does not authorize the collection of personally identifiable information by third parties and third parties cannot collect this information unless you provide it to them directly. Cookies and Web Beacons The Website uses “cookie” and “web beacon” technology.  “Cookies” are short pieces of data generated by a web server that a website stores on a user’s computer.  Certain pages on our Website may require the use of a cookie for purposes of keeping information you enter on multiple pages together.  Cookies also enable us to customize our Website and offerings to your needs and provide you with a better online experience with us.  In addition, cookies are used to:   measure usage of various pages on our Website to help us make our information; more pertinent to your needs and easy for you to access;  identify and categorized the internet webpages from which the visitor came to the Website and observe the browsing patterns; and  provide functionality such as online orders, Fast Reports services and other functionality that we believe would be of interest and value to you.  The types of cookies that we use are referred to as “session” cookies and “persistent” cookies.  Session cookies are temporary and are automatically deleted once you leave the Website.  Persistent cookies remain on your computer hard drive until you delete them.  We do not use cookies to gather information concerning your visits to other websites, nor ascertain any personally identifiable information about you apart from what you voluntarily provide us in your dealings with Fast Reports.  Cookies do not, under ordinary circumstances, corrupt or damage your computer, programs, or computer files. In addition, the service providers we use to serve and host our advertisements, and/or deliver our e-mails use session and persistent cookies, to track the number of times the Website is accessed and whether the site was accessed from an advertisement.  There are no cookies in the advertisements or e-mails.  A cookie is placed on your computer only if and when you click on an advertisement or open the e-mail.  The cookie generated from the advertisement or e-mail does not contain any personally identifiable information and will remain on your hard drive until you delete it.  You may set your browser to block cookies (consult the instructions for your particular browser on how to do this), although doing so may adversely affect your ability to perform certain transactions, use certain functionality and access certain content on our Website.   Web beacons are used in combination with cookies to help website operators understand how visitors interact with their websites. A web beacon is typically a transparent graphic image (usually 1 pixel x 1 pixel) that is placed on a site. As opposed to cookies, which are stored on a user’s computer hard drive, web beacons are embedded invisibly on Web pages and are about the size of the period at the end of this sentence. These web beacons are not tied to personally identifiable information. The use of a web beacons allows the site to measure the actions of the visitor opening the page that contains the web beacon. It makes it easier to follow and record the activities of a recognized browser, such as the path of pages visited at a website.  Fast Reports uses the information provided by web beacons to develop a better understanding of how the Website’s visitors use the Website, and to facilitate those visitors' interactions with the Website. Fast Reports may make the aggregate data obtained from web analytics (including from our third-party analytics providers, if applicable) publicly available. If this data is made available, none of the information will be personally identifying information or potentially-personally identifying information. B. USE AND DISCLOSURE OF INFORMATION How Your Personal Information is Used Fast Reports collects information from you in order to record and support your participation in the activities provided by Fast Reports We may use your e-mail address to send a confirmation e-mail when you sign up for a User Account and, if necessary, may use other information you provide to contact you for help to process the purchase or service you have selected.  Your personal information also may be used to keep you informed about new services, service upgrades, special offers, and other Services. As described above, Fast Reports may collect information about your use of the Website and Services.  This information is collected in aggregate form, without identifying any user individually. Fast Reports may use this aggregate, non-identifying statistical data for statistical analysis, marketing, or similar promotional purposes. Fast Reports recognizes and appreciates the importance of responsible use of information collected on this Website.  Without your consent, Fast Reports will not communicate any information to you regarding the Website, Services, or special offers available from Fast Reports or its affiliates, although we may find it necessary to communicate with you regarding your use of the Website, or Services in certain limited circumstances.  Except in the particular circumstances described in this Privacy Policy, Fast Reports will not provide your name to other companies or organizations without your consent. Disclosure of Information to Third Parties Although we will always strive to guard your identity, we may disclose your personally identifiable information without your permission in limited circumstances.  We will only do so if we have a good-faith belief that disclosure is reasonably necessary to (1) comply with laws, regulations, or government requests or (2) to investigate or protect against harmful activities to our guests, visitors, associates, or property (including the Website or Services), or to others.  If we are required by law enforcement or judicial authorities to provide your personally identifiable information, we will only do so upon receipt of appropriate documentation.  We may also disclose your information to investigate violation of and enforce our Terms of Service.  Please know that we do not take this responsibility lightly.  Your privacy is of paramount importance to us. Fast Reports does use the services of third parties, such as e-mail service providers, purchase, shipping and order processing merchants and marketing companies that act as independent contractors on behalf of Fast Reports. These parties are contractually prohibited from using personally identifiable information for any purpose other than for the purpose Fast Reports specifies.  We do provide non-personally identifiable information to certain service providers for their use on an aggregated basis for the purpose of performing their contractual obligations to us.  We prohibit the sale or transfer of personal information to entities outside of the Fast Reports’ affiliates for their use without your approval. Change of Control In the event that all or substantially all of Fast Reports’ stock and/or all or substantially all assets are transferred or sold to another entity, Fast Reports may transfer personally identifiable information to the acquiring entity.  If, as a result of such a business transition, your personally identifiable information will be used in a materially different manner, you will be given choice consistent with our policy regarding notification of changes. Securing the Transmission and Storage of Information Fast Reports operates secure data networks protected by industry standard firewall and password protection systems.  Our security and privacy policies are periodically reviewed and enhanced as necessary, and only authorized individuals have access to the information provided by our users.  Fast Reports takes steps to ensure that your information is treated securely and in accordance with this Privacy Policy. Unfortunately, no data transmission over the Internet can be guaranteed secure.  As a result, while we strive to protect your personal information, we cannot guarantee the security of any information you transmit to us or from the Website or Services.  Your use of the Website and Services is at your own risk. We treat the information you provide to us as confidential information; it is, accordingly, subject to our company’s security procedures and corporate policies regarding protection and use of confidential information. After personally identifiable information reaches Fast Reports, it is stored on a server with physical and electronic security features as customary in the industry, including utilization of login/password procedures and electronic firewalls designed to block unauthorized access from outside of Fast Reports. Because laws applicable to personal information vary by country, our offices or other business operations may put in place additional measures that vary depending on the applicable legal requirements.  Information collected on the sites covered by this Privacy Policy is processed and stored in the United States and possibly other jurisdictions and also in other countries where Fast Reports and its service providers conduct business.  All Fast Reports employees are aware of our privacy and security policies.  Your information is only accessible to those employees who need it in order to perform their jobs. C. CHOICES AVAILABLE TO YOU You can always choose whether or not to disclose personally identifiable information and that choice will not prevent you from using the Website. Please note, however, if you should choose to withhold requested information, we may not be able to provide you with some of the Services dependent upon the collection of this information and you will be given an opportunity to “opt-in” and make your preference choices for any items that are optional and which are not prerequisite for our rendering such Services.   You can choose at any time to opt-out of receiving emails from Fast Reports by clicking the unsubscribe link at the bottom of any email you receive from Fast Reports or by contacting Fast Reports directly at info@fast-report.com .  If you elect to opt-out, we will not, as applicable, share your personal information with third parties or send you emails.  However, we may continue to use your personal information for internal purposes, to enhance your user experience or as necessary to administer the site or comply with applicable law.  We reserve the right to send a one-time registration confirmation email, and infrequent service alert messages to users to inform you of specific changes that may impact your ability to use a service that you have previously signed up for, regardless of email contact opt-in status.  We also reserve the right to contact you if compelled to do so as part of a legal proceeding or if there has been a violation of any applicable licensing, warranty and purchase agreements. Fast Reports is retaining these rights because in limited cases we feel that we may need the right to contact you as a matter of law or regarding matters that will be important to you. These rights do not allow us to contact you to market a new or existing Service if you have asked us not to do so, and issuance of these types of communications is rare.  If you wish to opt out of receiving emails, the sharing or retention of any personal identification information, or otherwise change your personal preferences, you must contact Fast Reports at info@fast-report.com To ensure that your request is honored, you must provide Fast Reports with information sufficient for us to accurately identify and access your records.  The information we require is your full name, address and the email address you provided to Fast Reports when you requested Services or Software.   Fast Reports reserves the right to contact you to verify that we have accurately identified your record. D. RIGHTS OF EUROPEAN USERS UNDER THE GDPR Fast Reports complies with the principles of Regulation (EU) 2016/679 of the European Parliament and of the Council “ On the protection of natural persons with regard to the processing of personal data and on the free movement of such data, and repealing Directive 95/46/EC (General Data Protection Regulation) ( “GDPR” ).  If you are a natural person (“ Qualified Individual” ) of the European Union within the meaning of the GDPR, you are afforded certain additional rights by the GDPR as further described within this section.  Data Controller  When and if Fast Reports receives your personal information directly from you through its Website, it performs the functions of a Data Controller, as defined by the GDPR, and has the ability to determine how personal data is collected, for what purposes, and how this data is to be processed.  As the controller, Fast Reports has implemented many technical and operational measures to ensure the most complete protection of personal data processed through its Website, and Services.  Contact information for the Data Protection Officer can be found below.  Data Processor  Fast Reports processes your data in accordance with this Privacy Policy.  Fast Reports uses industry standard safe guards to secure your information.  Consent If you are a Qualified Individual, consents concerning your personal information are handled in compliance with the GDPR.  Where and if consent requirements under this Privacy Policy conflict with the GDPR, the GDPR prevails if the regulation applies to you.  Legal Basis for Processing Art. 6(1) a. of the GDPR serves as the legal basis for processing operations for which we obtain consent for a processing purpose.  If the processing of personal data is necessary for the performance of a contract to which you are a party, as is the case, for example, when processing operations are necessary to provide a service, the processing is based on Article 6(1) b.  The same applies to such processing operations which are necessary for carrying out pre-contractual measures, for example in the case of inquiries concerning our products or services. If our company is subject to a legal obligation by which processing of personal data is required, such as for the fulfillment of tax obligations, the processing is based on Art. 6(1) c.  If the processing of personal data may be necessary to protect your vital interests or of another natural person, then the processing is based on Art. 6(1) d.  Finally, processing operations could be based on Article 6(1) f., if processing is necessary for the purposes of the legitimate interests pursued by our company or by a third party, except where such interests are overridden by your fundamental rights and freedoms under the GDPR.  GDPR Rights:  1. Right of Confirmation You may obtain confirmation of whether or not your personal data is being processed.  If you wish to exercise your right of confirmation, you may contact Fast Reports and/or its Data Protection Officer. 2. Right of Access You may obtain from information about your stored personal data at any time and a copy of this information.  If you wish to exercise your right of access, you may contact Fast Reports, and/or its respective Data Protection Officer. 3. Right to Rectification You may request the rectification of inaccurate personal data. Taking into account the purposes of the processing, you have the right to have incomplete personal data completed, by means of providing a supplementary statement.  If you wish to exercise your right of rectification, you may contact Fast Reports and/or its respective Data Protection Officer. 4. Right to Erasure (Right to be Forgotten) You may request the erasure of your personal information by contacting Fast Reports and/or its respective Data Protection Officer. Furthermore, you may delete your User Account information by accessing your User Account settings page on the Applications.  Please note that while any changes you make will be reflected in active user databases within a reasonable time, we may retain all information you submit for the prevention of fraud and abuse, analytics, satisfaction of legal obligations, or where we otherwise reasonably believe that we have a legitimate reason to do so, such as for archiving purposes within the public interest. 5. Right of Restriction of Processing You have the right to restrict processing where one of the following applies: The accuracy of the personal data is contested by the data subject, for a period enabling the Controller to verify the accuracy of the personal data. The processing is unlawful and the data subject opposes the erasure of the personal data and requests instead the restriction of their use instead. The controller no longer needs the personal data for the purposes of the processing, but they are required by the data subject for the establishment, exercise or defense of legal claims. The data subject has objected to processing pending the verification whether the legitimate grounds of the controller override those of the data subject. 6. Right to Data Portability You may request to receive your personal data in a structured, commonly used and machine-readable format.  You have the right to transmit this data to another controller without interference. Furthermore, you may have the personal data transmitted directly from one controller to another, where technically feasible and does not adversely affect the rights and freedoms of others. 7. Right to Object to Automated Decision Making  You may object to decisions based solely on automated processing, including profiling, which produces legal effects or similarly significantly affects you, as long as the decision is not is necessary for entering into, or performance of, a contract between you and Fast Reports; or is not authorized by European Union or Member State law to which you are subject; or is not based on the data subject’s explicit consent. 8. Right to Objection to Processing  You may object to the processing of your personal data, unless there are legitimate grounds for the processing within the public interest, or for the establishment, exercise or defense of legal claims. If Fast Reports processes personal data for direct marketing purposes, you shall have the right to object at any time to the processing of your personal data for such marketing.  This applies to profiling to the extent that it is related to such direct marketing.  If you object to Fast Reports to the processing for direct marketing purposes, then we will no longer process the personal data for these purposes. Retention Policy We only retain the personally identifiable information about you for as long as your User Account remains active or for a limited period of time as long as we need it to provide you with services or otherwise fulfill the purposes for which we have initially collected it, unless otherwise required by law.  We will retain and use information as necessary to comply with our legal obligations, archival purposes, resolve disputes, and enforce our agreements. Cross Border Data Transfers If and when sharing of information involves cross-border data transfers, for instance to the United States of America and other jurisdictions.  Where the Applications allow for users to be located in the European Union, their personal information is transferred to countries outside of the EU.  We use EU Standard Contract Clauses or other suitable safeguards to permit data transfers from the EU to other countries.  The Standard Contractual Clauses commit companies transferring and receiving your personal information to protecting the privacy and security of your data. E. PRIVACY RELATED INQUIRIES AND COMPLAINTS Fast Reports takes and addresses its users’ privacy concerns with utmost respect and attention.  If you believe that there was an instance of non-compliance with this Privacy Policy with regard to your personal information or you have other related inquiries or concerns, you may write or contact Fast Reports at email: info@fast-report.com In your message, please describe in as much detail as possible the nature of your inquiry or the ways in which you believe that the Fast Reports Online Privacy Policy has not been complied with.  We will investigate your inquiry or complaint promptly.  If you are a Qualified Individual, you may lodge a complaint with the data protection supervisory authority in the country where you live if you are unsatisfied with how your complaint is handled by Fast Reports.  Please note that if you provide Fast Reports with inconsistent privacy preferences (for example, by indicating on one occasion that third parties may contact you with marketing offers and indicating on another occasion that they may not), Fast Reports cannot guarantee that your most recent privacy preference will be honored. Copyright © 2026 Fast Reports Inc. All rights reserved.  The Website, Services, and all documentation are the copyrighted property of Fast Reports Inc. and/or its licensors and protected by copyright laws and international intellectual property treaties.  FastReport® and related logo, and all related Product and service names, design marks and slogans are the trademarks and/or registered trademarks of Fast Reports Inc. and/or its affiliates.  All other product and service marks contained herein are the trademarks of their respective owners.  Any use of the Fast Reports Inc. or third-party trademarks or logos without the prior written consent of Fast Reports Inc. or the applicable trademark owner is strictly prohibited. ### Proud to hire with Jooble! URL: https://www.fast-report.com/news/hiring-with-jooble Summary: Proud to hire with Jooble! Proud to hire with Jooble! Knowing FastReport and being able to work with reporting and DB is an essential skill on the job market for business software developers. We are determined to ensure that using FastReport solutions will always guarantee finding a job easily. The quintessential purpose of Jooble is to connect those who seek jobs with those who offer it. Being "Google" in a job search industry Jooble manages to aggregate all the vacancies from open sources into one compact user-friendly interface that gives access to jobs that are not yet listed on popular platforms or hidden behind the corporate websites. Another important thing is that Jooble does not claim jobs for its own. It is necessary to go to employers' website in order to apply which is crucial for driving additional traffic and reducing hiring process time. Jooble's initiative to help people find jobs all over the world fits well with our own aim to bring reporting to another level. Thus we are glad to announce our partnership with Jooble to help increase awareness about this area of programming and boost the quality level of specialists looking for data visualisation jobs . ### Publisher — the Ideal Solution for Small and Medium-Sized Businesses URL: https://www.fast-report.com/blogs/publisher-solution-for-business Summary: In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. The FastReport product line for creating, storing, and transmitting documents has been expanded with a new development. Since May 2025, it includes products such as Cloud, Corporate Server, and Publisher. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. The FastReport product line for creating, storing, and transmitting documents has been expanded with a new development. Since May 2025, it includes products such as Cloud, Corporate Server, and Publisher. In this article, we will take a detailed look at how these services help address different user needs so that you can choose the solution that best fits your requirements. FastReport Cloud It provides a set of services for creating various documents and reports from text templates and data sources (Postgres, MS SQL, Firebird, XML, CSV, and others) for further processing. It is offered as SaaS, meaning users do not need to worry about allocating computing resources, deploying the solution, or ongoing maintenance. Simply obtain a workspace and focus on more important tasks—creating reports for your business. You can integrate FastReport Cloud into your applications or services regardless of the programming language used in development. It can be connected from projects written in languages such as C#, Java, Kotlin, PHP, JavaScript, Angular, Python, Go, C++, and more. You can get the free version and start using Cloud at this link. However, many large companies prefer to have full control over all processes and require installing a reporting server on their own infrastructure. This is due to security requirements, data storage, and a large number of end users (or integration into their own solutions). In such cases, the right choice is to use the Corporate Server. FastReport Corporate Server This is a scalable dedicated server for generating and storing documents. It supports collaborative work: you can add multiple users, and each will have access to the workspace, templates, reports, data sources, and other resources. The permissions system of the Corporate Server allows setting different access levels for team members or groups. While one group of users creates new document templates, another group builds reports from these templates in PDF format. All the tools for secure operation are integrated into FastReport Corporate Server: private file creation and storage, protected login, access management, and authentication via OpenID. At the same time, the entire infrastructure is hosted within the client’s environment. You get flexible control over document and report generation in accordance with your company's security policies. With extended support, our specialists will help you quickly and effectively configure and fully deploy FastReport Corporate Server within your system. You will be able to start generating reports in no time! We also offer assistance in restoring functionality after any failures. Leave your details through this link , and our manager will contact you to discuss a personalized solution tailored to your business needs. If the requirement to deploy all software solutions within your own environment remains, but the number of users is low, and creating a cluster for processing a large volume of documents is not needed, then you might consider the third option — Publisher. FastReport Publisher It consists of a web interface for working with reports, an online designer, and the core functionality of FastReport. Publisher can be integrated with other enterprise systems (CRM or ERP) for automatic report generation and distribution. You will also have access rights management features. This makes Publisher a useful tool for organizations that need a centralized report management system through a single interface. You can get a trial version on this page , and our manager will provide you with all necessary access. What is the difference between Publisher and Corporate Server? FastReport Publisher is a lighter and more budget-friendly version of the Corporate Server, retaining the most essential features and offering the ability to seamlessly upgrade to the higher-tier product if needed. The differences between Publisher and Corporate Server are outlined in the table available at this link. Additionally, Publisher is easier to install and does not require knowledge of orchestrators (such as Kubernetes). The installation package includes a Setup Wizard, which guides you step-by-step through the configuration process, and with the click of a button, you can launch the solution in a Docker Compose environment. Publisher Corporate Server Cost from $1,990 from $9,650 Deployment with Docker Yes Yes Web Interface Yes Yes REST Interface (Web API) Yes Yes Ability to create and view reports Yes Yes Online Designer (ability to use the designer within the web interface) Yes Yes Connectivity via Desktop Designer Yes Yes Scheduler for scheduled task execution No Yes Share reports via link No Yes Deployment in Kubernetes No Yes Scalability (the system’s ability to handle increased workload when resources are added) No Yes OpenID Authentication No Yes User Groups (access and permission management) Yes* Yes Number of Workspaces 1 2 (additional purchases possible) Number of Data Sources 3 Potentially unlimited quantity   Number of Users 15 Unlimited quantity Number of Administrators 1 3 (additional purchases possible) *Only pre-installed groups are available: Owner, All Users, and Anonymous Users. Creating new groups is not allowed. You can find detailed instructions for using these products in our documentation. Conclusion FastReport offers ready-to-use services, client-server systems, and applications for quick data visualization and automated data processing tasks. You can choose the solution that best fits your business needs — whether it's report generation on third-party servers or within your secure environments. For those who prefer to avoid dealing with orchestrators and want to quickly get a ready-made solution, we recommend using FastReport Publisher .  Please contact our sales department at sales@fast-report.com to select the most suitable solution. Our team is always happy to assist you! Tags: FastReport, Cloud, Publisher, Corporate Server ### Quick look on minimal FastReport.NET report URL: https://www.fast-report.com/blogs/quick-look-minimal-net Have you ever noticed how a report template transformed to the prepared report? Let's look onto code of a very simple report: The single page. The single band on the single page. The single text field on the single band. Let's story it to the report template file: ```   ```  So we have minimal report with single text string on the gray background. Let's do preview of this report And source code of prepared report: ```   ``` Report template stored in prepared report within section . All constant attributes are taken from the section by transforming references via section . For example, refers to the same element in section . An attribute  "name" of element of section is set to value "Page0". By some reason we need increment a number within page name. Now we have name of element within section - it is "Page1". Therefore we link the element in section with the element in section by matching the property "name". Tags: .NET, .NET, FastReport, FastReport ### RAD Studio Reporting with Fast Reports URL: https://www.fast-report.com/news/webinar-studio-reporting-2014 Summary: RAD Studio Reporting with Fast Reports RAD Studio Reporting with Fast Reports RAD Studio Reporting with Fast Reports See what’s new with FastReport and FastCube VCL and FMX You’re invited to join Embarcadero with Fast Reports’ Michael Philippenko and Den Zubov for two new webinars on reporting for RAD Studio, Delphi and C++Builder developers. Webinar 1: New Report Generator for Delphi FastReport VCL 5 Thursday, May 22, 2014 6AM San Francisco / 9AM New York / 2PM London / 3PM Milan 11AM San Francisco / 2PM New York / 7PM London / 8PM Milan 5PM San Francisco / 23-May 9AM Tokyo / 23-May 10AM Sydney FastReport VCL is a modern solution for integrating Business Intelligence in your software. Topics covered in this webinar include: What is new and how to use it in FastReport VCL 5 New kinds of report interactivity News in objects and properties Changes in web-reporting and more! Webinar 2: FastCube VCL 2 and New FastCube FMX - OLAP Components for your Software! Tuesday, June 3, 2014 6AM San Francisco / 9AM New York / 2PM London / 3PM Milan 11AM San Francisco / 2PM New York / 7PM London / 8PM Milan 5PM San Francisco / 4-June 9AM Tokyo / 4-June 10AM Sydney FastCube enables you to analyze data and to build summary tables (data cut-offs) as well as create a variety of reports and graphs both easily and instantly. In this webinar you will learn: What is new in FastCube VCL 2 What the difference in VCL and FMX versions How to estimate performance of FastCube on your own data and application ### RAD Studio Reporting with Fast Reports - Questions and Answers - Part I URL: https://www.fast-report.com/blogs/rad-studio-fastreport-fmx-vcl Thanks a lot all attendees of our webinar with Embarcadero Technologies. We hope than you are got new useful information and as usually publishing questions and answers from this event. Q: Can an Excel report include formulas? A: Not yet, but we're planning to implement such feature. Q: A program may have many responsibilities, many steps, report-generation being only one of them. After generating the report, the program should be able to continue on immediately with its remaining responsibilities, with no left-over impact on the program's available memory and CPU time. So, is it possible to detach a report from the program that generated it? A: You can create reports in threads. Q: Can you force FastReport 5 to respect XLS/XLSX worksheet cell boundaries (e.g., EVERY cell in column B has exactly the same width), so that each (non-empty) worksheet cell contains exactly one value of the appropriate type (number, text, date, etc.), and each worksheet column is sized to fit? A: Sorry, not clearly understand what do you mean. Q: Can you design a report to fit cleanly into Excel cells, one value per cell, without page boundaries? A: Yes, we have matrix export to excel so each object will be in separate cell. Q: is there an upgrade path for EDN version to pro? A: Delete Embarcadero Edition. And setup Pro one Q: Question for David. When do we expect XE7 ???? A: When it's done. ;-) Q: will all these exports be available with the XE6 version of Fast Reports? A: Do you mean Embarcadero edition ? Q: Question for David. When do we expect XE7 ???? A: https://edn.embarcadero.com/article/43677 Check out the roadmap. Q: Yes the embarcadero Edition not Pro A: No, XE6 uses FR4 version. We're planning to deploy FR5 starts from XE7. Q: I assume the code and events are not available with the Embarcadero version? A: Yes, the script is not available in EDN version. You can always look at differences between editions here Q: I have an issue with Barcodes ... when I try to print a Barcode type Code 39 trough FR4 and when I assign a short number like a 1 .. I can't read with a barcode scanner ... do you know why happen this ? A: This can be because of printer resolution. You can try to set Zoom property or BarWideRatio property. Q: Oops... part 2. The web-report needs to export to pdf A:  Live Demo is available on our web-site - with export to pdf:  Q: Can you please show us how to incorporate a FR report into a Windows Service application. The application is multi-threaded so the report must be thread-safe. A: Not just now :) Anyway you need Enterprise Edition for web-reporting Q: Are there example reports included with FR4? Learn by example, easier to modify a report that almost does what I want, would make it easier to get into. A: Yes, the main demo has a lot of report. You don't need even to install components to try them. You can find compiled demo with reports here  Q: Where in XE5 or 6 is FR demo reports (actual srce reports, not compiled). A: If you need an examples about how to use Fast Report from code you can find them in Demo folder after install components. But if you need only to see report , the main demo will work. It has a designer and report templates, so you can always open any template and see how it works. Q: Where in XE5 or 6 is FR demo reports (actual srce reports, not compiled). A: FR4 install can be found in the registered user download area via EDN downloads menu Q: I'm still a bit confused. What exactly comes withe XE6? Is the VCL version FR4? Is the FMX version the same as the FMX 2 they show on their web site, or is it an older version? What exactly comes free with XE6? A: FR4 VCL & FMX comes with XE6 Q: I realize you are showing the VCL version. Does the FMX version work pretty much the same way? Important differences? A: Just another good question :) Here you can see comparison table of different Fast Reports - FMX and VCL More over: compare possibilities of FastReport FMX for different OS So difference is present. Q: Upgrade or new license when you update from the free be in XE6 to FR5? A: You can compare prices on the FastReport site - to move to FR5. Q: I see the prices for the products as you've shown them, but the real question is "Is there an upgrade price to move from Embarcadero to the FR5, or do you essentially get a new license with Fast Reports?" A: It is really new license Q: Can we use C++ script in FR5? A: Yes, there are 4 types of script languages C++/pascal/Basic/JavaScript. Q: Are there any restrictions on the use FastReport 5 in C++ Builder compared with Delphi? We Thanks. A: Absolutely the same. Q: Will you be offering a "Distinct Count" function in a group section ? A: No such function - you can do this at the SQL statement level. Q: How about my Distinct Count question from above ? A: Added to ours TODO list. Q: Crystal Report has distinct count A: Thanks Q: Along with SUM AVG COUNT A: Thanks Q: Are you planning to include Logfont? A: No plans for now. Q: Currently when I tried to declare Logfont: TLogFont; it raised an error "Unknown type TLogFont". Are there plans to support TLogFont? A: Do you mean in Fast Script ? Fast Script unfortunately doesnt support structures. Q: yes in FastReport events coding A: Unfortunately you can't. Structures arent supported in Fast Script yet. Q: Is there a difference between the FastReport included with Rad Studio and the paid versions from FastReport? A: Yes, compare Q: why is fast report designer so different from fast report.net A: Because there are two absolutely different products :) Q: I thought fast Reprot will now have something like Fast Report .NET but so i dont think so , i would rather enjoy working on fastreport.net A: There are two different products. With vary possibilities, platform, etc. Many customers waited these features. Q: i meant highlighting by condition Q: is the highlight feature restricted to cell only or can they be extended to row as well A: Are you mean interactive of highlighting by conditions? Q: but you said its intended for those who have used fast report and do you really think they are so naive A: There are many changes which you can see in examples only :) Interactivity, web, etc. We think that our customers - professional developers who really can estimate new features :) Q: I licensed the XE4 FR but am moving to FMX for new stuff - why not include both like EMB does? A: FR4 comes with XE6 Q: did I miss the comparison with MS-SQL Reports - I heard it asked but not answered A: We have not direct comparison with VCL, but there are something like Q: I there a limitation to use with Interbase Togo Embedded ? Use one or two connexion ? A: IBLite is only for mobile and limited to one connection. IBToGo is not limited on # of connections. Q: If use Fast Report into a Database Rad Studio application, Fast Report share the connection or need is separate connection ? A: It can share. Q: Which version are coming with XE7? A: Fast Report 5 Q: Can the VCL and FMX version coexist? A: Yes Q: Is there a way to convert existing FastReport 4 reports to version 5? A: You do not need convertor. There are converting on a fly - when you opening in FR VCL 5 Q: FastReport has a upgrade for embarcadero edition to full edition? A: No, Embarcadero edition is free version for RAD Studio users. We don't have any upgrades from this version. Q: FastReport has a upgrade for embarcadero edition to full edition? A: There are no any discount for Embarcadero Edition customers. Q: web-reporting is datasnap reporting??? A: No, its an internal components. Q: Can you show an example using a dialog page with object tfrxDBLookupComboBox ? A: Not ready just now. Remind us - we will prepare it and may be place to our demo and on our youtube also Q: Can Report Builder reports be converted? A: Yes, we have a module ConverterRB2FR.pas you need to include it in uses section of your application. And after that you can use LoadFromFile method in TfrxReport component to load Rave report. Q: what about a .NET version? A: All is good with .Net version :) You are welcome Q: Can FR4 & FR5 coexist? A: No Q: I have a bunch of Rave Reports embedded into applications (not used the form designer). How easy is it going to be to convert these? A: We have a module ConverterRR2FR.pas you need to include it in uses section of your application. And after that you can use LoadFromFile method in TfrxReport component to load Rave report. Q: Thanks on the RAve Reports question A: :D Q: can we see crystal converter in action A: You can download on web-site :) By the way wait for 5.1 version soon - it will improved Q: Is FR5 in RAD Pro XE6 and or Delphi XE6 Pro? A: FR5 Embarcadero Edition will come with XE7. Q: Is FR5 in RAD Pro XE6 and or Delphi XE6 Pro? A: Yes, It supports starts From Delphi 7 and up to XE6. Q: It seems the webinar is for people already using fastreport, but around 50% of the audience never used fastreport. How about some getting started information... A: Yes, we didnt expect such many new people. The video is for people who already using FR4 and shows the differences between versions. There are will be enough to place FRXReport component on your application form and doubleclick - very easy to start and create first report. It takes about ten minutes. I can offer just now our Youtube channel with short lessons  Anyway we will prepare soon something like "FastReport - getting started" Q: Can you supply some links to getting started information, examples and the likes? Or will there be another webinar for beginners? A: Of corse you can take a look at our youtube chanel  Q: Does the conversion happen based on file extension or an internal version number? Is there a new default extension for FR5 reports? A: FR5 uses old file extensions and determinate version by internal version number. Q: I just tried to run the Crystal Converter and it hangs on open - never even shows anything... A: Not all the versions of CR supports now Q: When you announced a updated designer for FR5, I expected a litte bit more face lift of the gui. But it seems that it still has XP style. A: It still supports D7 - that is why Q: Will XE7 be supported by FR4? A: No. Q: Can the end user of our software create it's own reports? (run time report builder) A: Yes, there are report designer for end-users - you can provide it to your customer Q: does it also work in C++. If yes, is the scripting also in C++ ? A: Yes, it is compatible with C++Builder. You can setup it to C++Builder. It is supported as well with full functionality Q: Can the end user of our software create it's own reports? (run time report builder) A: Yes - you can use a runtime report designer and call if from your application. This lets users to create reports. Also as developer you can set restrictions for what the customer/user can do in the reports you deliver with your app. Developers have custom control for their users. Q: what about Active Report Converter ? A: We don't have such convertor , yet. But this version works with not all the CR versions yet, will be updated with FastReport 5.1 Q: What should be the minimum XE version in order to use FastReport? A: Did you mean FastReport Embarcadero Edition? - it comes with every XE*. And also all other editions of FastReport support all Delphi XE* (from XE to XE6) Q: I'm using Delphi XE with QuickReport. Can I migrate to Fast Reports on Delphi XE or I need to upgrade to a newer version? A: QuickReport and FastReport are not compatible.  You can convert visual part of the report by using ConverterQR2FR.pas module. Just add it in uses section and use LoadFromFile method of TfrxReport component. But we do not know - what kind of reports did you use, not all possible to convert. Anyway you will need convert reports and remake some parts of the reports manually(Like script and expressions). We recommend use new component (FastReport) in new projects. Q: Is it possible to automatically convert Fastreport.VCL => Fastreport.NET reports? A: Conversion is possible. Same layout. Code/logic is not converted. Q: From my experience, converters aren't really an option for automatic conversion. It should be done manually. A: Yes, some parts like expressions or scripts should be converted manually. Converters can convert only visual parts. Q: What is the user experience developing reports in Fast Reports .NET compared to Fast Reports VCL. Is it similar or there are significant differences? A: If you mean "architecture" - there are absolutely different, but we are trying to make them as close as possible. Q: Fast Reports is really good reporting tool. Too bad it wasn't the part of Delphi in earlier versions. It would save us much time :-). A: :D Q: how much does it cost to upgrade from fr4? A: This depends on your edition. Go to the customer page and you'll see the upgrade price./info Q: It's ok for me that you think about building a FMX version. But can I be sure that the main focus still stay on VCL? This is very important form me! A: We are working on VCL as well as on FMX. Updates coming soon Q: Are there some changes in FR5 that belongs to UniCode. I have some applications that also use unicode (Chinese etc.). Sometimes I had problems, that not all windows fonts are supported well... A: Starts from Delphi 2010(first unicode Delphi version) Fast Report completely supports unicode. Q: Are there any issues when creating reports in threads... A: Yes, you can find more information in Fast Report Programmers manual. Part «1.22 Multithreading». Q: Charts are not working here too. Recompile will not bring the success... I use the newest fast reports enterprise and the newest teechart vcl components (including source)... A: Can you write to support@fast-report.com with discription of the error ? Q: Using the recompile wizard only provide TeeChart 4 to TeeChart 9 the actual version is TeeChart 2014. What should I select? Is TeeChart 2014 supported? A: Tee Chart 9 Q: Why are Denis not join DDD in Germany? A: We should code, make updates, fixes, answer support questions. Denis coming to Be-Delphi in Antwerp, Belgium, DDD Piacenza, Italy and DDD  Amsterdam, Netherlands at 10th-12th of June. (Done) Q: Tred to install, trial but too little disk space for it :-( A: Ok - thanks Alf. Time for a 4TB hard drive :) We're planning to change our installation tool soon, so 3+TB problem will be fixed Q: Do new Fastreport run on Delphi 2006 or only last versions of Delphi? A: Yes, FastReport VCL supports Delphi 2006 also Q: THis is perfect timing as I am converting reports from Qucik Report to Fast Report now. A: Great! Q: A reliable way to convert even simple Rave reports is a major requirement - if we had that now we would move to fast Reports today! A: Yes, you can use ConverterRR2FR.pas module. just include it in app uses section. And use LoadFromFile method of TfrxReport component. Q: ConverterRR2FR didn't even convert simple Rave reports I'm afraid A: We will reconstruct it soon. There are some problems with it. Q: Migration courses would be great. A: We will prepare. Q: The webinar seems to be concentrating on the new features in the product rather than how a new user can set up a basic report. Is this how the webinar will continue? A: Yes, this webinar is showing features of the new version. We didnt expect so many people not familiar with Fast Report. Q: Is there a reliable way to convert Rave reports to Fast Reports? A: Yes, you can use ConverterRR2FR.pas module. just include it in app uses section. And use LoadFromFile method of TfrxReport component. Q: As I said before ConverterRR2FR does not work on even simple Rave reports. Please let me know when a reliable conversion program will be available. A: We will fix it in FastReport VCL 5.1 very soon. Q: OK - youtube channel looks interesting and yes a basic reporting webinar would be good. A: Ok. Q: Are there any training courses available in Europe? A: Yes. We will run training day in Belgium 10th of June on Be-Delphi basis and with Be-Delphi help. See on Be-Delphi.com web-site. Q: Will the training in Belgium be in English? A: Yes, English Q: As I said before ConverterRR2FR does not work on even simple Rave reports. Please let me know when a reliable conversion program will be available. A: Can you send some of the Rave reports you have to us on support@fast-report.com ? Maybe you have different version of Rave report. We will chuck what we can do. Q: I can send some of our Rave reports but I have sent questions to the email you supplied before and I never got an answer to any of them. Can you provide a specific name and email address please? A: You can write directly to me at den@fast-report.com Q: There is an opportunity to gain many customers, like us, who are using other reporting tools. We need reliable converters and basic training - can you please provide both? A: Well. We will make some "migration courses" Q: Fast report is a great product, i use it a lot. Can you add a new little feature in the designer, i want to be able to focus the tool box when i press the enter key on a component. This will speed up when i need to change component name. Thanks A: Thank you for idea Q: Sorry, question to david i, can i have a grouping and ungrouped object feature like the one in Fast Report Designer :D A: (Y) :) Q: Are there published rules for manual conversion A: Not yet Q: I just noticed that FR5 report files also have the .fr3 extension; so, how can we tell what's using the new format and what is not (for downward compatibility with FR4.X)? A: We have a version number stored in the report file. Q: Do reports written in FR4.x need to be converted? A: No, all old FR4 reports will be converted on the fly when load old report file. Q: Is there limitations for converting Report Builder ? A: You can convert visual part only. Q: I have 3 computers I use for programming: my office pc, home pc and a laptop. It is needless to say that I don't use all computers at the same time; only one at any given point in time. Having said that, can I buy a single license and install it on all three of my computers. I'm sure you know that RAD Studio allows you to do that (I think on up to 5 computers). A: The same situation with FastReport Q: It is FR5 VCL stable enough to use it in real applications? :) A: Yes, more over. Soon we will run v.5.1 with some fixes. Q: is there an updated version of Fast Reports for the version that came with XE5. I have problems with charts not working. the last comment I got on forum was a new version has fix. So how do I update the XE5 embarcadero fastreport version? Thanks! A: FrxChart object has source codes you can always recompile it manually. But yes, we'are panning to update EDN versions this week , because it has some new fixes. Q: I have not used fast reports. How can you add this to a delphi App? A: Just add TfrxReport component from Fast Report components palette on the form and after you can call report designer by double clicking on the component. Q: I have not used fast reports. How can you add this to a delphi App? A: Just place "FRxreport" component to your application form and doubleclick it :) Q: is there a converter from Report Builder to Fasr Report? A: Yes, you can use ConverterRB2FR.pas module. just include it in app uses section. And use LoadFromFile method of TfrxReport component. Q: where is this converter? A: You can find it in Fast report LibDXX folder. Q: We need fastreport on IOS and ANDROID when will get? its so important... A: We are still considering support of IOS, but we faced some issues when started migration. But it's still possible that we make Ios version of Fast Report FMX. Thanks a lot for good questions! Anyway you can write us anytime. Tags: VCL, FireMonkey, FMX, FastReport ### RAD Studio Reporting with FastReport URL: https://www.fast-report.com/news/webinar-rad-studio-2012 Summary: RAD Studio Reporting with FastReport RAD Studio Reporting with FastReport Join  our webinar! Topics covered will include:  • FastReport RAD Edition - what i t i s and how to use it  • Migration of reports from QuickReport and Rave Reports to FastReport  • Introduction to data analysis and presentation with FastCube.  All registered Delphi, C++Builder and RAD Studio XE2 users who attend the webinar will get a free copy of FastCube Embarcadero Edition! (if you have n’t already receive d it from an earlier promotion) . Webinar's language - English . ### Rave convertor URL: https://www.fast-report.com/blogs/rave-to-fastreport-convertor As you know, Embarcadero RAD Studio XE2 is coming with the special edition of FR4. Many people have been asking us: is it possible to convert Rave reports (.rav files) to Fast reports (.fr3 files)? It is possible, because we have developed a convertor from Rave reports for this purpose. How to convert a .rav file From a user's point of view, to convert a .rav file no special actions needed: just click File > Open in the main menu of the designer and then choose a .rav file. If you are a developer and want to know how to enable the ability to import .rav files, then consider this code: Code ``` program RaveImport;   uses frxClass, frxDesgn, ConverterRR2FR;   begin TfrxReport.Create(nil).DesignReport; end. ``` Once this program is launched, the report designer appears and its File > Open dialog will offer to open .rav files as well as .fr3 files. Note, that in order to compile this program, you need to have Rave installed, or just have its .pas or .dcu files available to the compiler. What Rave reports can be imported The convertor supports the most of components that can appear in a Rave report, including database connections. Those Rave components that have no direct representation in Fast Reports, are converted to components with the closest behaviour. Here is an example of a complex Rave report converted to an .fr3 file: The process of importing When you click the File > Open menu item and choose a .rav file, the convertor at first checks how many reports are inside the file. If there are several reports inside the file - Rave allows to have multiple reports in a single file - then each report will be converted to a fr3 file and the convertor will ask to choose a folder where all these .fr3 files can be saved: After that the convertor will start processing each report and during this stage, which can be quite long for big .rav files with numerous reports inside, the following progress bar will be shown: When all reports converted, the last created .fr3 file is shown in the designer: Notes Some old versions of Rave have certain issues with loading numerous big SQL queries, which may result in memory corruption and undefined behaviour of the convertor. To avoid such problems, the convertor provides the property LoadQueries which can be disabled in order to skip loading SQL queries. However, if the convertor is compiled with newer Rave sources, no problems should occur. Links This topic is discussed on our forum in this topic. There you can also find a test app that can convert .rav files. As you know, Embarcadero RAD Studio XE2 is coming with the special edition of FR4. Many people have been asking us: is it possible to convert Rave reports (.rav files) to Fast reports (.fr3 files)? It is possible, because we have developed a convertor from Rave reports for this purpose. How to convert a .rav file From a user's point of view, to convert a .rav file no special actions needed: just click File > Open in the main menu of the designer and then choose a .rav file. If you are a developer and want to know how to enable the ability to import .rav files, then consider this code: Code Tags: VCL, FastReport, Converter ### RDL import in FastReport .NET URL: https://www.fast-report.com/blogs/rdl-import-fastreport-net What is the RDL import RDL  report it's a report template in format of  Report Definition Language . The format used in  Microsoft Reporting Services . Reports can be generated in  Microsoft Visual Studio  and  Microsoft Report Builder , and in some third-party editors. Reports are stored in files with extension  rdl  or  rdlc .  RDL  import it's a tool that allows you to open  RDL  report in  FastReport. NET  designer. Users who have previously used the  RDL  reports and went to  FastReport. NET  can use old templates. Reports can be quickly and easily imported to FastReport .NET.  Importing RDL report It's simple operation. You should to go to the  File  menu in  FastReport .NET  desinger and select  Open... . In the window that appears, select the filter  RDL files (*. rdl; *. rdlc) . The selected file will be automatically converted to a FastReport. NET  template and opened in the designer.  On the two following pictures you can see  RDL  report (left) and the same report converted to  FastReport. NET  format. Tags: .NET, .NET, FastReport, FastReport ### Recap of 2024 and plans for 2025 URL: https://www.fast-report.com/news/recap2024-plans2025 Summary: Key achievements and changes in 2024: new product launches, support for modern technologies, and more. Key achievements and changes in 2024: new product launches, support for modern technologies, and more. Friends, this year has been eventful and productive for us! 📌 Key achievements Release of new products: we launched FastReport Avalonia – a tool for cross-platform work on reports for Windows, MacOS, and Linux. Changes in approach to product formation: we split the product content in a way where you do not have to buy unnecessary functionality. What changed for our products? For Delphi and Lazarus: Improved work with hierarchical data in FastReport for Delphi and Lazarus by adding the TfrTreeView component. Additional capabilities for working with maps were added by supporting the GeoJSON and TopoJSON formats. Improved digital signatures, added infinite table width, expanded barcode capabilities, and improved display accuracy and compatibility of PDF, HTML5, SVG, DOCX, and XLSX export filters. In the latest version, we have enhanced the capabilities of working with reports in complex scenarios and provided a higher level of integration with modern development environments, including RAD Studio 12.2. Next year, we plan to add new components, support for RFID tag EPC in ZPL, new transports, improved export filters, and much more. For .NET: We have abandoned the legacy .NET Standard 2.0 - 3.1 and .NET 5 compatibility layer in our libraries. Now the minimum supported .NET version is .NET 6, and the minimum supported framework is .NET Framework 4.6.2. With the latest version of the FastReport .NET library, FastReport Business Graphics .NET and FastCube .NET now support .NET 9. To do this, we abandoned binary serialization (BinaryFormatter). This year, we relaunched FastCube .NET , a library for working with OLAP cubes and operational analysis of big data. Now FastCube.Core.Web supports  Linux and MacOS. It opens up the possibility of developing web applications with OLAP functionality on any server. One of the key changes in the FastCube .NET 2025.1 release was the complete removal of the dependency on the System.Drawing.Common library in the FastCube.Core module. This was done to increase the library compatibility with various platforms and improve performance. The FastReport Online Designer visual template designer has also changed. In 2024, a new "SparkGraphic" object was added, it became possible to create guidelines on the page and a new component menu was implemented. When editing the report code, the Intellisense functionality was added, which provides automatic code completion and syntax hints, which allows users to write code faster and more accurately directly in the web interface. In 2025, we plan to add a new plugin allowing you to convert user reports from MS Word to .frx. In addition, a connection to Google Sheets will be implemented in the future. FastScript .NET for executing scripts will be released in the first half of the year. The new library will contain a compilation technology that allows you to convert intermediate code into machine code for a specific platform (Native AOT). We are striving to create a complete ecosystem of products for different platforms, so next year we will also work on their integration with each other. For service solutions: In FastReport Cloud , we improved the automatic task execution system, added printing from the browser, and developed a font storage, finalized the SDK. Improved the usability and speed of the API Added new API methods for working with the cloud, allowing you to perform familiar operations faster and more conveniently: bulk copying, deleting, and moving files; a new upload method that allows you to upload large files and use fewer resources; methods for obtaining the current user's rights to files, groups, tasks, and data sources; added the ability to receive and edit report parameters without opening the report itself for editing. Made the user panel more convenient Improved work with the Online Designer: added a Richtext preview, and style templates for ChartObject. Gave the ability to edit the user's avatar, made a new trash bin for deleting files, improved the Tasks page; finalized data sources, giving the ability to use stored procedures and add custom tables from SQL. In 2025, we plan to release a new product and add parameter transfer to StaticPreview UI. We thank you for trusting us in 2024. Let's move on and create the future together! Happy Holidays! ### Recursion in MS SQL URL: https://www.fast-report.com/blogs/recursion-mssql Sometimes, a stored procedure or function is required to use the results of a sample several times. In such cases, we often use temporary tables. However, it is worth considering some advantages and disadvantages of temporary tables. Advantages: Temporary tables are full tables. Therefore, you can create indexes and statistics for them. This can significantly speed up work with them. Disadvantages: Filling in a temporary table associated with the movement of data. Although it is a simple Insert operation, there is still a load on the disks with large amounts of data; There is a risk of increased query execution time. Temporary tables are created in the tempdb database. And the load on this base is substantial. Considering the risks of using temporary tables, the use of a generic table expression looks much more attractive. Generic table expression Common Table Expression (CTE) is an expression with a common table that can be used many times in a query. The CTE does not save data, but creates something like a temporary view. Some may say that a CTE is a subquery that precedes the main query. But this is not entirely true, because the subquery cannot be used several times, however, CTE can. In which cases is it better to use a generic table expression? 1. To create recursive queries, with which you can get data in a hierarchical form; 2. With multiple references to the data set within the same query; 3. In order to replace views, temporary tables, table variables. The advantages of CTE include: recursion, high speed query, concise query. And the disadvantages can be only in the limited use. A CTE can only be used for the query to which it belongs. You cannot use it in other queries. In this case, you will have to use temporary tables or table variables. Generic table expressions are simple and recursive. Simple ones do not include references to theirselves, and recursive respectively include. Recursive CTEs are used to return hierarchical data. Consider an example of a simple CTE statement: ``` WITH CTEQuery (Field1, Field2) AS ( SELECT (Field1, Field2) FROM TABLE ) SELECT * FROM CTEQuery ```  Here CTEQuery is the name of the CTE;                 Field1, Field2 – field names of the request;                 Table – some table from which data is selected for use in the main query. In this example, it is possible and not to explicitly specify the selection fields, since we select all the fields from the TestTable table: ``` WITH CTEQuery AS ( SELECT * FROM Table ) SELECT * FROM CTEQuery ```  With the help of CTE, you can optimize the main query if you take out part of the logic in the CTE. The fact is that CTE allows you to create several expressions (queries) at once. So you can split a complex query into several preliminary “views” using the CTE, and then link them in a common query:  ``` WITH CTEQuery1 (Field1, Field2) AS ( SELECT Field1 AS ID, Field2 FROM Table1 WHERE Field2 >= 1000 ), CTEQuery2 (Field3, Field4) AS ( SELECT Field3 AS ID, Field4 FROM Table2 WHERE Field4 = 'Москва' )   SELECT * FROM CTEQuery1 INNER JOIN CTEQuery2 ON CTEQuery2.ID = CTEQuery1.ID ```  As mentioned above, the main purpose of the CTE is recursion. A typical task for recursion is a tree traversal. So we can build a tree with the help of “with”. The recursive query structure first appeared in SQL Server 2005. Take a look at the WITH statement:  ``` WITH RecursiveQuery AS ( {Anchor} UNION ALL {Joined TO RecursiveQuery} ) SELECT * FROM RecursiveQuery ```  {Anchor} - anchor, a query that defines the initial element of the tree (hierarchical list). Usually in anchor there is a WHERE clause that defines specific rows of the table. After UNION ALL, the target table is followed from JOIN to the CTE expression. {Joined to RecursiveQuery}- SELECT from target table. This is usually the same table used in the anchor. But in this query, it is connected to the CTE expression, forming recursion. The condition of this connection determines the parent-child relationship. It depends on whether you go to the upper levels of the tree or to the lower ones. Let's look at a recursive query that returns a list of organizational units. Prepare data for this request: ``` CREATE TABLE Department ( ID INT, ParentID INT, Name VARCHAR(50) )   INSERT INTO Department ( ID, ParentID, Name ) VALUES (1, 0, 'Finance Director') INSERT INTO Department ( ID, ParentID, Name ) VALUES (2, 1, 'Deputy Finance Director') INSERT INTO Department ( ID, ParentID, Name ) VALUES (3, 1, 'Assistance Finance Director') INSERT INTO Department ( ID, ParentID, Name ) VALUES (4, 3, 'Executive Bodget Office') INSERT INTO Department ( ID, ParentID, Name ) VALUES (5, 3, 'Comptroller') INSERT INTO Department ( ID, ParentID, Name ) VALUES (6, 3, 'Purchasing') INSERT INTO Department ( ID, ParentID, Name ) VALUES (7, 3, 'Debt Management') INSERT INTO Department ( ID, ParentID, Name ) VALUES (8, 3, 'Risk Management') INSERT INTO Department ( ID, ParentID, Name ) VALUES (9, 2, 'Public Relations') INSERT INTO Department ( ID, ParentID, Name ) VALUES (10, 2, 'Finance Personnel') INSERT INTO Department ( ID, ParentID, Name ) VALUES (11, 2, 'Finance Accounting') INSERT INTO Department ( ID, ParentID, Name ) VALUES (12, 2, 'Liasion to Boards and Commissions') ```  It is already clear that the structure of the divisions in the organization is hierarchical. Our task is to get a list of departments subordinate to the assistant of the financial director. If we talk in the context of a hierarchical tree, then we must find a branch and its leaves. But first, let's see the whole list of divisions: ID ParentID Name 1 0 Finance Director 2 1 Deputy Finance Director 3 1 Assistance Finance Director 4 3 Executive Bodget Office 5 3 Comptroller 6 3 Purchasing 7 3 Debt Management 8 3 Risk Management 9 2 Public Relations 10 2 Finance Personnel 11 2 Finance Accounting 12 2 Liasion to Boards and Commissions  At the head there is the financial director, the deputy and the assistant report to him. Each of them has a group of units in its jurisdiction. The ParentID field indicates the "host" identifier. Thus, we have a ready-made master-slave connection. Let's write a recursive query using WITH. ``` WITH RecursiveQuery (ID, ParentID, Name) AS ( SELECT ID, ParentID, Name FROM Department dep WHERE dep.ID = 3 UNION ALL SELECT dep.ID, dep.ParentID, dep.Name FROM Department dep JOIN RecursiveQuery rec ON dep.ParentID = rec.ID ) SELECT ID, ParentID, Name FROM RecursiveQuery ```  In this example, the names of the fields that are to be selected in the CTE are clearly indicated. However, internal queries have the same fields. So you can simply remove this listing along with the brackets. Inside the CTE, we have two similar queries. The first one selects the root element of the tree that we are building. The second is all subsequent subordinate elements, due to the connection with the CTE itself. "Recursion" in SQL is not really a recursion, but an iteration. You need to submit a query with a JOIN as a loop, and then everything will be immediately clear. In each iteration, we know the value of the previous sample and get the subordinate elements. In the next step, we get the subordinate elements for the previous sample. That is, each iteration is a transition down a tree, or up, depending on the communication condition. The result of the above query is: ID ParentID Name 3 1 Assistance Finance Director 4 3 Executive Bodget Office 5 3 Comptroller 6 3 Purchasing 7 3 Debt Management 8 3 Risk Management  But what would this query look like without using CTE: ``` DECLARE @Department TABLE (ID INT, ParentID INT, Name VARCHAR(50), Status INT DEFAULT 0) -- First, we select the anchor in the table variable - the initial element from which we build the tree. INSERT @Department SELECT ID, ParentID, Name, 0 FROM Department dep WHERE dep.ID = 3   DECLARE @rowsAdded INT = @@ROWCOUNT -- We are going through a cycle until new departments are added in the previous step. WHILE @rowsAdded > 0 BEGIN -- Mark entries in a table variable as ready for processing UPDATE @Department SET Status = 1 WHERE Status = 0 -- Select child records for the previous record INSERT @Department SELECT dep.ID, dep.ParentID, dep.Name, 0 FROM Department dep JOIN @Department rec ON dep.ParentID = rec.ID AND rec.Status = 1 SET @rowsAdded = @@ROWCOUNT -- Mark entries found in the current step as processed UPDATE @Department SET Status = 2 WHERE Status = 1 END SELECT * FROM @Department ```  Such a cycle runs much slower than the CTE expression. And besides, it requires the creation of a table variable. And the amount of code doubled. Thus, CTE expressions are the best solution for a recursive tree traversal in MS SQL. Tags: SQL, SQL ### Register Json data in FastReport.NET URL: https://www.fast-report.com/blogs/register-json-net If you need to register Json as data source in FastReport.NET, this can be done through the registration of business objects. For parsing json you need to describe the data scheme in the C# classes, for example: ``` public class Product { public string Name { get; set; } public double UnitPrice { get; set; } }   public class Category { public string Name { get; set; } public string Description { get; set; } public List Products { get; set; } }   string json = "..."; // your json   List categories = JsonConvert.DeserializeObject>(json); // using the Newtonsoft.Json library for deserialization   Report report = new Report(); report.Load(@"C:\report.frx"); report.RegisterData(categories, "Categories"); ``` If you do not know the scheme or if it is changing during the work of the program, it can be generated dynamically. For this we use the library JSON C# Class Generator, you can download it from https://jsonclassgenerator.codeplex.com . Code to generate C# classes: ``` string json = "..."; // your json   if (json.StartsWith("[")) // if json is an array, then it would be better if we name it ``` ``` { json = "{\"Data\":" + json + "}"; // Under this name the data will be displayed in designer, so you can add multiple data sources ``` ``` }   JsonClassGenerator gen = new JsonClassGenerator() { Example = json, UseProperties = true, Namespace = "__JSON__", MainClass = "__JSON__", };   string source = ""; using (StringWriter sw = new StringWriter()) { gen.OutputStream = sw; gen.GenerateClasses(); sw.Flush(); source = sw.ToString(); } ``` ``` As a result we obtain the generated classes in a string. Now we need to access them from the code; in order to do this compile them using CSharpCodeProvider and get Type: ``` ``` Type type = null; using (CSharpCodeProvider compiler = new CSharpCodeProvider()) { CompilerParameters parameters = new CompilerParameters() { GenerateInMemory = true, }; CompilerResults results = compiler.CompileAssemblyFromSource(parameters, source); type = results.CompiledAssembly.GetType("__JSON__.__JSON__"); } ``` Note: This example shows a compilation in the current AppDomain. This means that it can not be unloaded from memory, and each compilation will eat off memory. To avoid this, you can use CSharpCodeProvider in another AppDomain. Deserialize json using the generated classes. The easiest way to do this is to use the library Newtonsoft.Json; You can get it through NuGet with the command "Install-Package Newtonsoft.Json". ``` object obj = JsonConvert.DeserializeObject(json, type); ``` ``` Now we have objects, so let's register them in FastReport.NET: ``` ``` PropertyInfo[] properties = type.GetProperties();   Report report = new Report(); report.Load(@"C:\report.frx");   foreach (var prop in properties) { report.RegisterData((IList)prop.GetValue(obj, null), prop.Name); } ``` So now you can run designer and see the results. Tags: .NET, .NET, FastReport, FastReport ### Release of a library for executing scripts in C# URL: https://www.fast-report.com/news/release-fast-script-net Summary: We are pleased to announce the release of a cross-platform library for executing complex scripts in C# called FastScript .NET. We are pleased to announce the release of a cross-platform library for executing complex scripts in C# called FastScript .NET. We are pleased to announce the release of a cross-platform library for executing complex scripts in C# called FastScript .NET . Libraries for executing complex scripts provide the ability to dynamically generate and execute code, which can be useful in various scenarios such as developing plugins, creating user scripts, and so on. Working in Constrained Environments. FastScript .NET is built on the classic "lexer-parser-interpreter" model. It does not use compilation to machine code, allowing it to operate in environments where code generation is restricted (NativeAOT, iOS, WASM). Its performance is comparable to other solutions that use interpretation (such as Lua and JavaScript), although it is slower than compiled C# code. C# as a Scripting Language. FastScript .NET has full integration with the .NET platform and allows the use of all libraries, frameworks, and APIs. A unified code base in C# for scripts eliminates the need to maintain code in multiple languages. Compactness. The small size of the library (just 300 KB) makes it convenient to use even in resource-constrained projects without overloading the system. Since version 2025.1.21 FastScript .NET is part of the WinForms , WPF , WEB , Mono and Avalonia packages. Our library is also part of Ultimate.NET solutions with all source codes. Learn more ### Release of FastReport Business Graphics .NET 2025.2 URL: https://www.fast-report.com/news/release-business-graphics-2025.2 Summary: If you are planning to port to .NET 9 or are already using it in your projects, you can be sure that our components are ready to work without any additional modifications! If you are planning to port to .NET 9 or are already using it in your projects, you can be sure that our components are ready to work without any additional modifications! We are pleased to announce the release of FastReport Business Graphics .NET ! In this update, we focused on increasing compatibility, improving support for modern platforms, and preparing for future versions of .NET. Compatibility with .NET 9 One of the key changes was the addition of the necessary attributes to the components to ensure full compatibility with .NET 9. This means that FastReport Business Graphics .NET now works correctly in the most latest environments, maintaining stability, performance and support for new features of the framework. If you are planning to port to .NET 9 or are already using it in your projects, you can be sure that our components are ready to work without any additional modifications! Updating supported .NET versions We have updated the list of target platforms, focusing on modern developer requirements: The main version is now considered to be .NET 8 – it is a stable and productive framework that is recommended for most projects. Support for .NET 6 is also retained for those who haven't upgraded yet but are using long-term support (LTS). Added support for .NET 9 – for developers who want to use the latest technologies and features. Thanks to these changes, FastReport Business Graphics .NET remains a relevant tool for working with business graphics in your projects. List of changes [Common] + added attributes to components required for compatibility with .NET 9; + .NET versions have been updated, the main version is now .NET 8, and supported target platforms include .NET 6, .NET 8, and .NET 9. ### Release of FastReport Online Designer 2022.1 URL: https://www.fast-report.com/news/fastreport-online-designer-2022.1 Summary: With the 2022.1 update, FastReport Online Designer has new objects and functions that will speed up the creation and optimization of your reports. With the 2022.1 update, FastReport Online Designer has new objects and functions that will speed up the creation and optimization of your reports. FastReport Online Designer 2022.1 version cаme up with many new objects and features that will significantly speed up the process of creating and optimizing your reports. New objects New "Polyline" and "Polygon" objects have been added: Most often polylines are used to construct logos or other shapes of flowing lines. The "Polyline" object allows you to build a curve by given points: The gray lines in the image help you see how the object will look after adding a new point. You can add new points to an already created polyline: To stop adding points, press Escape. Lines can be curvatured: The "Polygon" object allows you to build a figure by given points: You can change the number of corners in an already created polygon by adding new points: Polygon edges can be curvatured: Also, you can build a polygon with preset points: New object "Advanced Matrix" has been added: Note: The component is in the works to improve user experience and fix bugs. This object is similar to the advanced matrix in the desktop version of the designer. It allows you to build summary reports. You can find it in the objects panel: Data is transferred to the matrix using drag-and-drop: You can set the total in the header cell: Cells can be highlighted: In order to go to the header cell editing window, you need to double-click on it. You can give an expression to the header cell manually: You can also set the display text for the header cell: Header cells can be sorted: You can set a filter condition in the header cell: The header cell get Top N grouping: You can change the visibility of the header cell manually, or using a condition: Also, you can change the display properties: For example, this matrix template: Will generate the following report: New opportunities Now you can collapse and expand the panel with report pages Collapsing and expanding is done by clicking the button on the panel: Now you can select a nested data source For example, a JSON structure has a collection. It was not possible to use it as a data source before. Collections are now defined as the data source: The ability to sort data sources alphabetically has been added: This саn be done using the sort button: The ability to collapse and expand all data sources has been added: In order to expand data sources, click on the "+" button. Click on the "-" button to collapse data sources. Search in the report tree has been added In order to find the necessary element in the report tree, you can use the search field on the "Report tree" tab and enter the name of the component: Now it is possible to add object properties to favorites In order to add the desired property to "Favorites", you can right-click on it on the properties panel and select the appropriate item: After that, the selected properties will be marked as favorites: Each object type can have its own set of favorite properties. Each set of favorite properties is saved for later use in other report templates. Report template AutoSave feature has been available Now the report template is automatically saved every two minutes. Now you can’t set the save interval, but this functionality will be available in the future. The modal report preview window has been replaced with a separate tab Resizing of the report code editor window has been available Now the field with the report code automatically changes height, depending on the number of rows: Full list of changes 2022.1 -------------- + Polyline object has been added; + Polygon object has been added; + AdvMatrix object has been added (the desktop version of the designer is not fully developed); + Automatic saving of the report template has been added; + The ability to use nested data sources has been added; + A separate tab for previewing the report has been added; + The ability to collapse or expand the panel with report pages has been added; + Automatic change in the height of the code editor window; + Button for sorting data sources has been added; + Buttons to collapse and expand data sources have been added; + Search in the report tree has been added; + The ability to add properties to "Favorites" has been added; - Pasting of objects after copying or cutting has been fixed; * Localization has been improved; * Some other optimizations. ### Release of the New FastReport WPF Report Generator URL: https://www.fast-report.com/news/release-fastreport-wpf Summary: The release of the first version of the new FastReport WPF report generator for document creation and development of custom business applications. The release of the first version of the new FastReport WPF report generator for document creation and development of custom business applications. We are excited to announce the release of the first version of the report generator for Windows Presentation Foundation - FastReport WPF . This high-performance library for creating reports and documents will assist you in developing business applications to meet various needs on the .NET Desktop and Web platforms. Create, view, and export detailed, visually appealing, interactive reports using a lightweight, versatile reporting tool. The report generator includes a powerful core for building reports, a user-friendly designer with a familiar interface, and a fast viewer of reports. FastReport WPF uses the SkiaSharp graphics engine for comfortable work with Windows. The WPF report generator also has an advanced code editor with Roslyn-based intelligence support. FastReport WPF is part of the unified FastReport ecosystem. Reports created in other products will seamlessly work in FastReport WPF and vice versa. NuGet packages via NuGet Server will be available for download in September. Now you can get WPF packages for your project using the installer from cpanel.fast-report.com . ### Release of the new version of FastReport Desktop 2022.1 URL: https://www.fast-report.com/news/fastreport-desktop-2022.1 Summary: New Year's Eve update of FastReport Desktop to version 2022.1. New Year's Eve update of FastReport Desktop to version 2022.1. Updated version in FastReport Desktop 2022.1. Even more possibilities with FastReport. New features Added new "Advanced Matrix" object: Here is a list of its key features: row and column headers can contain groups and simple elements in any order. This allows you to build asymmetric reports; collapse buttons allow you to interactively manage the visibility of individual elements; sorting buttons allow you to interactively sort the matrix by the selected values, including the total values; Top N grouping allows you to display N values in the header, and group the remaining values into a separate element with the ability to expand; output of matrix headers in a stepped form; sorting headers by total values; a wide range of aggregate functions; support of custom aggregate functions; a wide range of special functions that allow you to get the values of totals, adjacent cells, as well as functions for calculating percentages; support for "Sparkline" and "Gauge" objects in data cells. Learn more about this object in the  documentation . Added  GS1 DataBar barcodes : Limited, Omnidirectional, Stacked and Stacked Omnidirectional. New properties: Config.CompilerSetting.ExceptionBehaviour and Config.CompilerSetting.Placeholder These properties allow you to customize the behavior when exceptions with invalid database field and table names occur. Config.CompilerSetting.Placeholder  is a string variable that is used to replace expressions with nonexistent names. By default, the value of this variable is an empty string. Config.CompilerSetting.ExceptionBehaviour  can have the following values: ExceptionBehaviour.Default  - default behavior, as it was before. If there are errors with invalid names, an error message is displayed. Report preparation is interrupted.  ExceptionBehaviour.ReplaceExpressionWithExceptionMessage  - invalid expressions are replaced by the text of the exception message. Errors are not shown at that. Report preparation is not interrupted.  ExceptionBehaviour.ShowExceptionMessage  - A message appears with the exception text, after pressing OK, report preparation continues. Incorrect expressions are replaced with the value of Placeholder variable.  ExceptionBehaviour.ReplaceExpressionWithPlaceholder  - invalid expressions are simply replaced with Placeholder. No error messages. Report preparation is not interrupted. Example with variable values:  ExceptionBehaviour = ExceptionBehaviour.ReplaceExpressionWithPlaceholder Placeholder = "NO DATA! Here you can see that the table has a field named FistName, but it's not specified correctly in the expression. And this is the result of preparing such a report. Previously it would have been impossible to prepare it due to errors. Improved translation quality of RTF into report objects. Conversion of RTF into report objects is optimized. RTF translation in table cells is added. Lots of bugs fixed. Exports improvements Implemented export of watermark to Word and RTF. Added SVG image scaling in export matrix. This improves the quality of exported images when exporting to Word and Excel. However, this increases the size of the output file. To use this feature, you must enable the "Print optimized" option when exporting. Export groups to single sheets in Excel 2007 has been implemented. Excel 2007 has added the ability to export a property that determines the size and location of the image when exporting. Now you can define how the image will behave in a cell when its position and size are changed. In doing so, the image can: move and resize together with the cell; move together with the cell, but not change its size; don't move or resize; Implemented the ability to hide or show grid lines when exporting to Excel 97. Added "Don't rotate landscape pages when printing" option in HTML export. Previously, we were forcibly rotating landscape-oriented pages when printing. The reason was that browsers cannot correctly print reports with pages both in portrait and landscape orientation. When you print such documents, pages with landscape orientation are cut off by the width of pages with portrait orientation. Now, you can adjust whether to rotate pages in landscape orientation or not. In addition, a bug where landscape-oriented pages were always rotated, even when there are no portrait-oriented pages, has been fixed. Complete list of changes [Engine] + added a new AdvMatrixObject; + added GS1 DataBar barcodes: Limited, Omnidirectional, Stacked and Stacked Omnidirectional; + added new properties: Config.CompilerSetting.ExceptionBehaviour and Config.CompilerSetting.Placeholder. These properties give the ability to customize the behavior when exceptions are thrown with incorrect names of database tables and fields; + added translation of RichObject inside TableCell; * reworked translation of RichObject into report objects; - fixed ShiftMode of translated RTF object; - fixed a bug with two parameters with the same name in report leading to System.ArgumentException; - fixed a bug with subreport containing multicolumn Databand; - fixed a bug with wrong band height calculation; - fixed a bug with displaying of hyperlinks when converting RTF to report objects; - fixed translation of RichObject if it set from a report script; - fixed a bug with private fonts added to Config.PrivateFontCollection; [.NET Core] + added support for .NET 6; - fixed incorrect search for Bold-Italic fonts; [Designer] + added verification of entered data in editing window of the QR code of SberBank; - fixed a bug with line break in text object editor; - fixed a bug when converting rdl reports containing matrices inside table cells; - fixed a bug with guide lines in the designer; - fixed a bug with Report tree window; - fixed a bug leading to System.NullReferenceException and crash of the designer during its launch when the Auto Guides option is enabled; [Preview] - fixed a bug with shifting the position of objects when switching the view of bands while editing a prepared page; [Exports] + implemented export of watermark to Word; + implemented export of watermark to RTF; + added "Don't rotate landscape pages when printing" option in export to HTML; + added the ability to change the name of the attached file when sending by Email; + add zooming of SVG images in export matrix; + added the ability to export a property that determines the size and position of the image when exporting to Excel 2007; + implemented ability to hide or show gridlines when exporting to Excel 97; + implemented export of groups on separate sheets to Excel; + implemented export of transparency level watermark images to Word; + implemented export image size of watermark to RTF; - fixed a bug leading to System.NullReferenceException when exporting to text, tables with rows count less then one; - fixed incorrect left padding of tables in export to Word; - fixed a bug with Wingdings font in HTML tags when exporting to HTML; - fixed a bug with export Wingdings and Webdings fonts to HTML; - fixed a bug with width of frame in export to PowerPoint; - fixed a bug with exporting objects with transparent fill to RTF; - fixed a bug with exporting objects with transparent fill to Word; - fixed a bug leading to System.OutOfMemoryException when exporting to PDF; - fixed incorrect line break display when exporting to HTML; - fix out of memory when export to PDF; - fixed bugs in export to PDF in non-Windows systems; - fixed a bug with exporting tables with more than 63 columns to Word 2007; - fixed a bug leading to a memory leak and System.OutOfMemoryException in PDF-export when the "Text in curves" option is enabled; - fixed a bug with line break in HTML-export; ### Release of the new version of FastReport for DBA 2022.1 URL: https://www.fast-report.com/news/fastreport-dba-2022.1 Summary: New Year's Eve update of FastReport for DBA to version 2022.1. New Year's Eve update of FastReport for DBA to version 2022.1. Updated version in FastReport for DBA 2022.1. Even more possibilities with FastReport. New features Added new "Advanced Matrix" object: Here is a list of its key features: row and column headers can contain groups and simple elements in any order. This allows you to build asymmetric reports; collapse buttons allow you to interactively manage the visibility of individual elements; sorting buttons allow you to interactively sort the matrix by the selected values, including the total values; Top N grouping allows you to display N values in the header, and group the remaining values into a separate element with the ability to expand; output of matrix headers in a stepped form; sorting headers by total values; a wide range of aggregate functions; support of custom aggregate functions; a wide range of special functions that allow you to get the values of totals, adjacent cells, as well as functions for calculating percentages; support for "Sparkline" and "Gauge" objects in data cells. Learn more about this object in the  documentation . Added  GS1 DataBar barcodes : Limited, Omnidirectional, Stacked and Stacked Omnidirectional. New properties: Config.CompilerSetting.ExceptionBehaviour and Config.CompilerSetting.Placeholder These properties allow you to customize the behavior when exceptions with invalid database field and table names occur. Config.CompilerSetting.Placeholder  is a string variable that is used to replace expressions with nonexistent names. By default, the value of this variable is an empty string. Config.CompilerSetting.ExceptionBehaviour  can have the following values: ExceptionBehaviour.Default  - default behavior, as it was before. If there are errors with invalid names, an error message is displayed. Report preparation is interrupted.  ExceptionBehaviour.ReplaceExpressionWithExceptionMessage  - invalid expressions are replaced by the text of the exception message. Errors are not shown at that. Report preparation is not interrupted.  ExceptionBehaviour.ShowExceptionMessage  - A message appears with the exception text, after pressing OK, report preparation continues. Incorrect expressions are replaced with the value of Placeholder variable.  ExceptionBehaviour.ReplaceExpressionWithPlaceholder  - invalid expressions are simply replaced with Placeholder. No error messages. Report preparation is not interrupted. Example with variable values:  ExceptionBehaviour = ExceptionBehaviour.ReplaceExpressionWithPlaceholder Placeholder = "NO DATA! Here you can see that the table has a field named FistName, but it's not specified correctly in the expression. And this is the result of preparing such a report. Previously it would have been impossible to prepare it due to errors. Improved translation quality of RTF into report objects. Conversion of RTF into report objects is optimized. RTF translation in table cells is added. Lots of bugs fixed. Exports improvements Implemented export of watermark to Word and RTF. Added SVG image scaling in export matrix. This improves the quality of exported images when exporting to Word and Excel. However, this increases the size of the output file. To use this feature, you must enable the "Print optimized" option when exporting. Export groups to single sheets in Excel 2007 has been implemented. Excel 2007 has added the ability to export a property that determines the size and location of the image when exporting. Now you can define how the image will behave in a cell when its position and size are changed. In doing so, the image can: move and resize together with the cell; move together with the cell, but not change its size; don't move or resize; Implemented the ability to hide or show grid lines when exporting to Excel 97. Added "Don't rotate landscape pages when printing" option in HTML export. Previously, we were forcibly rotating landscape-oriented pages when printing. The reason was that browsers cannot correctly print reports with pages both in portrait and landscape orientation. When you print such documents, pages with landscape orientation are cut off by the width of pages with portrait orientation. Now, you can adjust whether to rotate pages in landscape orientation or not. In addition, a bug where landscape-oriented pages were always rotated, even when there are no portrait-oriented pages, has been fixed. Complete list of changes [Engine] + added a new AdvMatrixObject; + added GS1 DataBar barcodes: Limited, Omnidirectional, Stacked and Stacked Omnidirectional; + added new properties: Config.CompilerSetting.ExceptionBehaviour and Config.CompilerSetting.Placeholder. These properties give the ability to customize the behavior when exceptions are thrown with incorrect names of database tables and fields; + added translation of RichObject inside TableCell; * reworked translation of RichObject into report objects; - fixed ShiftMode of translated RTF object; - fixed a bug with two parameters with the same name in report leading to System.ArgumentException; - fixed a bug with subreport containing multicolumn Databand; - fixed a bug with wrong band height calculation; - fixed a bug with displaying of hyperlinks when converting RTF to report objects; - fixed translation of RichObject if it set from a report script; - fixed a bug with private fonts added to Config.PrivateFontCollection [Designer] + added verification of entered data in editing window of the QR code of SberBank; - fixed a bug with line break in text object editor; - fixed a bug when converting rdl reports containing matrices inside table cells; - fixed a bug with guide lines in the designer; - fixed a bug with Report tree window; - fixed a bug leading to System.NullReferenceException and crash of the designer during its launch when the Auto Guides option is enabled; [Preview] - fixed a bug with shifting the position of objects when switching the view of bands while editing a prepared page; [Exports] + implemented export of watermark to Word; + implemented export of watermark to RTF; + added "Don't rotate landscape pages when printing" option in export to HTML; + added the ability to change the name of the attached file when sending by Email; + add zooming of SVG images in export matrix; + added the ability to export a property that determines the size and position of the image when exporting to Excel 2007; + implemented ability to hide or show gridlines when exporting to Excel 97; + implemented export of groups on separate sheets to Excel; + implemented export of transparency level watermark images to Word; + implemented export image size of watermark to RTF; - fixed a bug leading to System.NullReferenceException when exporting to text, tables with rows count less then one; - fixed incorrect left padding of tables in export to Word; - fixed a bug with Wingdings font in HTML tags when exporting to HTML; - fixed a bug with export Wingdings and Webdings fonts to HTML; - fixed a bug with width of frame in export to PowerPoint; - fixed a bug with exporting objects with transparent fill to RTF; - fixed a bug with exporting objects with transparent fill to Word; - fixed a bug leading to System.OutOfMemoryException when exporting to PDF; - fixed incorrect line break display when exporting to HTML; - fix out of memory when export to PDF; - fixed bugs in export to PDF in non-Windows systems; - fixed a bug with exporting tables with more than 63 columns to Word 2007; - fixed a bug leading to a memory leak and System.OutOfMemoryException in PDF-export when the "Text in curves" option is enabled; - fixed a bug with line break in HTML-export ### Release of Version 2026.1 for FastReport Online Designer URL: https://www.fast-report.com/news/release-fastreport-online-designer-2026.1 Summary: In version 2026.1 of FastReport Online Designer, there is a report validator, new components and controls for .NET and VCL solutions, redesigned the main toolbar, improved the IntelliSense system. In version 2026.1 of FastReport Online Designer, there is a report validator, new components and controls for .NET and VCL solutions, redesigned the main toolbar, improved the IntelliSense system. In the new  FastReport Online Designer version, significant improvements and new features have been introduced. Among the key changes is the addition of a report validator tool, which allows for automatic checking of reports for errors and potential display issues. Furthermore, this version includes new components and controls for .NET and VCL solutions, such as the RFID tag component, various controls for dialog pages (PictureBox Control, GroupBox Control, Panel Control, and others), as well as components for working with zip codes, text data, and visualizations (ZipCode, Cellular Text, Gauge, Interval Gauge, etc.). Version 2026.1 also features a redesigned main toolbar, an improved code autocompletion system (IntelliSense), implemented capabilities for adjusting Label size, and the ability to prohibit editing data sources for .NET solutions. In addition, a number of critical bugs related to saving settings, data display, and component functionality have been fixed. New Features Report Validator In version 2026.1, an automatic report validation tool has been added to check for errors and potential display issues within a dedicated console panel. It performs a comprehensive validation of the report’s structure: checking for overlapping components, components without names or with duplicate names, elements outside parent containers, and components with zero dimensions.  This helps identify and eliminate errors during the report development phase. Components for .NET Solutions Support RFID Tag Component In FastReport Online Designer for .NET solutions, an RFID Label component has been added. RFID (Radio Frequency Identification) is a radio-frequency identification technology widely used for automated accounting, tracking goods, and managing supply chains. It’s important to note that while the RFID label will not function in WebReport export, the ability to add it to a report and save it is crucial—such a report can be opened and used in the desktop version of FastReport .NET with full RFID support. Controls for Dialog Pages from .NET Solutions In version 2026.1, the following controls have been added for working with dialog pages: PictureBox Control The PictureBox control is designed to display images on dialog forms. It allows you to add company logos, icons, illustrations, and other graphical elements, making dialog forms more informative and visually appealing. The control supports various image formats (PNG, JPEG, BMP, GIF) and offers scaling modes (stretch, fit, center). Components for VCL Solutions Checkbox Component In version 2026.1, a Checkbox component has been added for reports in the .fr3 format (FastReport VCL). This component represents a boolean field that allows for displaying "on/off" states in reports. The Checkbox can be used on report pages to visualize boolean values from data sources or for interactive user interaction. The component supports all core properties from FastReport VCL, including appearance customization, data binding, and event handling. Combobox Component A Combobox component has been added—a dropdown list with pre-set values. This component allows the user to select one option from a predefined list of choices. These features will assist you in creating interactive reports and dialog forms where user selection needs to be limited to a specific set of values. The Combobox supports customization of the item list and can be bound to data sources for dynamic population of values. ListBox Component The ListBox component has been implemented—a list with values that the user can select. Unlike a Combobox, a ListBox displays all available items simultaneously as a list, making it convenient for working with a few options where the visibility of all choices is important. The component supports multiple item selection, list scrolling for many items, as well as appearance customization and data binding. ZipCode Component The ZipCode component has been added, a specialized component for displaying postal codes. The component visualizes the zip code using segmented digits, stylized to resemble the format used on postal envelopes. This ensures a standardized display of postal codes in documents, making them easily recognizable. ZipCode automatically formats entered numerical values according to accepted postal code display standards and supports customization of segment size and style. Cellular Text Component The Cellular Text component has been implemented for displaying text within cells. This component places each character of the text into a separate cell, making it ideal for displaying data where one character per cell is required (e.g., serial numbers, codes, document numbers). The Cellular Text component supports customization of cell size, borders, text alignment within cells, and can automatically split entered text into individual characters. Gauge Component The Gauge component has been added—a dial or progress indicator for visualizing numerical values. Gauge allows for a clear display of metrics, KPIs, and other indicators in reports, making them more understandable and visually appealing. The component supports various display styles (circular, linear), customization of value ranges, color zones for indicating critical values, and can be linked to data sources for dynamic display of indicators. Interval Gauge Component The Interval Gauge component has been implemented for displaying intervals and ranges of values. Unlike a regular Gauge, this component specializes in visualizing the span between values, which is useful for displaying time intervals, price ranges, permissible deviations, and other similar data. The component allows customization of the interval’s start and end values, display styling, and color coding of different range zones. Gradient Component The Gradient component has been added for creating gradient fills in reports. This component allows for smooth color transitions, which can be used to create visually appealing backgrounds, section dividers, or decorative elements in reports. Gradient supports various gradient types (elliptical, angular, horizontal, vertical, horizontal centered, vertical centered), as well as color customization. HTML Object Component The HTML Object component has been implemented to display HTML content directly within reports. This opens up wide possibilities for formatting text using HTML markup, embedding tables, lists, and other formatted content. The component correctly processes HTML tags, applies styles, and allows for the creation of complexly structured content within the report using familiar HTML syntax. Cross-Tab Component The Cross-Tab component has been added—a powerful tool for creating cross-tabulations and pivot reports without direct connection to data sources. Cross-Tab works with data already loaded into the report via other components (e.g., DataBand), allowing it to group data by multiple dimensions simultaneously and create a matrix view of information with automatic totals calculation. The component supports customizing rows and columns, applying various aggregate functions (sum, average, count), cell formatting, and creating multi-level groupings. DB Cross-Tab Component The DB Cross-Tab component has been implemented—a version of Cross-Tab with the ability to connect directly to database data sources. Unlike the regular Cross-Tab, DB Cross-Tab can independently connect to a database, extract necessary data, perform grouping, and aggregation. This will significantly simplify the creation of pivot reports. Digital Signature Component The Digital Signature component has been added for working with digital signatures in reports. This component allows for adding digital signature fields that can be configured during the report design phase. RFID Label Component The RFID Label component has been implemented for FastReport VCL reports. This is an analog of the RFID Tag component, but adapted for working with the .fr3 format and VCL architecture. The component allows you to configure RFID tag parameters directly in the report designer for label printers that support RFID technology. It is important to note that the RFID label will not function in WebReport export. However, a report containing this label can be opened and used in the desktop version of FastReport VCL with full RFID support. Subreport Component The Subreport component has been added for creating hierarchical reports. Subreport allows one report to be embedded within another, creating a nested structure. This is especially useful for generating complex documents where the main report contains general information, and subreports display detailed data. The component supports passing parameters between the main report and the subreport, linking data sources, and can use separate report files or embedded definitions. System Text Component The System Text component is a specialized text component for displaying system variables (date, time, page numbers) and aggregate functions (sums, totals, record counts) in reports. It provides a convenient configuration dialog instead of manual expression input. It is used for creating headers, footers, and summary blocks in reports. Barcode Component The Barcode component has been added for creating and displaying barcodes in various formats in reports. The component automatically generates barcodes based on input data, making it an essential tool for creating labels, invoices, receipts, and other documents that require barcode encoding. The component supports a wide range of barcode formats (EAN-13, EAN-8, UPC-A, Code 39, Code 128, QR code, and others), configuration of size, orientation, and display of text representation below the barcode. Barcode can be linked to data sources for dynamic generation of unique barcodes for each record in the report. Improvements The Ability to Customize the Size of the Label on The Dialog Form (.NET) In FastReport Online Designer for .NET solutions, the ability to change the width and height of the Label component has been added when the AutoSize property is disabled. Previously, the Label’s size would automatically adjust to its content; now, fixed dimensions can be explicitly set for the component. This provides more control over the layout of elements on dialog forms and allows for the creation of a more predictable and aligned interface. Ability to Prohibit Editing Data Sources (.NET) In FastReport Online Designer for .NET solutions, the ability to prohibit opening the "Data Connection Wizard" form for already created connections has been implemented. This feature allows administrators and developers to protect database connection settings from accidental or unauthorized modification. Redesigned Main Toolbar The main toolbar has been redesigned and enhanced with new functions for more convenient report handling. The panel now provides quick access to key report settings and parameters. Added functions: Report Settings: Quick access to main report parameters. Page Settings: Management of page parameters (size, orientation, margins). Data Source Settings: Quick management of data connections. Format Settings: Access to component formatting parameters. And other frequently used functions. IntelliSense Redesigned and Improved The code autocompletion system (IntelliSense) has been completely redesigned and significantly improved. Suggestions are now displayed more accurately and consistently when writing code in the script editing page. Key improvements: Contextual suggestions for report objects: Objects created in the report now appear in suggestions and work correctly with code completion. Correct handling of object chains: When accessing properties and methods via a dot (e.g., TextObject1.Fill.Color), IntelliSense now correctly displays available members at each level of nesting. Improved suggestion display: Suggestions appear faster and more accurately match the context in which the cursor is located. Stable operation: Instances where suggestions did not appear despite receiving data from the server have been eliminated. These improvements significantly simplify script development in reports, making the coding process more comfortable and productive. Bug Fixes Fixed an Issue with Saving the Connection String A critical error was fixed where the connection string was not saved when editing an existing data source. When attempting to modify connection parameters via the editing form, changes were not applied after saving the report. This issue also affected custom SQL queries. Fixed Unknown Characters in Databand’s Data Source Resolved an issue where, after deleting a table from the data sources, the ‘Data Source’ field of the DataBand component incorrectly displayed the ID of the deleted data source. This occurred due to incorrect handling of references to deleted data sources. Now, when a data source is deleted, all references to it in components are correctly cleared, and the interface displays an appropriate message indicating the absence of a source. Fixed Text Display on Icons A problem with incorrect text display on some icons in the new Online Designer version has been resolved. Fixed Double Call of previewReport Method An issue where calling a report preview from the main toolbar resulted in two API requests instead of one has been fixed. This led to duplicate processing on the server and increased preview loading time. Fixed Errors When Working with Empty RichObject A critical error that occurred when opening a report containing a pre-saved empty RichObject component (a component for working with formatted text) has been resolved. Attempts to open a report preview with an empty RichObject resulted in errors preventing report generation. Now, empty RichObject components are correctly handled both when loading the report and when generating the preview. Fixed Issues with Numerical Data Formatting A set of problems related to saving numerical data format settings in the TextObject component has been resolved: Problem with decimal separator. An error has been fixed where, if a comma ( , ) was specified as the decimal separator and the "Use system settings" checkbox was unchecked, a period ( . ) was displayed in the field instead of a comma when the report was reopened. Problem with negative value format. An error has been resolved where a non-standard negative number format value was reset to the standard (n) after saving and reopening the report. Problem with the number of digits in the decimal part. A specific error has been fixed where the value "2" in the "Decimal places" property, when saving and loading the report, increased to "3" or was completely reset. The problem did not manifest with other values (1, 3, 4, etc.). All format settings are now correctly saved and restored when working with reports, regardless of the operating system used (the problem was reproduced when saving under WSL, Ubuntu, and loading under Windows). Full List of Changes New Functionality: + Report Validator New Components for .NET Solutions: + RFID Tag Component New Controls for Dialog Pages (.NET): + PictureBox Control New Components for VCL Solutions: + Checkbox Component + Combobox Component + ListBox Component + ZipCode Component + Cellular Text Component + Gauge Component + Interval Gauge Component + Cross-Tab Component + DB Cross-Tab Component + HTML Object Component + Gradient Component + Digital Signature Component + Subreport Component + RFID Label Component + System Text Component + Barcode Component Improvements for .NET Solutions: + Added the ability to customize the size of a Label on a dialog form + Added the ability to prohibit opening the "Data Connection Wizard" form + Redesigned the main toolbar: new functions added for configuring reports, pages, data sources, format, and more + IntelliSense reworked and improved: suggestions now display better, and object chains work correctly Improvements for VCL Solutions: + Implemented Align property logic for components Bug Fixes: - Fixed an issue with saving the connection string - Fixed unknown characters in DataBand’s "Data Source" - Fixed text display on icons - Fixed double call of previewReport - Fixed errors when opening a report with an empty RichObject - Fixed data format issues when saving a report ### Release of Version 2026.2 for FastReport Online Designer URL: https://www.fast-report.com/news/release-fastreport-online-designer-2026.2 Summary: The new FastReport Online Designer version (2026.2) brings significantly improved UI and a reworked theming system, a new report workspace, and a substantial amount of new functionality. The new FastReport Online Designer version (2026.2) brings significantly improved UI and a reworked theming system, a new report workspace, and a substantial amount of new functionality. The new FastReport Online Designer version (2026.2) brings significantly improved UI and a reworked theming system, a new report workspace, and a substantial amount of new functionality. Among the key changes are a fully redesigned theme matching the FastReport .NET Avalonia look, a new docking manager for flexible panel layout, a designer settings pop-up, an improved undo/redo system, and much more. New Features FastReport .NET Avalonia theme In version 2026.2 the look of Online Designer has been completely reworked — a new theme matching the FastReport .NET Avalonia style has been added. Styles for all controls, panels, popups and toolbars have been updated. The theme is responsive and renders correctly on screens of various sizes. Redesigned properties panel The properties panel got a refreshed design in the form of a property grid. The properties panel is now merged with the events panel into a single interface, just like in the desktop version of FastReport. Switching between component properties and events is done via a toolbar inside the panel, without having to look for events in a separate window. Docking manager A new docking manager has been implemented, allowing users to flexibly arrange panels in the designer interface. Panels can be dragged, docked to different sides of the screen and resized. New workspace: rulers, guides, band headers The designer workspace has been fully reworked. Rulers and guides have been updated — they now reflect the position of components on the page more accurately and remain readable at any zoom level. Band headers have been moved to a separate layer. In addition, an alternative grid is supported when the Alt key is pressed — components can be moved and resized with a smaller step for the most precise positioning. Toolbars for the Data and ReportTree panels The "Data" and "Report tree" panels have received toolbars with features from FastReport .NET. You can collapse and expand nodes, use drop-down lists, and create new relations. The panels support recursive collapse/expand of nodes, as well as automatic switching to the neighboring item when a node is deleted. Designer settings window A unified designer settings window has been added, combining configuration of appearance, object parameters and ways of interacting with the application. The following sections are available: Interface  — hotkey and autosave settings Report page — grid and measurement-unit settings Object appearance — styles and display of components "Code" page — code page settings "FRX" page — settings for the FRX template editor The settings are saved when the designer is closed and restored on the next launch. Barcode editor window A dedicated window has been implemented for configuring the barcode component, replacing the previous generic expression editor. The window contains separate tabs for each barcode type with the corresponding configuration fields, including Swiss QR. Font editor window The font configuration window has been reworked — its look and structure are now aligned with the FastReport .NET design. The window replaces the previous simplified version and provides access to the full set of font parameters. FRX template editor A built-in editor for the report's XML template (FRX) has been added. The editor with syntax highlighting allows you to view and edit the report structure directly in XML form. Undo/redo is supported, as well as synchronization with the main designer view. Format painter You can now copy and paste styles between components. This is an analog of the "Format painter" tool from the desktop version, available from the toolbar. The feature lets you quickly apply font, color, border and other formatting settings to various components in the report. New shape drawing logic Drawing logic for the PolyLine, Polygon and line components has been reworked. In this version, drawing is interactive, without having to switch tools manually. Presets for quickly adding common shapes have been added to the components panel. New logic for adding components to a page The mechanism for adding components has been reworked to match the desktop FastReport .NET. A component is now added by clicking the components panel — the cursor then enters placement mode and shows a preview of the future component under it. A second click on the page creates the component at the preview position. "Open report" and "Save report" Open and save report functionality is now available. You can open a report from your local file system directly in WebReport without uploading it to the server. You can also save a finished report to your local file system. Note: before using these functions, the data sources must be configured in WebReport. Improvements Undo/Redo: named actions and group undo The undo/redo system has been extended to the code editor and the FRX template editor. Each action in the application now has a textual description, so the change history no longer contains anonymous entries. You can visually select and undo several actions at once with a single click. Code editor improvements Configurable indentation has been added to the report script editor. The indent size is now set in the code editor page settings. UI adaptability The designer interface has been adapted to screens of various sizes in both themes — Avalonia and the classic one. UI elements scale and rearrange when the browser window is resized. Pages panel improvements The pages panel has been improved with the ability to create both regular and dialog pages. A left click on the "+" button creates a regular page. A right click opens a context menu with options to create either a dialog page or a regular report page. New UI element for selecting a data source A new control has been added for selecting a data source, modeled after the desktop FastReport .NET. Instead of typing a table or field name into a text box, the user is now presented with a tree of connections, data sources and columns — the value is picked with a single click. The control is used in two modes: Selecting a data source for a band — in the band editor (the "Data source" tab) only tables are available for selection. Selecting a data field for a component — for example, in the "Data column" tab of the Picture editor: the tree shows tables and their columns, and the user can either pick a specific field or reset the value to None . Editing an existing connection It is now possible to edit a previously created data source connection — open its connection-string parameters, adjust them and save, without recreating the connection from scratch. For security reasons the connection string is not stored in the report itself and lives only in the browser memory of the current designer session. Therefore editing is available under the following conditions: the connection was created within the current session, and the designer page has not been reloaded since; the report has not been reopened after the connection was created. After a page reload or after the report is reopened the designer loses the connection string and editing becomes unavailable — in this case the connection has to be created again. Bug Fixes Fixed problems with saving Cyrillic characters in script code (VCL) Fixed an issue where Cyrillic characters in script code were not saved correctly in VCL reports. Fixed VisibleExpression property (.NET) Fixed an issue where the VisibleExpression property was missing from the properties panel of the text component. The property is now displayed correctly. Fixed an error when using fill on ShapeObj (.NET) Fixed an error that occurred when trying to apply a fill to the ShapeObj component. The fill setting now works correctly. Fixed: identical table names when connecting to JSON (.NET) Fixed an issue where multiple JSON connections produced tables with identical names. Each connection now gets a unique table name. Fixed an error when opening a report with an advanced matrix (.NET) Fixed an error that occurred when opening a report containing a heavily populated advanced matrix (AdvMatrix). With a large number of fields, the report now opens without errors. Fixed: text color was lost when reopening a report (.NET) Fixed an issue where a modified text color in a TextObject was correctly saved but did not appear after reloading the page in design mode. Text color is now saved and restored correctly. Fixed an error when using axis formatting in MsChart (.NET) Fixed two issues with the MsChart component: the format of the Y-axis labels was not preserved when the report was reloaded, and trying to prepare a report with the newly applied format produced an error for the user. Fixed: Undo/Redo buttons were unavailable until the first object was added (.NET, VCL) Fixed an issue where the Undo and Redo buttons remained disabled after a report was loaded, even if the user modified bands or moved existing objects. The buttons only became active after a new object was added to the page. The change history is now tracked correctly from the very first action. Fixed an error when copying a page containing AdvMatrix/Matrix/Table (.NET) Fixed an error that occurred when trying to copy a report page containing AdvMatrix, Matrix or Table components. Fixed: report layout was broken on save (.NET) Fixed a critical error reproduced when saving reports that used tables for layout. On save, the table width was incorrectly truncated, breaking the report layout. Fixed: currency format was missing from the locale (.NET) Fixed an issue where the currency format was missing from the numeric data formatting dialog. Fixed: built-in PadLeft function did not work (.NET) Fixed an issue where the PadLeft function worked correctly in the desktop version but did not work in Online Designer when preparing the report through WebReport. Fixed an error when preparing a report with DataType="System.Guid" (.NET) Fixed an error that occurred when trying to prepare a report containing a field with the System.Guid data type. Fixed problems when creating a Postgres data source (.NET) A series of issues with PostgreSQL connections has been fixed: correct conversion of quotes in XML for TableName and SelectCommand has been added, duplicated procedures when adding a parameter have been fixed, as well as the loss of a parameter type when switching to preview. Fixed: style name was not changed in the styles editor (.NET) Fixed an issue where changes to a style name in the styles editor were not saved. After closing and reopening the popup, the style was still displayed with the original name (for example, "Style1"). Fixed method replacement in scripts (VCL) Fixed an issue where creating several event handlers for the same component sequentially caused a new handler to overwrite the previous one. For example, creating OnAfterPrint after OnAfterData removed the code of the first handler. Fixed band sorting (VCL) Fixed an issue where band sorting in VCL solutions did not work correctly. Fixed "Data format" dialog and conditional highlighting (VCL) A set of issues with the text component in VCL has been fixed: the "Data format" dialog could not be edited if the text was not an expression; incorrect text positioning logic in a multi-line component has been fixed. Fixed Undo/Redo behavior when adding components to a band (VCL) Fixed an issue: when adding a component to a narrow band (which auto-expanded), pressing Undo removed the component but did not restore the band to its original size. A subsequent Redo had no effect. Fixed: "Fields" tab of a detail table did not open in the "Relations editor" (.NET) Fixed an issue where the "Fields" tab of a detail table did not open in the "Relations editor" when creating relations between tables of an MS SQL connection. Fixed empty drop-down for the BreakTo property (.NET) Fixed an issue where the drop-down list of the BreakTo property in the TextObject properties panel was empty and offered no value to choose. Full list of changes New functionality + FastReport .NET Avalonia theme + New properties panel + Docking manager for all panels + New workspace: reworked rulers, guides and band headers + Toolbars for the Data and ReportTree panels + Designer settings popup (appearance, objects, interaction) + Barcode editor popup + Font editor popup + FRX report template editor + Format painter + New shape drawing logic (PolyLine, Polygon, lines) and presets + New component placement logic with preview + "Open report" and "Save report" functions Improvements + Undo/Redo with named actions for the code editor and FRX + Configurable indentation in the code editor + UI adaptability for all screen sizes (both themes) + Pages panel improvements + New control for selecting a data source in the band and component editors (data tree, like in the desktop) + Editing of a previously created data source connection (within the current browser session) Bug fixes - Fixed problems with saving Cyrillic characters in script code (VCL) - Fixed VisibleExpression property (.NET) - Fixed an error when using fill on ShapeObj (.NET) - Fixed: identical table names when connecting to JSON (.NET) - Fixed an error when opening a report with an advanced matrix (.NET) - Fixed: text color was lost when reopening a report (.NET) - Fixed an error when using axis formatting in MsChart (.NET) - Fixed: Undo/Redo buttons were unavailable until the first object was added (.NET, VCL) - Fixed an error when copying a page containing AdvMatrix/Matrix/Table (.NET) - Fixed: report layout was broken on save (.NET) - Fixed: currency format was missing from the locale (.NET) - Fixed: built-in PadLeft function did not work (.NET) - Fixed an error when preparing a report with DataType="System.Guid" (.NET) - Fixed problems when creating a Postgres data source (.NET) - Fixed: style name was not changed in the styles editor (.NET) - Fixed method replacement in scripts (VCL) - Fixed band sorting (VCL) - Fixed "Data format" dialog and conditional highlighting (VCL) - Fixed Undo/Redo behavior when adding components to a band (VCL) - Fixed: "Fields" tab of a detail table did not open in the "Relations editor" (.NET) - Fixed empty drop-down for the BreakTo property (.NET) ### Release the new version of FastCube .NET 2025.1 URL: https://www.fast-report.com/news/fastcube-net-2025.1 Summary: Meet the new FastCube .NET 2025.1 release — a product relaunch with many key changes. Meet the new FastCube .NET 2025.1 release — a product relaunch with many key changes. Meet the new FastCube .NET 2025.1 release — a product relaunch with many key changes. This major update includes important architectural improvements, support for new platforms, and expanded capabilities for OLAP component developers. Removed dependency on  System.Drawing.Common library in FastCube.Core One of the key changes in the FastCube .NET 2025.1 release was the complete removal of the dependency on the System.Drawing.Common library in the FastCube.Core module. This step was taken to improve the library's compatibility with various platforms and improve performance. The graphical capabilities that were previously implemented through System.Drawing.Common have been reworked. Now FastCube .NET uses more modern and cross-platform approaches to working with data visualization and other interface elements. In particular, working with charts and visual components has been moved to separate libraries. This provides more flexibility in managing dependencies and using graphics in reports. In the new version, to specify a font in FastCube .NET styles, you must use the FastFont class instead of Font . The new font implementation does not contain any logic, and is only a container for data. The OLAP engine has been moved to the FastCube.Core library One of the most significant changes in the FastCube .NET 2025.1 release was the complete separation of the OLAP engine into a separate library - FastCube.Core . If you don't need visual components, you can add only the FastCube.Core library to your projects without including other parts of FastCube. This simplifies the setup and reduces the number of libraries to include. FastCube now has a modular architecture, where each component performs its specific task. The OLAP engine, visual components, charting and other parts of the library are in separate modules. For existing projects where visual components have been connected, no additional actions will be required. Added Linux and MacOS support for FastCube.Core.Web FastCube .NET 2025.1 release adds full Linux and MacOS support for web solutions using FastCube.Core.Web for the first time. This is an important extension of platform compatibility that allows OLAP applications to run on servers running different operating systems. Cross-platform development is available. Now FastCube.Core.Web can be used not only on Windows, but also on Linux and MacOS. This opens up the possibility of developing web applications with OLAP functionality on any server. Support for Linux and MacOS allows you to easily integrate FastCube into containers (e.g. Docker), which is important for scalable web applications and cloud solutions. You will be able to create universal web applications that work equally stably on different operating systems. ARM (64 bit) support for web components The FastCube .NET 2025.1 release adds support for the ARM64 architecture for web components. This compatibility extension allows you to run web applications using FastCube on devices with ARM64 processors, such as Raspberry Pi, servers, and cloud solutions on the ARM64 architecture. ARM64 support also makes it possible to use FastCube in low-power scenarios. Separate libraries for working with diagrams and dependencies from  FastReport.DataVisualization In the FastCube .NET 2025.1 release, the libraries responsible for working with charts and dependencies on  FastReport.DataVisualization were moved to separate FastCube.Mono.Chart and  FastCube.WinForms.Chart libraries. This simplifies dependency management and increases flexibility in application development. Previously, the functionality for creating diagrams was built into the main FastCube package, which made it mandatory even for projects where diagrams were not used. Replacement for the deprecated  IHostingEnvironment The FastCube .NET 2025.1 release replaces the legacy  IHostingEnvironment interface with the more modern IHostEnvironment . This allows the platform to adapt to current development requirements and prepare for future .NET 9 updates. XML documentation for all source codes In the FastCube .NET 2025.1 release, all source codes are now accompanied by XML documentation, which significantly improves the process of developing and integrating library components. We aim to improve the developer experience and improve code understanding. Online documentation Changing the script engine The FastCube .NET 2025.1 release includes an updated script engine. This change significantly improves scripting and increases system stability. The script engine for .NET 6 is now based on Roslyn. With the new  ReferencedAssemblies property in the FastReport.Olap.Utils.Config  static class, you can control the list of assemblies included in the script. Other breaking changes In the new release, due to the reworking of the engine architecture, some methods and types have become obsolete, they do not relate to OLAP functionality and have been removed. Full list Complete changelog + added a new demo application showing the ability to save and load a cube on the web;  + added xml documentation for FastCube.WinForms package; + added xml documentation for FastCube.Mono package; + added xml documentation for FastCube.Core.Web package; + added xml documentation for FastCube.Core package; + added xml documentation for FastCube.WinForms.Chart package; + added xml documentation for FastCube.Mono.Chart package; + added xml documentation for FastCube.Mono.Report package; + added xml documentation for FastCube.WinForms.BusinessGraphics package; + added xml documentation for FastCube.WinForms.Report package; + added XML documentation for the FastCube.Core.Web package; + added a new article describing the minimum system requirements; + added a new article to the documentation about descriptions of the packages; + added compatibility library with FastReport.DataVisualization for displaying FastCube.Winforms slice charts; + added compatibility library with FastReport.DataVisualization for displaying FastCube.Mono slice charts; + added demo application for Linux docker container; + added Linux support for FastCube.Core.Web package; * updated build scripts; * changed the way plugins registration, now plugins cannot be loaded twice automatically; * now FastCube.WinForms and FastCube.Mono are not independent packages, the core of the OLAP component is completely moved to FastCube.Core; * changed scripts in three cubes for compatibility with .NET 8 and .NET 9; * the structure of the documentation has been changed, some sections have been moved to the root; * the Extras folder that stores the compatibility package sources is now only available in the source version of the product; * updated EULA; & updated script builder for working with .net 6 and higher, this is a breaking change for all new FastCube .NET packages, if you used Variant, then instead of strict typing in the script you need to use only the name of the Variant class itself, since in some scripts there is a conflict between FastReport .NET and FastCube .NET in the script by default only a minimal set of libraries are included; & security fixes in the all demo apps; & security fixes in the chart component code for FastCube.WinForms; & security fixes in the chart component code for FastCube.Mono; - fixed the list of dlls to the script; - fixed an access modifiers of class members in FastCube.Core.Web; - removed and replaced dependency on deprecated IHostingEnvironment in FastCube.Core.Web; - fixed documentation title; - the Config class and its methods of the FastCube.Core.Web library are marked as deprecated, they are no longer used and do not affect the functionality of the component; - export to BIFF8 has been removed in the FastCube.Core package because this export requires a graphic context, if there are user requests, we will add BIFF8 export in plugins; - removed dependency of System.Drawing in FastCube.Core package, now the package can be used under Linux and MacOS. ### Release the new version of FastCube .NET 2025.2 URL: https://www.fast-report.com/news/release-fastcube-net-2025.2 Summary: In this update, we focused on speeding up calculations, improving compatibility with .NET 9, and making changes easier to understand. In this update, we focused on speeding up calculations, improving compatibility with .NET 9, and making changes easier to understand. In this update, we focused on speeding up calculations, improving compatibility with .NET 9, and making changes easier to understand. Transition to invariant mathematics – up to 2 times faster! One of the most significant improvements was the abandonment of the "variant" type in favor of invariant mathematics. This change led to a significant acceleration of the make and recalculation of the cube, in some cases - more than 2 times! In addition, the cube now works correctly in various localizations, including non-standard ones (other than Latin), which expands its application for international users. Splitting changes by product FastCube .NET updates are now split into different products (WinForms, Web, Mono, and general FastCube .NET). This makes the update process more transparent – you can immediately see what changes affect the version you need. Fixed error reading stream from compressed file Previously, in some cases, compressed files were not processed correctly, which could cause data to load incorrectly or not load at all. Now this bug is fixed and the mechanism for working with compressed files is completely fixed. This means: Correct reading of data from archive files. More stable performance when loading large files. No errors in multithreaded mode, which is especially important for Web applications. If your project makes heavy use of data compression, we recommend upgrading to version 2025.2 to avoid potential issues. The file signature for the cube is now immutable (const instead of static) Previously, the file signature was declared as static , which allowed it to be changed during program execution. In some cases, this could lead to errors related to data structure changes or even file corruption. New version: The signature is now declared as const , making it immutable at the code level. The integrity of the file structure is guaranteed, regardless of changes in the program code. Improved stability of working with cube files in different environments, including Web and Mono. This is especially important for developers who work in multi-user and distributed systems. Compatibility with .NET 9 One of the key improvements was the addition of .NET 9 support. FastCube .NET is now fully compatible with the latest version of the platform, allowing you to take advantage of new features and improvements offered by Microsoft. This is an important update for developers who are port to .NET 9 or planning to use it in their projects. We would like to point out that support for new versions ensures stable operation of the product and integration with the latest technologies. Updating supported versions of .NET The main version is now .NET 8, which is the current standard for most enterprise projects. However, support for .NET 6 is retained, which is a long-term version with extended support. Additionally, as mentioned, .NET 9 support has been added, giving you flexibility in choosing the platform to work with FastCube .NET, whether it's stability (via .NET 6) or the latest features and performance improvements (.NET 9). Fixes and improvements in the demo example In the demo for the boolean format, a bug was fixed that caused the data to be displayed incorrectly. Now this format works correctly and does not cause errors, which improves the experience of users working with demo examples. In the "Sales by months" demo cube, there were previously situations where the headers were displayed incorrectly. Now this error has been fixed, and the field names are displayed correctly, ensuring accuracy and ease of working with data. Improving data serialization One of the important improvements is the optimization of the data serialization process. New methods have been added and properties have been set, due to which default values are now serialized less frequently. Reducing the amount of serialized data reduces the load on the system when saving and loading information. In addition, these changes contribute to improved performance, which will be especially noticeable when working with large data sets. List of changes FastCube .NET WinForms [Common] - fixed a bug where the stream from a compressed file was read incorrectly; * the file signature for the cube now has a const modifier instead of static and cannot be changed; FastCube .NET Web [Common] - fixed a bug where the stream from a compressed file was read incorrectly; * the file signature for the cube now has a const modifier instead of static and cannot be changed; FastCube .NET Mono [Common] - fixed a bug where the stream from a compressed file was read incorrectly; * the file signature for the cube now has a const modifier instead of static and cannot be changed; FastCube .NET [Common] + added compatibility with .NET 9; + .NET versions have been updated, the main version is now .NET 8, and supported target platforms include .NET 6, .NET 8, and .NET 9; * some properties are hidden from the user in the WinForms editor; * the "variant" type was replaced by variant mathematics; * improved serialization, added methods and set properties, due to which default values are serialized less often; - corrected display of the field name in the "Sales by months" demo cube; - fixed bug in demo example for boolean format. Other critical changes General changes for FastCube Web, FastCube WinForms and FastCube Mono Deprecated delegates. They were replaced with compatible ones, because the Variant type was removed and now boxing via Object  is used instead: Click here to expand FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, FastReport.Olap.Utils.Variant, System.Int32) FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, System.Int32) FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], FastReport.Olap.Utils.Variant[], System.Int32) Deprecated fields. The following fields have been replaced with the corresponding properties: Click here to expand FastReport.Olap.Types.BoolValue -> public System.Boolean Value FastReport.Olap.Types.ByteValue -> public System.Byte Value FastReport.Olap.Types.DateTimeValue -> public System.DateTime Value FastReport.Olap.Types.DecimalValue -> public System.Decimal Value FastReport.Olap.Types.DoubleValue -> public System.Double Value FastReport.Olap.Types.FloatValue -> public System.Single Value FastReport.Olap.Types.IntValue -> public System.Int32 Value FastReport.Olap.Types.LongValue -> public System.Int64 Value FastReport.Olap.Types.SByteValue -> public System.SByte Value FastReport.Olap.Types.ShortValue -> public System.Int16 Value FastReport.Olap.Types.StringValue -> public System.String Value FastReport.Olap.Types.TimeSpanValue -> public System.TimeSpan Value FastReport.Olap.Types.UIntValue -> public System.UInt32 Value FastReport.Olap.Types.ULongValue -> public System.UInt64 Value FastReport.Olap.Types.UShortValue -> public System.UInt16 Value FastReport.Olap.Slice.MeasureCell -> public FastReport.Olap.Utils.Variant Value Deprecated methods. Replaced with compatible methods, but instead of the Variant type, data boxing is now used via Object , which allows passing not values with memory copying, but a reference to an object. Click here to expand FastReport.Olap.Types.BoolDTP -> public FastReport.Olap.Types.BoolValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ByteDTP -> public FastReport.Olap.Types.ByteValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.CommonDataTypeProcessor``2 -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.CommonDataTypeProcessor``2 -> public T VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DateTimeDTP -> public FastReport.Olap.Types.DateTimeValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DecimalDTP -> public FastReport.Olap.Types.DecimalValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DoubleDTP -> public FastReport.Olap.Types.DoubleValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.FloatDTP -> public FastReport.Olap.Types.FloatValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.IntDTP -> public FastReport.Olap.Types.IntValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.LongDTP -> public FastReport.Olap.Types.LongValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.Range -> public System.Boolean Match(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.Ranges -> public System.Boolean Match(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.SByteDTP -> public FastReport.Olap.Types.SByteValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ShortDTP -> public FastReport.Olap.Types.ShortValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.StringDTP -> public FastReport.Olap.Types.StringValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.TimeSpanDTP -> public FastReport.Olap.Types.TimeSpanValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.UIntDTP -> public FastReport.Olap.Types.UIntValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ULongDTP -> public FastReport.Olap.Types.ULongValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.UShortDTP -> public FastReport.Olap.Types.UShortValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Slice.AxisContainer -> public FastReport.Olap.Utils.Variant GetValue(System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, FastReport.Olap.Utils.Variant) FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection) FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32) FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValue(System.Int32) FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValueFromRecord(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, FastReport.Olap.Utils.Variant&) FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(FastReport.Olap.Utils.Variant, System.Boolean) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32) FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, System.Int32) FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, FastReport.Olap.Utils.Variant&) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant&) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2 -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2 -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2 -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2 -> public T2 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2 -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2 -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32) FastReport.Olap.Cube.UniqueValues``2 -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32) FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetValue(System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetTotalValueForDims(System.String) FastReport.Olap.Code.Measures -> public FastReport.Olap.Utils.Variant GetDetailValue(System.Int32, System.String) Deprecated properties. The following properties have been replaced by using boxing instead of the Variant  type: Click here to expand FastReport.Olap.Types.BoolValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DateTimeValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DecimalValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DoubleValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.FloatValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.IntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.LongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant HighRange { public get; public set; } FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant LowRange { public get; public set; } FastReport.Olap.Types.SByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.StringValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.TimeSpanValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.UIntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ULongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.UShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Slice.CalculateMeasureEventArgs -> FastReport.Olap.Utils.Variant Data { public get; public set; } FastReport.Olap.Slice.CalculateValueEventArgs -> FastReport.Olap.Utils.Variant Value { public get; public set; } FastReport.Olap.Slice.SliceField -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.ContainerFieldItem -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.Dimension -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.Dimensions -> FastReport.Olap.Utils.Variant DetailValue { public get; } FastReport.Olap.Code.Measure -> FastReport.Olap.Utils.Variant CurrentValue { public get; } Deprecated Types. The following types are deprecated and have been removed entirely because they are no longer used. FastReport.Olap.Utils.Variant FastReport.Olap.Types.IVariantable FastReport.Olap.Types.UnAssigned The new delegates replace the old ones, which used the Variant  type. FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, System.Object, System.Object, System.Int32) FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, System.Object, System.Int32) FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], System.Object[], System.Int32) The new field replaces the existing ones, now boxing via  Object is used instead of the Variant  type. FastReport.Olap.Slice.MeasureCell -> public System.Object Value The new methods replaced the old ones, which used the Variant  type. Now, boxing is used instead, and data is transferred by reference, not by value, which has significantly increased the speed. Click here to expand FastReport.Olap.Types.Range -> public System.Boolean Match(System.Object) FastReport.Olap.Types.Ranges -> public System.Boolean Match(System.Object) FastReport.Olap.Slice.AxisContainer -> public System.Object GetValue(System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, System.Object) FastReport.Olap.Slice.Slice -> public System.Object CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection) FastReport.Olap.Slice.Slice -> public System.Object GetMeasureValue(System.Int32, System.Int32) FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValue(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValueFromRecord(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, System.Object&) FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(System.Object, System.Boolean) FastReport.Olap.Cube.BaseDataReaderDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.BaseDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByOrder(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByValueId(System.Int32) FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, System.Int32) FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, System.Object&) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, System.Object&) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, System.Object) FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.IBaseDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2 -> public System.Int32 GetValueIdAtValue(System.Object) FastReport.Olap.Cube.UniqueValues``2 -> public System.Int32 AddNewVariantValue(System.Object) FastReport.Olap.Cube.UniqueValues``2 -> public System.Int32 AddNewVariantValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2 -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object) FastReport.Olap.Cube.UniqueValues``2 -> public T2 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2 -> public System.Object GetVariantByOrder(System.Int32) FastReport.Olap.Cube.UniqueValues``2 -> public System.Object GetVariantByValueId(System.Int32) FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetValue(System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetTotalValueForDims(System.String) FastReport.Olap.Code.Measures -> public System.Object GetDetailValue(System.Int32, System.String) New properties have replaced or expand the deprecated ones: Click here to expand FastReport.Olap.Types.BoolValue -> System.Boolean Value { public get; public set; } FastReport.Olap.Types.ByteValue -> System.Byte Value { public get; public set; } FastReport.Olap.Types.DateTimeValue -> System.DateTime Value { public get; public set; } FastReport.Olap.Types.DecimalValue -> System.Decimal Value { public get; public set; } FastReport.Olap.Types.DoubleValue -> System.Double Value { public get; public set; } FastReport.Olap.Types.FloatValue -> System.Single Value { public get; public set; } FastReport.Olap.Types.IntValue -> System.Int32 Value { public get; public set; } FastReport.Olap.Types.LongValue -> System.Int64 Value { public get; public set; } FastReport.Olap.Types.Range -> System.Object HighRange { public get; public set; } FastReport.Olap.Types.Range -> System.Object LowRange { public get; public set; } FastReport.Olap.Types.SByteValue -> System.SByte Value { public get; public set; } FastReport.Olap.Types.ShortValue -> System.Int16 Value { public get; public set; } FastReport.Olap.Types.StringValue -> System.String Value { public get; public set; } FastReport.Olap.Types.TimeSpanValue -> System.TimeSpan Value { public get; public set; } FastReport.Olap.Types.UIntValue -> System.UInt32 Value { public get; public set; } FastReport.Olap.Types.ULongValue -> System.UInt64 Value { public get; public set; } FastReport.Olap.Types.UShortValue -> System.UInt16 Value { public get; public set; } FastReport.Olap.Slice.CalculateMeasureEventArgs -> System.Object Data { public get; public set; } FastReport.Olap.Slice.CalculateValueEventArgs -> System.Object Value { public get; public set; } FastReport.Olap.Slice.SliceField -> System.Object CurrentValue { public get; } FastReport.Olap.Format.CustomFormat -> System.String DefaultFormatValue { public get; public set; } FastReport.Olap.Code.ContainerFieldItem -> System.Object CurrentValue { public get; } FastReport.Olap.Code.Dimension -> System.Object CurrentValue { public get; } FastReport.Olap.Code.Dimensions -> System.Object DetailValue { public get; } FastReport.Olap.Code.Measure -> System.Object CurrentValue { public get; } New types: FastReport.Olap.Utils.VMath - replaced the Variant type, now mathematics occurs through invariant calculations using boxing and type conversion. FastReport.Olap.Types.IValueStruct``1 - interface for implementing own boxing type. FastReport.Olap.Types.SimpleCompareAction - enumeration for types of invariant mathematics actions. Changes for FastCube WinForms and FastCube Mono The deprecated field has been replaced with a technically compatible one. FastReport.Olap.Controls.SizingInfo -> public FastReport.Olap.Utils.Variant Data New field: FastReport.Olap.Controls.SizingInfo -> public System.Int32 Data ### Release the new version of FastReport Desktop 2022.2 URL: https://www.fast-report.com/news/fastreport-desktop-2022.2 Summary: The release of version 2022.2 in FastReport Desktop took place. A large number of new features and changes have been made. The release of version 2022.2 in FastReport Desktop took place. A large number of new features and changes have been made. Now you can save a report with random data The file menu in the report designer has a new item "Save with random data...". When you save the report in this way, all data sources will be saved in the report and the data in them will be replaced by random data. Highlighting intersecting objects in the designer Now when placing objects on the report page, overlapping objects and objects beyond the bounds of the bands and the page are highlighted by color. There should not be such objects in the correct report. Failure to comply with this recommendation, can lead to a number of problems in the preparation and exporting of reports. By default, this option is disabled. You can enable it in the designer's settings File->Options. Ruler with guides in the RichObject editor The new tool allows you to conveniently adjust indentation and tab positions when editing RichObject. Read more in article. Added console utility to convert from RTF Using it, you can easily convert RTF files into report templates. Now you can use XLSX files as data sources You can now retrieve data from Excel 2007 files as from a database and use it in a report.  Read more in article . "Pinned cells" option when exporting to Excel 2007 This feature, allows you to define an area of the sheet that will always be visible when you scroll. You can lock: the first row, the first column, a certain number of rows and columns. Also added export of number and date format to Excel 97 format (BIFF8). In the HTML export now has the option "High quality SVG" - when you enable this setting, the quality of SVG images will be significantly higher. However, you should keep in mind that the memory consumption will be higher. In Word documents, export bookmarks and internal links has been added. In PDF, Word, HTML and RTF now have export tabs width. In SVG export we added a new property PrefixStyle - it allows you to set a prefix for all styles. We also improved the documentation and added the ability to switch the localization in the FastReport for DBA settings. Full list of changes in version 2022.2 [Engine] + added ability to save report with random data; * the ExportBand method now uses the BandBase argument instead of Base; - fixed bugs with double calling events AfterData, BeforePrint and AfterPrint of ContainerObject; - fixed a bug leading to System.NullReferenceException when running reports with dialog forms; - fixed a bug with not working VisibleExpression property of subreports and pages; - fixed a bug with vertical shift of non-intersecting objects when converting RTF; - fixed a bug with right anchor on pages with unlimited width and landscape orientation; - fixed translation of lists when converting RTF; - fixed a bug with not working RichObject.AllowExpressions property; - fixed a bug leading to System.OverflowException when drawing unlimited page without preparing; [Designer] + added Backlight of intersecting objects; + added ruler with guides in RichObject editor; + replaced password symbols on dots in object inspector; + added warning about possible stack overflow when putting Matrix or AdvMatrix on repeated bands; - removed error message when text of barcode consist expression; - fixed a bug with disable hot keys option; - fixed dropdown menu when click on LineStyle and LineWidth button; - fixed a bug with viewing data in designer; - fixed bugs leading to System.NullReferenceException when dragging objects into AdvMatrix; - fixed a bug with incorrect showing settings of shadow in border editor; [Preview] - fixed a bug leading to System.NullReferenceException when clicking on editable TextObject; - fixed a bug with not working hyperlinks in report with multi-column databands; - fixed a bug when exporting a report resulted to saving the prepared report; - fixed a bug with setting lists of available exports and exports to clouds in PreviewControl; [Exports] + added export to ZPL II; + added option "High Quality SVG" in export to HTML; + added option "Pinned cells" in export to Excel 2007; + added ability to scale print in export to Excel 2007; + added export of bookmarks and inner hyperlinks to Word; + added export of numbers and dates format to Excel 97; + added encryption of personal data in Email-export; + added indent of RichObject in export to RTF; + added line break of RichObject in export to RTF; + added indent of TextObject when exporting to Word; + added export of tab width in PDF, Word, HTML and RTF exports; + added property PrefixStyle to SVG-export, which allows to set a prefix for all styles; * improved export of RichObject to Excel 2007; * removed FastReport Cloud and XMPP exports; - fixed incorrect rotation of landscape orientation of pages when printing HTML if they used styles from previous pages; - fixed a bug with font scale when export to PDF; - fixed a memory lose when export SVG objects to HTML with option "High Quality SVG"; - fixed a bug with embedding fonts for which packing is prohibited in PDF-export; - fixed a bug with exporting tab symbols to Word; - fixed fill background picture and property of line-height in export to HTML; - fixed a bug with exporting custom dash line of SVGObject to PDF; - fixed a bug with exporting borders of spanned cells to SVG. ### Release the new version of FastReport Desktop 2022.3 URL: https://www.fast-report.com/news/fastreport-desktop-2022.3 Summary: The release of version 2022.3 in FastReport Desktop took place. We have prepared many new functions for you: a report template validator, an editor of the FRX format. The release of version 2022.3 in FastReport Desktop took place. We have prepared many new functions for you: a report template validator, an editor of the FRX format. The release of version 2022.3 in FastReport Desktop took place. We prepared a lot of new features for you: validator to check the report template and get the list of errors, FRX format editor, report converter from StimulSoft, dialog page copying and much more. Report validator: A "Validation" tab has been added to the report designer (on the right, next to the "Data" and "Report Tree" tabs). Here you can check the report template and get a list of errors and warnings. All this is displayed in a table with the object name (if there is one) and error description. If you select a row in the table, the corresponding object will be highlighted in the designer. Errors and warnings can be of the following types: unnamed objects, objects with the same name, overlapping objects, objects with zero height or width, and objects that are partially or completely outside the parent object. Objects without names and objects with the same name are critical errors. They can lead to various errors and even crash the application while preparing a report. Besides , without a validator, these errors are very hard to find. Intersecting objects is not a serious error. In some cases, they can be useful and used purposefully (e.g., lines or rectangles). Intersecting text objects, in most cases, can lead to incorrect exports. Especially in table exports, such as Excel. The export will result in a lot of extra cells, etc. It is necessary to be careful with such objects. Objects partially exceeding parent object boundaries (e.g. band or page) can also be useful in rare situations. But in most cases, it causes errors in the preparation and export of the report. Objects that are completely outside the parent one is a serious error. Finding such objects without a validator is also very hard. Intersecting objects and objects outside the parent can now be highlighted in color (which you can choose) if the corresponding setting in menu File -> Options is enabled. It is not necessary to use report validation. But it can be useful when your report doesn't work or look the way you want it to. Read more about the report validator in the next article. FRX Editor Sometimes it is necessary to edit the contents of the FRX file using third-party text editors. Now you can do this more conveniently, directly in the report designer. The FRX editor is added for this purpose. By default, it is disabled. You can enable it in the menu «File -> Options». In the report designer, the FRX tab will appear to the left of the Code tab. The changes made here, will be immediately applied to the report and displayed on its pages. Read more about the FRX editor in the following article. StimulSoft report converter Added the ability to convert report templates from StimulSoft to FastReport .NET templates. StimulSoft reports may contain implementation objects that are not supported by the FastReport designer. These objects will not be exported or will be replaced by others in such a way that the generated report is as similar as possible to the one created in StimulSoft. It is important to note that the import of cross-bands is implemented by moving their contents to the parent band. Read more about converting reports in the article at the following link. Copying dialog pages Added the ability to copy dialog pages. Both using the context menu of the dialog page and using the «Report -> Copy Report Page» button. Copying creates a copy of the dialog page with a unique name. All child objects will also have unique names. However, the event handlers of the objects will be the same as those of the original page. If necessary, you must create new handlers. Also now dialog pages can be deleted not only with the «Report -> Delete Page» button, but also via the context menu in the form editor and report tree. Disabling last formatting settings When creating an object in the designer, its settings will be applied to the next created object of the same type. For example, if you create a text object, set its font size, borders, fill color, the next text object will be created with the same settings. This is useful when you need to create several objects with the same or similar settings. In situations when you don't need this designer behavior you can disable it in «File -> Options». This will create objects with default settings. Export all tabs When viewing interactive reports, you can open detailed reports in new tabs. You can see three open tabs here. Previously, only the active tab was exported. Now you can export all tabs to one file using the new "Export all tabs" option. Detailed description of referenced assemblies and installed plugins Now when you hover your mouse over a dll in the plugins list (File -> Options -> Plugins) and in the list of links to builds- (Report -> Options -> Script), detailed information with description, version, size, creation date, etc. is displayed. Export of locale in Word, PowerPoint, Rich Text, OpenOffice Write and OpenOffice Calc exports You can now select the language of the document in these exports. By default the language selected in the designer is used. Also added option "Show Gridlines" when exporting to Excel 2007. Complete list of changes [Engine] + implemented converter reports of StimulSoft; + added changing name of JSON data source in expressions when it's renamed; + added converting of PaperSize property when converting reports from StimulSoft; + added checking existence of referenced assembly when converting reports from StimulSoft; + added PrintOnParent property to Table and Matrix objects; + added loading of report parameters when converting reports from RDL; + added loading of subreports when converting reports from RDL; + added the feature to store JSON connection data using the StoreData property; + optimized speed in reports containing large amount of objects; * changed exception text when calculating and formatting expression if e.InnerException is null; * when loading RDL report, page width will be equal section width in case when there is no page width; - fixed length calculation encoding DataMatrix C40 and text; - handled System.ComponentModel.Win32Exception when printing with disabled Print Spooler; - fixed hide border of picture when printing with auto size; - fixed stack overflow error when prepare report with child band of page footer and then start new page option enabled for it; - fixed a bug with not passing path of base report to current one in Unix OS; - fixed a bug with creating subreport and page with the same name when converting reports from StimulSoft; - fixed a bug with invalid names when converting reports from StimulSoft; - fixed a bug with TotalPages in Page.VisibleExpression that causes an exception when double pass is disabled; - fixed a bug when band can grow out of page; - fixed a bug when objects can grow out of band or ContainerObject; - fixed "back indent" feature in RTF translator; - fixed RichText line spacing when RTF translated to report objects; - fixed an error with ConnectionString property in JsonDataSourceConnectionStringBuilder class when value was without a request headers; [Designer] + added the report validator that helps to find invalid objects (duplicate names, negative sizes, etc.); + added editor for RichObject.Text property; + added FRX editor in report designer; + added detailed description of referenced assemblies and installed plugins; + added the ability to copy dialog pages; + added the ability to delete dialog pages using the context menu; + added ability to disable using of last formatting options when creating objects; + added integration with FastReport.Id; + added call to online-documentation in the report designer; + added wizard for visualization of control identification signs; + add tooltip about right and bottom indents for guides and objects in designer; + added ability to select color of backlight intersecting objects in designer; * changed the look of ElasticSearch connection editor form; * changed the text fields in CISWizardForm with units to text fields that only support numbers; - fixed a bug leading to System.NullRefereceException when creating calculated column for subtable JSON; - fixed a bug leading to System.FormatException when drawing labels of maps; - fixed a bug leading to the System.NullReferenceException when clicking the "Paste" button in the context menu of dialog pages; - fixed a bug with scaling zoom controls of designer in HiDPI mode when run from old demo application; - fixed opening form of save changes after save all report; - fixed unscalable items in welcome window; - fixed backlighting intersected charts; - fixed exception on rename JSON table; - fixed UpdateStatusBar in DialogWorkspace; - fixed a bug with localization of "Account..." button in menu "File"; - fixed canceling selection of object if its properties are changed; - fixed a bug when switching to the "Code" page did not occur after adding an event handler; [Preview] + implemented export of all open tabs; - fixed a bug leading to System.NullReferenceExteption when preparing report with RichObject on system without printers; - fixed a bug in the MSChart object in HiDPI mode; [Exports] + added export of locale in Word, PowerPoint, Rich Text, OpenOffice Write and OpenOffice Calc exports; + added encryption of the password of the digital signature certificate in PDF-export when it is saved; + added option "Show gridlines" when exporting to Excel 2007; + added data types export to DBF; + added a new property to the SVG export PrefixStyle, which allows you to set a prefix for all styles inside the SVG export; + added option "Use locale formatting of data" when exporting to Excel 2007; * set UTF-8 as default encoding in DBF export; - fixed incorrect scaling pictures in layered HTML-export when enabled high quality SVG and zoom more than 1; - fixed a bug leading to System.IndexOutOfRangeException when exporting font without kerning to PDF; - fixed a bug with scaling picture in layered HTML-export; - fixed a bug leading to System.NullReferenceException when exporting report with empty page to Word 2007; - fixed memory leak in PDF export with some CJK fonts; - fixed a bug when SVG picture was not rotated to needed angle in HTML export; - fixed repeated rendering of table cell in SVG export; - fixed incorrect pageStyle when printing from browser for table HTML export; - fixed exception when export object with negative size in HTML export; - fixed export to pdf if Compressed = false; - fixed incorrect record of border-collapse property in table HTML-export; - fixed a bug in Excel-export, when the fill in the output file did not change the first time; - fixed export of watermark to PostScript; - fixed error of font scale when export to PDF; - fixed a bug where a text object with HtmlTags exported to RTF was not modified by the
, , tags. ### Release the new version of FastReport FMX 2022.1 URL: https://www.fast-report.com/news/fastreport-fmx-2022.1 Summary: We have released the new version of FastReport FMX 2022.1! We have released the new version of FastReport FMX 2022.1! Starting from version 2022.1, all releases of FastReport are subscription-based. This will ensure that you have access to all the features of the latest versions while your subscription is active. We have added the support for Embarcadero RAD Studio 11 and the new macOS ARM 64-bit for Apple M1. In this release, we have also expanded the set of FastReport FMX export filters. Export filters to the OpenOffice ODT and ODS format are now available for use. Additionally, we have improved the work with FmxLinux in Linux and Metal API support in macOS. 2022.1 Version --------------- + Support for Embarcadero RAD Studio 11 was added; + Support of macOS ARM 64-bit compiler for Apple M1 was added; + ODT and ODS export filters were added; * New printing module for GTK-based FmxLinux; * The option of reading cmap table with macOS platform in TTF font was added; * Local function copyFrom for GZip packer that removes exceptions during debugging was added; - The bug with canvas.beginscene when AutoWidth = true was fixed; - Bugs in PDF export with full debugging mode were fixed; - Navigator in HTML export was fixed; - The behavior of TfrxPreview.Workspace.DoubleBuffered property on macOS using Metal was fixed; - We have fixed incorrect metrics table size, which could cause the regeneration of other font tables in PDF export; - The bug with the serialization of the edited page in previewpages was fixed; - Minor memory leaks were fixed; - The bug with the drop-down list of fields was fixed; - Print and export in Delphi 11 was fixed; - The bug with Metal canvas in the report designer was fixed; - The height of barcode lines was fixed; - Dot and dash styles in PDF export were fixed; - The list of fonts in Linux was fixed; - The structure of ODT/ODS exports and output of images in RTF under libreoffice was fixed; - We have fixed the error for "No mapping for the Unicode character exists in the target multi-byte code page" when loading text from a stream; - We have fixed HTML tags. ### Report export in FastReport.OpenSource URL: https://www.fast-report.com/blogs/report-export-opensource FastReport.OpenSource has gained a lot of interest among many developers. This is a great report generator with a long history. The open source version is FastReport.Core, which appeared at the beginning of 2018, but with some restrictions. Namely - curtailed exports. Thus, only the following formats are available to us: HTML, BMP, PNG, JPEG, GIF, TIFF, EMF. Of course, this is very little. The WebReport object displays the report in html format, so it was left. It is noteworthy that in the WebReport object, we can only save the report to the fpx preview format. Therefore, you will have to export the report from the application code. Let's have a look at how it will look like by example. I will describe in details the whole process of creating a demo application so that you can repeat if you wish. Create an ASP .Net Core 2.0 project. Next, we add packages from the NuGet repository: FastReport.OpenSource and FastReport.OpenSource.Web. Now you need to add the use of the FastReport libraries to the Startup.cs file Let's use the Index view. Change it like this: ``` @using (Html.BeginForm("Save", "Home", FormMethod.Get)) { }  
```  We will display the report in a picture format, as well as a link to download the report in HTML format. Initially, we will have a download button that initiates the formation of the report file html. Then comes the image. But the file for it will be generated on the fly from the GetImage method in the controller. Let's go to the HomeController.cs controller. We will need these libraries: ``` using System.IO; using System.Diagnostics; using Microsoft.AspNetCore.Mvc; using OpenSourceReportExport.Models; using FastReport; using FastReport.Export.Image; using FastReport.Export.Html; using System.Data; using Microsoft.AspNetCore.Hosting; ```  To set the correct file paths on the server, we use the IHostingEnvironment interface. To do this, we pass the object of type IHostingEnvironment to the controller's constructor. ``` public HomeController(IHostingEnvironment hostingEnvironment) { _hostingEnvironment = hostingEnvironment; }   private IHostingEnvironment _hostingEnvironment; ```  Index method is left unchanged: ``` public IActionResult Index() { return View(); } ```  Add a new method to get the report as an image. So we will export to image, for example, jpeg format: ``` public IActionResult GetImage() { // Creatint the Report object using (Report report = new Report()) { string path = _hostingEnvironment.WebRootPath; // Loading a report report.Load(path + "\\App_Data\\Master-Detail.frx"); DataSet data = new DataSet(); data.ReadXml(path + "\\App_Data\\nwind.xml"); //Open xml database report.RegisterData(data, "NorthWind"); //Register data source in the report report.Prepare();// Preparing a report   // Creating the Image export using (ImageExport image = new ImageExport()) { image.ImageFormat = ImageExportFormat.Jpeg; image.JpegQuality = 100; // Set up the quality image.Resolution = 100; // Set up a resolution image.SeparateFiles = false; // We need all pages in one big single file   using (MemoryStream st = new MemoryStream())// Using stream to save export { report.Export(image, st); return base.File(st.ToArray(), "image/jpeg"); } } } } ```  The second method is to save the export report in html format. Roughly speaking,this methods is pretty much the same as the previous one. ``` [HttpGet] public ActionResult Save() { using (Report report = new Report()) { string path = _hostingEnvironment.WebRootPath; // Loading a report report.Load(path + "\\App_Data\\Master-Detail.frx"); DataSet data = new DataSet(); data.ReadXml(path + "\\App_Data\\nwind.xml"); //Open xml database report.RegisterData(data, "NorthWind"); //Register data source in the report report.Prepare();// Preparing a report   // Creating the HTML export using (HTMLExport html = new HTMLExport()) { using (FileStream st = new FileStream(path + "\\App_Data\\test.html", FileMode.Create)) { report.Export(html, st); return File("App_Data/test.html", "application/octet-stream", "Test.html"); } } } } ```  In this method we got one html file. And this means that there will be no pictures in it. To save the html file with images, you need to save the files in a loop. An example of such an export can be found in the FastReport Open Source documentation: https://fastreports.github.io/FastReport.Documentation/Exporting.html . Let's run our application: The image contains all report pages, because we set the SeparateFiles property = false. Otherwise, you would have to display several files. Press the button Save report in HTML: And the file is automatically loaded by the browser. That's all. As you can see, the implementation of export in code in FastReport Open Source has no difference from FastReport.Core. Tags: Export, Export, FastReport, FastReport, Open Source, Open Source ### Report generator based on Avalonia UI: FastReport Avalonia URL: https://www.fast-report.com/news/announcement-fastreport-avalonia Summary: We are announcing a new Avalonia UI-based report generator for cross-platform development on Linux, macOS and Windows systems. We are announcing a new Avalonia UI-based report generator for cross-platform development on Linux, macOS and Windows systems. This spring we will release a powerful library with a single user interface that allows you to embed the report generator in Linux, macOS and Windows applications using  Avalonia UI . Avalonia UI is a .NET-based framework actively used for developing cross-platform user interfaces. With a universal API for building applications, Avalonia supports all major platforms and runtimes and has its own unique interface. Thus, your business solutions will look identical on each operating system. FastReport Avalonia includes a powerful data processing core, a familiar report designer and a viewer for ready-made reports. Also in the new product, all formats for exporting the generated report are available - PDF, Excel, MS Word and many others. The library is fully backward compatible with FastReport WPF , FastReport .NET , FastReport Mono . It supports Avalonia UI, .NET 7 and .NET 8. And even before the official release, we invite you to try its features in a free demo! Learn more about FastReport Avalonia and try the free demo now. Download demo for Windows Download demo for Linux Download demo for macOS ### Report generator in Visual Studio Express Edition URL: https://www.fast-report.com/news/report-generator-visual-studio Summary: Report generator with visual designer in Visual Studio Express Edition Report generator with visual designer in Visual Studio Express Edition Visual Studio Express Edition by Microsoft is a popular software development enveronment. It is popular also because it is free. By the way this tool as all that is free has some lacks. In particular complexities with using some add-onces, third party components. For example many popular component-packs for .NET have reporting tools in set. Often they use developers environment of Visual Studio (fully or partially) as the visual report development environment. But such way is impossible in Express Edition. FastReport .NET uses another approach. There are own fully independent report designer which can be called from application (from Winforms Edition and higher). That is Visual Studioàs envirinment does not need for visual design of reports.  read more... ### Report generator with visual designer in Visual Studio Express Edition URL: https://www.fast-report.com/blogs/report-generator-visual-designer  Visual Studio Express Edition by Microsoft is a popular software development enveronment. It is popular also because it is free. By the way this tool as all that is free has some lacks. In particular complexities with using some add-onces, third party components. For example many popular component-packs for .Net have reporting tools in set. Often they use developers environment of Visual Studio (fully or partially) as the visual report development environment. But such way is impossible in Express Edition. FastReport.Net uses another approach. There are own fully independent report designer which can be called from application (from Winforms Edition and higher). That is Visual Studioàs envirinment does not need for visual design of reports. So - let's setup FastReport.Net to Visual Studio Express Edition: 1. Create new project in Visual Studio. 2. Right mouse click somewhere on the blank place on Toolbox. 3. Select "Add tab" in context menu. 4. Give the name for new tab, for example FastReports Components. 5. Right mouse click on blank place of our new tab . 6. Select Choose Items in the context menu. 7. Press button "Browse..." Find and set FastReport.dll. It placed at the root folder of FastReport .NET. 8. Components will be shown on tab .NET Framework Components. Ypu can sort them by Namespace. All the components of FastReport .NET are placed on namespace FastReport. Check all needed components and press OK. Run report designer. Examle on C# Report report = new Report(); report.Design(); This is it. Tags: .NET, .NET, Visual Studio, Visual Studio, Express Edition, Express Edition, FastReport, FastReport ### Report generators family FastReport brief review URL: https://www.fast-report.com/blogs/Report-generators-FastReport Summary: Describing FastReport .NET generator, its capabilities and advantages. Describing FastReport .NET generator, its capabilities and advantages. Describing FastReport .NET generator, its capabilities and advantages. Without reporting it is impossible to carry on business in any sphere of life. Bureaucracy is an irresistible part of human society. Whether it's steel plant or a school facultative - reports are needed everywhere: accounting, statistical, operational. Since the modern world strongly computerized - reports are also conducted electronically. Create reports in large quantities would be very difficult without special programs - report generator. FastReport report generator appeared in the early days of this kind of software, and became a real hit among Delphi programmers. And with the advent of version .NET Framework - it also became widespread among the adherents of the Microsoft platform. The name FastReport was created for a reason. This report generator is indeed one of the fastest in compiling complex reports. This can be said to be its main advantage over other competitors. As noted above, the FastReport report generator is designed for different platforms. In fact, these are different products with the same ideology and similar implementation. There are products to work with such frameworks as VCL, FMX, Lazarus, .NET , .Mono. FastReport features can be described for a long time, so we will consider the most important ones: The core is the engine of the report generator that allows you to create: Reporting from code  - thanks to FastReport's public library methods, you can easily create reporting objects and change their nature. In this way, you can create a complete report without a report designer. However, this needs to be understood on the basis of reporting principles; Multi-page report  - as the template is filled with data, the report is divided into pages. But you can create multiple templates - pages in a report. So you create essentially several reports within one; Web reports  - web reports are supported. Depending on the target platform, it can be a solution for ASP .NET (Core) or a Report Server for VCL. You will be able to view reports in a browser, go to the press and to perform exports in the available formats. In addition, it is possible to distinguish between access to reports on a report server (for VCL); Inheritance  - a mechanism that allows you to use a basic template in many reports. Thus, we can minimize the work of creating the same type of reports or reports with a corporate title; Cross-table  - the ability to use spreadsheets - a popular tool for data analysis Interactive reports  - reports that respond to user actions. For example, clicking on the item will result in appearance of detailing the table or hiding / opening list; Subreports  - the ability to embed one report to another. In fact, when placing an object Subreport on the page, it creates a pattern on a separate page. Number subreports are not limited to; Export - option to convert the report to one of the many popular formats: Adobe Acrobat (PDF); Rich Text; HTML; MHT; XML; Excel 2007; Excel 97; Microsoft Word 2007; Microsoft PowerPoint 2007; OpenOffice Calc; OpenOffice Writer; Microsoft XPS; CSV; DBF; Text; ZPL; Image (Jpeg, PNG, BMP, GIFF, TIFF, Windows metafile); XAML; SVG; PPML; PostScript; Json; LaTeX. Sending by Email  – the ability to send the report by email Report designer Interface  - a modern Ribbon interface is convenient for easy access to controls. This type of interface is used in Microsoft Office since 2007; Ability to embed in an application  - report designer made a separate program (library) that allows you to run it on its own, or to include in your custom application; Preview mode  - in the Report Designer, you can view reports in built form. This mode also allows you to export the report, print, send email; Master  – there are a lot of masters available in the designer, which accelerate the process of creating the report. For example, a new report wizard allows only a few steps to create the finished sample report with a data connection. A wizard for creating a data source - creates a connection to the database, and in a few clicks; Plug-ins  - the abilities of the report designer can be extended with plugins. Basically these are plugin - connectors for quick connection to the data source, but there are also plug-ins that add new objects to be placed in the report. Report. Template pages of bands  - the ideology of building a page report based on the Band - special containers for data, which are divided by purpose and have individual behavior. For example, band "Report Title" is displayed at the very beginning, at the top of the page only once. A Band "page title" appears at the top of each new page, but it is below the title on the first page of the report. Also band exists for the data output are repeated for each entry in the table, band groups, and other cellar band; Functions and variables  - in the report, you can use a variety of built-in and user-defined functions for data transformation, as well as variables. Variables can get values from the outside report that allows you to control the logic of the report from the user application; User form - before you build a report, you can deduce a user form, or several in a row. These forms are needed to determine the value of report variables, or to set the conditions for data filtering; the report has a built-in script that allows you to access any of the report's objects and properties. This means you can do everything with the report: filter the data, change the logic of data output, convert data, add and delete objects, and more; XML format  - the report template is an XML format, although it is extended. In this way, you can easily find the direction in the report template, when you browse through the familiar markup language in the text editor; In conclusion, we can say that due to the wide toolkit, multi-platform and the presence of a script built into the report, FastReport report generator can satisfy almost all user requests and are a universal solution for a wide range of tasks in the field of electronic document management. Tags: .NET, .NET, VCL, VCL, FMX, FMX, Lazarus, Lazarus, FastReport, FastReport, ASP.NET, ASP.NET, Core, Core, C#, C#, Report, Report, .NET5, .NET5 ### Report on entire web page URL: https://www.fast-report.com/blogs/report-entire-web-page In previous articles, we discussed how to create a web report. And it looked like this: Agree that not very attractive looks. Scroll bars, a small display area of the report. But it is possible to stretch a report on the entire page. To do this, set the properties of an object WebReport1 SinglePage how true. This means that the report will be displayed without page breaks. Change the Width and Heigh to 100%. Thus we get a report on a single page, stretched to the entire available width and height of the page. Since the report has only one page, you can hide the toolbar above. To do this, ShowToolbar property is set to false. As you can see, the page of the report does take 100% of the available space. You can stretch the contents of the report on the entire page, if required. We use the property AutoWidth of WebReport object. If you enable it, the cells of the table will be automatically stretched to the desired width to fill the area of the report page. Moreover, when the browser window is resized, the width of the cell will be adjusted to display all the data. But for this property must disable another - Layers. This report will be exported to a HTML as tabular. Now let's see how the report changed: And so, if you resize the window: So, using the properties of the object WebReport you can easily improve the appearance of the Web report. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport ### Report script security URL: https://www.fast-report.com/blogs/report-script-security Summary: Talking about the special tools for protecting your script on FastReport .NET, FastReport .NET Core, FastReport Mono and FastReport Open Source Talking about the special tools for protecting your script on FastReport .NET, FastReport .NET Core, FastReport Mono and FastReport Open Source Talking about the special tools for protecting your script on FastReport .NET, FastReport .NET Core, FastReport Mono and FastReport Open Source FastReport .NET  supports calculation of expressions for displaying values in the desired form, or any object visibility conditions. It is also possible to process events for each object of the report, e.g., before printing it. Event handlers are placed in a report script that supports C # and VB.NET languages. In addition to processing events, the script can contain almost any calculations or actions that can generate the necessary data or change the report behavior, as is required by the developer of the report template. Before building the program in the report script language, the report generator takes into account all expressions, functions, and calls to parameters in the report. Then the program is combined with the script that the report template developer had written. The resulting script is compiled and loaded as a library into the application that works with the report generator. When you run reports in web applications, you can edit them using the Online Designer . Editing is carried out using a browser, the edited report is sent to the server and then can be built there. While reports are edited by trusted developers and run in an isolated environment, the ability to use scripts in reports gives you freedom and almost unlimited possibilities for data processing and visualization. Editing and execution is under control. As soon as the possibility of general access to editing reports through the browser and Online Designer appears, the question of the building reports security on the server arises. It becomes possible to inject malicious code into script and report expressions. To prevent the execution of malicious code in the script and report expressions when working on the web, special security features have been added in FastReport .NET 2020.3.22 . The changes concern FastReport .NET, FastReport .NET Core, FastReport Mono and FastReport Open Source. Security features are active by default, but developers can change or disable them as needed in their applications. New properties and methods: bool FastReport.Utils.Config. EnableScriptSecurity – enables or disables checking of the report script. Works only when reports are running in web applications (FastReport.Utils.Config.WebMode == true). This property is set True by default (enabled). event FastReport.Utils.Config. OnEnableScriptSecurityChanged – the event is triggered when EnableScriptSecurity has been changed. Can be used for additional security controls. FastReport.Web.WebReport. SetScriptSecurity (IScriptChecker scriptChecker) - Installs a custom implementation of a verification method that overrides the built-in security controls. ScriptSecurityProperties FastReport.Utils.Config. ScriptSecurityProps - parameters for configuring the script security check. Is set NULL if a non-web application is running. (FastReport.Utils.Config.WebMode == false). bool FastReport.Utils.Config.ScriptSecurityProps. AddStubClasses – enables or disables adding stub classes for the script. This property is set True by default (enabled). Not overridden by setting your own SetScriptSecurity handler (see above). event FastReport.Utils.Config.ScriptSecurityProps. OnStopListChanged – the event is called when the StopList has been changed. Can be used for additional security controls. string[] FastReport.Utils.Config.ScriptSecurityProps. StopList - a list of keywords that should not be used in the report script. Contains a default list of words. FastReport.Utils.Config.ScriptSecurityProps. SetDefaultStopList() - sets the default value of the StopList (discards changes). The developed report script protection complex allows to minimize the threat of malicious code injection and its execution on the server side. It is necessary to remember that even the use of built-in report script security controls does not provide one hundred percent protection against the injection of malicious code into the saved templates. Therefore, we strongly recommend keeping access logs in web applications and allowing a limited number of privileged users to edit report templates.  Tags: .NET, .NET, Core, Core, Open Source, Open Source, Script, Script ### Report validation feature in FastReport .NET and Mono URL: https://www.fast-report.com/blogs/validation-feature-net-mono Summary: Test our new report validator to check object configurations in the FastReport designer.NET and FastReport Mono. Test our new report validator to check object configurations in the FastReport designer.NET and FastReport Mono. Test our new report validator to check object configurations in the FastReport designer.NET and FastReport Mono. The "Validation" window has been added to the FastReport .NET designer and FastReport Mono, which will display errors and warnings.  Warning - Unwanted object configuration that may cause some graphical errors when exported or previewed. Errors - The object configuration will result in export errors or blocking when trying to build a report. Now the report is being checked for basic errors that occur during the creation of report templates: 1. Intersecting objects. 2. Objects that are partially or completely beyond the parent object. 3. Objects with zero height and width 4. Objects without name (property Name = ""). 5. Objects with the same name. To open the "Validation" window, go to the "View" tab, click on the "Panels" button and select "Validation" in the appearing list. When you click on a line with an error in the "Validation" window, the object related to this error will be highlighted in the designer. With the “Validation” window, users can easily find errors and omissions in their reports and avoid errors in exported documents or problems during the preview. Tags: .NET, Mono, FastReport ### Report with two data levels (master-detail) in Delphi/Lazarus by the example of FastReport VCL / FMX URL: https://www.fast-report.com/blogs/master-detail-report-vcl-fmx Summary: FastReport's powerful "Multi-level Reports" feature allows you to collect reports from multiple tables. FastReport supports nesting up to 6 levels using the "Nested Report" object FastReport's powerful "Multi-level Reports" feature allows you to collect reports from multiple tables. FastReport supports nesting up to 6 levels using the "Nested Report" object FastReport's powerful "Multi-level Reports" feature allows you to collect reports from multiple tables. In this article I would like to tell you about such a powerful opportunity of FastReport as multilevel reports. Their structure can be compared to a tree – a trunk, large branches, thinner branches growing from them, and so on up to leaves – or with a company structure: divisions, subdivisions, employees. They are often called master-detail or master-subordinate and consist of several tables. One table contains a list of the main entities; another table bound with the first one contains a list of subordinate entities with a reference to the first table specifying which entity from the first table a certain entity from the second one is subordinate to, and so on. FastReport supports nesting of up to six levels (possibly more by using the Nested report object, but this will be described later). In real applications, one rarely has to print reports with large nesting of data; usually, 1–3 levels are enough. An example of building a master-detail report Let us consider creation of a two-level report. It will contain data from Customer and Orders tables. The first table is a list of customers; the second is a list of orders made by the customers. The tables contain the data of the following types: Customer: CustNo       Company 1221          Kauai Dive Shoppe 1231          Unisco 1351          Sight Diver Orders: OrderNo       CustNo       SaleDate 1003            1351          12.04.1988 1023            1221          01.07.1988 1052            1351          06.01.1989 1055            1351          04.02.1989 1060            1231          28.02.1989 1123            1221          24.08.1993 As one can see, the second table contains a list of all orders made by all companies. To get a list of orders made by a specific company, on should select the data from the table, for which the field CustNo is equal to the number of the selected company. The report built with these data will look like this: 1221 Kauai Dive Shoppe     1023 01.07.1988     1123 24.08.1993 1231 Unisco     1060 28.02.1989 1351 Sight Diver     1003 12.04.1988     1052 06.01.1989     1055 04.02.1989 Now we start making a report. We create a new project in Delphi and set for a form two TTable components, a TDataSource component, two TfrxDBDataSet components, and one TfrxReport component. Connecting data from the base to the report objects We set the components as follows: ``` Table1: DatabaseName = 'DBDEMOS' TableName = 'Customer.db' Table2: DatabaseName = 'DBDEMOS' TableName = 'Orders.db'   DataSource1: DataSet = Table1   frxDBDataSet1: DataSet = Table1 UserName = 'Customers'   frxDBDataSet2: DataSet = Table2 UserName = 'Orders'   ``` In the report designer, we connect our data sources in the Report|Data… window.  Add the 1st level data (master) and the 2nd level data (detail) bands to the page. From the data panel (on the right), we pull the table fields to the respective bands (master and detail). It will look like this: Attention – the 1st level data band must be located above! If it is located below the 2nd level data band, FastReport will inform of an error when a report is started. After starting we will see that the list of orders is the same for every customer and contains all records from the Orders table. This is because we did not switch on filtration of records in the Orders table. Let us return to our data sources. For the Table 2 component, we set the MasterSource = DataSource1 property. Thus, we set the master-subordinate connection. Now we have to set the condition of records filtration in the subordinate source. To do that, call the editor of the MasterFields property at the Table 2 component: We have to connect two CustNo fields in both sources. To do that, select the CustNo index in the list above, select the fields and click the Add button. The bunch of fields will be relocated into the lower window. After that, close the editor with ОК button. When a report is launched, FastReport will do the following. It will select the next recording from the main table (Customer) and set the filter to the subordinate table (Orders). Only the recordings which satisfy the condition Orders.CustNo = Customer.CustNo will be left in the table. That is, for each customer only the orders of that customer will be shown: Similarly, you may build reports with up to six data levels. Tags: VCL, VCL, FMX, FMX, Lazarus, Lazarus, FastReport, FastReport, Delphi, Delphi ### Reporting FMX URL: https://www.fast-report.com/products/reporting-fmx Summary: A cross-platform set of FMX components for creating documents based on Embarcadero FireMonkey A cross-platform set of FMX components for creating documents based on Embarcadero FireMonkey A cross-platform set of FMX components for creating reports and documents based on the Embarcadero FireMonkey development environment. Reporting FMX A cross-platform set of FMX components for creating documents based on Embarcadero FireMonkey Buy Try for free Documentation Lots of components A variety of elements are available for building reports in the designer: from text and images to mathematical formulas and 3D diagrams. Quick access to the report and data structure From the report tree and properties tree, you can edit the report structure, parameters, and filters, as well as data sources with global styles. Safety Protect your templates and reports with strong data encryption. Adapt all source codes to suit your solutions. Source code This set of components includes FastReport source codes. Maximum convenience for companies wishing to adapt the code to their needs. Flexible and open architecture If FastReport's functionality is not enough for you, you can improve it by creating and connecting your objects (export filters, databases) to your reports. Graphics core For creating graphical elements, rendering text, and managing graphic images, GDI+, D2D, and, of course, Quartz can be used. Ultimate VCL Learn more about Ultimate VCL Report with two data levels (master-detail) in Delphi/Lazarus by the example of FastReport VCL / FMX FastReport's powerful "Multi-level Reports" feature allows you to collect reports from multiple tables. FastReport's powerful "Multi-level Reports" feature allows you to collect reports from multiple tables. FastReport supports nesting up to 6 levels using the "Nested Report" object How to install and use FastReport FMX 2.8 for FmxLinux How to install and use FastReport FMX 2.8 for FmxLinux. Quick start guide. How to install and use FastReport FMX 2.8 for FmxLinux. Quick start guide. Report generators family FastReport brief review Describing FastReport .NET generator, its capabilities and advantages. Describing FastReport .NET generator, its capabilities and advantages. Any other questions? Contact the manager ### Reporting FMX - FAQ URL: https://www.fast-report.com/faqs/reporting-fmx Summary: Explore reporting solutions in FMX with FastReport and get tips on how to enhance your reports. Explore reporting solutions in FMX with FastReport and get tips on how to enhance your reports. Is the product compatible with the UniGUI framework? Yes, our product is compatible with the UniGUI framework Is there support for macOS? Yes, there is support for Windows, macOS, and Linux Which IDE versions does FastReport FMX support? From the Delphi XE2 version to the current version. Is there support for Lazarus? The FMX framework does not support Lazarus. If you need to create reports in Lazarus, our FastReport VCL as a package **[Reporting Lazarus](https://www.fast-report.com/products/reporting-lazarus)** is perfect for you. Is there support for Linux? Support is available with the FMXLinux framework. For more information, see **[How to install and Use FastReport FMX 2.8 for FmxLinux](https://www.fast-report.com/blogs/install-fmx-linux)** Is the product compatible with the FMXLinux framework? FastReport FMX supports the FMXLinux framework. For more information, see **[How to install and Use FastReport FMX 2.8 for FmxLinux](https://www.fast-report.com/blogs/install-fmx-linux)** ### Reporting Lazarus URL: https://www.fast-report.com/products/reporting-lazarus Summary: A universal LCL set of components with source codes for generating reports and documents on Lazarus for Linux and Windows A universal LCL set of components with source codes for generating reports and documents on Lazarus for Linux and Windows A universal LCL set of components with source codes for generating reports and documents on Lazarus for Linux and Windows. Reporting Lazarus A universal LCL set of components with source codes for generating reports and documents on Lazarus for Linux and Windows Buy Try for free Documentation Lots of components A variety of elements are available for building reports in the designer: from text and images to tables and interactive maps. Quick access to the report and data structure From the report tree and properties tree, you can edit the report structure, parameters, and filters, as well as data sources with global styles. Safety Protect your templates and reports with strong data encryption. Adapt all source codes to suit your solutions. Flexible and open architecture If FastReport's functionality is not enough for you, you can improve it by creating and connecting your objects (export filters, databases) to your reports. Graphics core GDI and GTK are used to create graphic elements, render text, and manage graphics. Source code This set of components includes FastReport source codes. Maximum convenience for companies wishing to adapt the code to their needs. Ultimate VCL Learn more about Ultimate VCL FastReport VCL: How 25 Years of Innovation Changed the Approach to Reporting in VCL Applications FastReport VCL is a report generation tool that has become an essential part of developers' arsenal on the Delphi platform over more than a quarter of a century. Since its inception in the late 1990s, the product has evolved from a simple template designer into a comprehensive system that supports interactive elements, vector graphics, and integration with modern IDEs. We decided to take a look back to demonstrate how reporting technologies have changed and to trace the key stages of the product's development in each version. We decided to take a look back to demonstrate how reporting technologies have changed and to trace the key stages of FastReport VCL development in each version. Localization and Language Switching in FastReport VCL Starting from version 2023.2, the localization mechanism in FastReport VCL has been significantly improved — it is no longer necessary to recompile in order to translate FastReport into other languages. FastReport VCL supports 40 languages for interface localization and allows you to change the language on the fly through menus or code, without recompilation. How to Set Up WSL 2 for Working with FastReport and FastCube In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. In this article, we will explore how to set up WSL 2 for working with FastReport and FastCube components in Lazarus for Linux. Any other questions? Contact the manager ### Reporting VCL URL: https://www.fast-report.com/products/reporting-vcl Summary: A set of VCL components with full source codes for creating reports and documents A set of VCL components with full source codes for creating reports and documents A set of VCL components with full source codes for creating reports from a visual designer with export to various data formats. Reporting VCL A set of VCL components with full source codes for creating reports and documents Buy Try for free Documentation Lots of components A variety of elements are available for building reports in the designer: from text and images to mathematical formulas and 3D diagrams. Quick access to the report and data structure From the report tree and properties tree, you can edit the report structure, parameters, and filters, as well as data sources with global styles. Compatibility and integration Reporting VCL is part of the unified FastReport ecosystem on Delphi. Reports created in the Lazarus solution will work in the Reporting VCL and vice versa. Smooth transition from other solutions Our report generator instantly converts your reports from Quick Report, Report Builder, and Rave Reports in FastReport format. Flexible and open architecture If FastReport's functionality is not enough for you, you can improve it by creating and connecting your objects (export filters, databases) to your reports. System.Drawing (GDI) The familiar System.Drawing with GDI graphics functions is used to create graphical elements, render text, and manage graphic images. Ultimate VCL Learn more about Ultimate VCL Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. The article provides a detailed overview of the watermark functionality in FastReport VCL — covering both the visual interface and programmatic methods using Delphi code and report scripts. Any other questions? Contact the manager ### Reporting with PostgreSQL in a .NET 5 application for Debian 10 URL: https://www.fast-report.com/blogs/report-postgresql-dotnet-debian Summary: Example of a report with code based on the FastReport library.Core using SQL databases on the Debian 10 operating system. Example of a report with code based on the FastReport library.Core using SQL databases on the Debian 10 operating system. Example of a report with code based on the FastReport library.Core using SQL databases on the Debian 10 operating system. Many need a solution that will generate reports for Linux systems, and support working with SQL-like databases and not only. We have such a solution FastReport.Core. This library allows you to create reports under different Linux distributions and it can connect to different databases. In this article, we will look at how to implement this on a Debian 10 distribution using PostgreSQL. First, install PostgreSQL on Debian 10. You can find a detailed installation at  the following link . Let's check the Postgres performance by going to the terminal. Switch to the postgres account with the following command: ``` $ sudo -i -u postgres ``` After that, write the following to access the postgres shell: ``` $ psql ``` Now we have access to the postgres command line, and additionally, we have checked that it works. Add a password for postgres user instead of 'password123': ``` ALTER USER postgres WITH PASSWORD ‘password123’ ``` Let's create a test table: ``` CREATE TABLE test (city varchar(80), temp_lo int, temp_hi int); ``` Fill it with data: ``` INSERT INTO test VALUES ('Chicago',30,40); ``` Done, now check the table for data with the following command. The result is shown in the figure below. ``` SELECT * FROM test; ``` To create an application on .NET 5.0, we need to install DotNet itself. Go to the page with detailed installation  and look closely at all the necessary points. For more convenient work, you can download VS code  at this link . Then download the deb package and install it on your computer. Download the C# and Nuget Gallery plugins in VS code. The latter is needed for easy search and correct installation of nuget packages. We create a project in VS code, for this, we press ctrl + J to open the console inside VS code. Then enter this command: ``` dotnet new console ``` After creating the project, we need to download and install the necessary libraries. Upon completion of the previous steps, open the Nuget Gallery in a test project. Find FastReport.Core and install it. Be sure to check the box next to Prerelease, as this package is a demo version, otherwise, the package will not be displayed. The connector is not a demo version, so you don’t have to check the Prerelease box. It is enough to find FastReport.Data.Postgres in the search bar and install it in the same way as the previous package. After installing all the necessary components, open Program.cs in our project and paste the following code into the main method: ``` using System; using FastReport; using FastReport.Data; using FastReport.Utils; using FastReport.Export.Pdf;   static void Main(string[] args) { //Creating a connection to PostgreSQL   RegisteredObjects.AddConnection(typeof(PostgresDataConnection)); PostgresDataConnection connection = new PostgresDataConnection(); connection.ConnectionString = "Host=localhost;Username=postgres;Password=1234;Database=postgres"; connection.CreateAllTables();   //Creating a report and connecting the database and table to the report   Report report = new Report(); report.Dictionary.Connections.Add(connection); connection.Enabled = true;   foreach(TableDataSource table in connection.Tables) { if(table.Name == "public_test") { table.Enabled = true; } }   ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName();   DataBand dataBand = new DataBand(); page.Bands.Add(dataBand); dataBand.CreateUniqueName();   //Assigning DataBend to our table   dataBand.DataSource = report.GetDataSource("public_test"); dataBand.Height = Units.Centimeters * 0.5f;   TextObject City = new TextObject(); City.CreateUniqueName(); City.Bounds = new System.Drawing.RectangleF(0,0,100,100); City.Parent = dataBand;   //Assigning values to a text object from a DB field   City.Text = "[public_test.city]";   TextObject temp_lo = new TextObject(); temp_lo.CreateUniqueName(); temp_lo.Bounds = new System.Drawing.RectangleF(150,0,100,100); temp_lo.Parent = dataBand; temp_lo.Text = "[public_test.temp_lo]";   TextObject temp_hi = new TextObject(); temp_hi.CreateUniqueName(); temp_hi.Bounds = new System.Drawing.RectangleF(300,0,100,100); temp_hi.Parent = dataBand; temp_hi.Text = "[public_test.temp_hi]";   report.Prepare();   PDFExport pDF = new PDFExport(); pDF.Export(report,"test.pdf");   } ``` Then let’s compile and run our project. It will generate the following PDF report file: The conclusion will be very simple. Connecting a database to your application is not difficult, just today, we created a report using data from a PostgreSQL database in a Debian 10 distribution. Tags: .NET, .NET, Visual Studio, Visual Studio, FastReport, FastReport, Linux, Linux, Core, Core, SQL, SQL, .NET5, .NET5, NuGet, NuGet ### Reports and PDF documents in Blazor URL: https://www.fast-report.com/blogs/reports-and-pdf-in-blazor Summary: Step-by-step creation of a simple web application based on Blazor Server technology. Step-by-step creation of a simple web application based on Blazor Server technology. Step-by-step creation of a simple web application based on Blazor Server technology. Microsoft has recently launched a web platform called Blazor. This framework allows creating an interactive web interface with the C# language, as well as HTML and CSS. Blazor is highly demanded and rapidly gains popularity among many .NET developers. We have updated the FastReport.Web package, adding Blazor components for working with reports in web applications based on Blazor Server technology. These components are used in .NET Core 3.1 (and higher) and are in beta status and will be improved over time. Below we describe the creation of a simple web application based on Blazor Server technology. You can download this demo project in my profile at GitHub . To begin with, we create our new project. We will use a ready template for Blazor Server.  You can create a project with Visual Studio (both for Windows and for macOS) or with.NET CLI. In both cases, we will need.NET Core SDK (.NET SDK) version 3.1 or newer, which can be downloaded from the Microsoft official website. Visual Studio 2019: For .NET CLI we type the following command in the console (terminal): ``` dotnet new blazorserver ``` We see the following project structure: To simplify the project, we delete some unnecessary files from the created template: - the whole Data folder - Pages\Counter.razor - Pages\FetchData.razor - Shared\SurveyPrompt.razor We add a new folder called “Reports” to our project folder and place all necessary reports into it. For demonstration, I have added simple reports which are applied during installation of the FastReport demoversion : Simple List, Complex (Master-detail + Group), Subreport, Barcode, and Chart. Also, for these reports we need a database in xml - nwind.xml format; we place it in the same folder. Also, it is necessary that the content of the Reports folder could be copied into the output folder; for that, we select the relevant files in Visual Studio and “Copy if newer” in Properties. If there is no Visual Studio, you may manually indicate this property in the project file (.csproj): ``` PreserveNewest ``` Then we have to add FastReport.Core and FastReport.Web packages to our project. This can be done also via Visual Studio or via .NET CLI. Let us consider both variants. To add a package to Visual Studio, click the right mouse button on our project file (csproj). A context menu opens; select “Manage NuGet packages”. Search for both necessary packages. Mind that the tick “Include prerelease” must be active. To add a package via .NET CLI, type the following commands: ``` dotnet add package FastReport.Core --prerelease dotnet add package FastReport.Web --prerelease ``` Then we should add the namespaces used by FastReport.Core and FastReport.Web into the list of files namespace used for Razor. For that, edit the _Imports.razor file by adding several lines: ``` @using FastReport@using FastReport.Web @using FastReport.Web.Blazor.Components ``` Register FastReport in the configuration of our application. To do that, open Startup.cs file and add the following line in the end of Configure method: ``` app.UseFastReport(); ``` In Pages\_Host.cshtml file, substitute the first line for the following: ``` @page "/{ReportName}" ``` This is necessary to make the URL able to contain the name of the report that we want to open. Then we edit the navigation menu Shared\NavMenu.razor to map all the available reports in the Reports folder and to switch between them. ``` @using System.IO    
  @code { // List of reports in folder private string[] reports = Directory.GetFiles( Path.Combine( Directory.GetCurrentDirectory(), "Reports")) .Where((filename) => Path.GetExtension(filename) == ".frx") .Select((filename) => Path.GetFileName(filename)) .ToArray(); } ``` Now we are coming to the main stage. Edit the Pages\Index.razor file to map reports with the main component of the FastReport.Web.Blazor library – WebReportContainer . Type the following: ``` @page "/" @page "/{ReportName}"     @code { [Parameter] public string ReportName { get; set; }   public WebReport MyWebReport { get; set; } }   ``` We have added the WebReportContainer component and attributed a single property to it – an object of WebReport class. Let us create another file with a similar name – Index.razor.cs next to the Pages\Index.razor file and write a simple logic in it: ``` using System.IO; using System.Data; using FastReport; using FastReport.Web;   namespace DemoBlazor.Pages { public partial class Index { const string DEFAULT_REPORT = "Simple List.frx"; readonly string directory;   DataSet DataSet { get; }   protected override void OnParametersSet() { base.OnParametersSet();   var report = Report.FromFile( Path.Combine( directory, string.IsNullOrEmpty(ReportName) ? DEFAULT_REPORT : ReportName));   // Registers the user dataset report.RegisterData(DataSet, "NorthWind");   // Create new WebReport object MyWebReport = new WebReport { Report = report, }; }   public Index() { directory = Path.Combine( Directory.GetCurrentDirectory(), Path.Combine("Reports"));   DataSet = new DataSet(); DataSet.ReadXml(Path.Combine(directory, "nwind.xml")); } } } ``` This logic is responsible for registering data, creating a WebReport object, attributing the necessary parameters to it, including the very Report which we download either from the report name in the enquire line or use by default, defined in the constant DEFAULT_REPORT. After the remaining minor manipulations with the style and formatting, we get a web application that can handle reports and provides an opportunity to create documents in various formats (PDF, Excel, Word, and Open Office). Useful links: - Documentation (en):  https://www.fast-report.com/public_download/docs/FRNet/online/en/ProgrammerManual/en-US/UsingBlazor.html - Online demo: https://fastreportwebblazor.azurewebsites.net/ - NuGet package: https://www.nuget.org/packages/FastReport.Web Tags: .NET, Visual Studio, FastReport, Core, C#, Blazor ### Representation for tabular data in Excel export URL: https://www.fast-report.com/blogs/representation-tabular-excel One of the most demanded formats of report exporting is Excel file. It's the most popular format in accounting reporting. You can edit the report in Excel format using MS Excel tools further on. FastReport.Net provides the range of very interesting features of report export in Excel. Let's look at the window of report export settings to Excel 2007: So, we have the capability to export: all pages, current page, selected page. Now let’s consider the export options: • Wysiwyg - the precise location of the object after export, default true. If turned off, the border will be very "rounded". Empty rows and columns will be excluded. All this greatly changes the appearance of the report. You may disable this option if the appearance of the report does not really matter. Let us consider an example. Option Wysiwyg: And now with disabled option: Changed allocation of figures on the table columns. • Page breaks - page breaks when printing in accordance with the report pages, enabled by default. Let us consider an example. In the first case shows the excel page document when printing with the option Page breaks: In the second case shows the document with the disabled option Page breaks: Data only - just triggers the export of data band, is disabled by default Here’s how the document looks if the Data only property is disabled: The report looks the same as when you build it in the designer. Now we will do the export with enabled option Data only: As you can see just the bands with the data are displayed. There is no header, no footer. • Seamless table - allows you to remove from the export the footer bands and the following header band. This is designed to excel table looked like a uniform, with no breaks in the pages. The figure below shows a table broken by the band footer. Admit it, it’s not very convenient for an excel document. Now let's see what the table looks like, if you enable the option Seamless table: I want to say a few words about the development of reports. The report has a layered structure, and the Excel file - a tabular one. When exporting to Excel, FastReport converts layers into a table. If there is an intersection of cells in the report, the conversion algorithm may fail. Check the template to the intersection cells and the gaps between them, if you want to correct export to Excel. Tags: .NET, .NET, Export, Export, FastReport, FastReport, Excel, Excel ### Resolving Conflicts at FastReport.Net assemblies URL: https://www.fast-report.com/blogs/resolving-conflicts-net-assemblies Conflicts often occur If you use different versions of the same program. There might be different reasons for this.  Often after you remove the previous version - the old libraries still remain. Or a new version of the product can be installed "on top" of the previous one without prior proper removal. For example,  a strong indication of a conflict is a watermark of the demo version in the licensed version. Sometimes all you have to do is to correct references to the new libraries. But the used libraries can be from the GAC. One of the ways to resolve this issue is to completely remove FastReport .Net and reinstall it. Let's consider the process of the complete removal FastReport.Net: Close Visual Studio; Use FastReport.Net uninstall program from the control panel; Make sure that the folder "C: \ Program Files (x86) \ FastReports \ FastReport.Net Trial" removed, or delete it manually; In Windows Explorer, open the folder “C: \ Windows \ assembly”, and find in the list and delete libraries: FastReport, FastReport.Bars, FastReport.Editor, FastReport.VSDesign, FastReport.Web; In Windows Explorer, open the folder “C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL”, find the folder names with FastReport, FastReport.Bars, FastReport.Editor, FastReport.VSDesign, FastReport.Web and remove them; Delete the folder with the configuration files “C: \ Users \ USER_NAME \ AppData \ Local \ FastReport”. Removing a configuration may also be useful to restore the original location of the control objects in FastReport Designer; Re-install FastReport.Net. Let's look at the other possible sources of the conflict. • Wrong uninstall. If you just delete the folder with the program, conflicts are inevitable. Remove FastReport .Net using the uninstall utility from the folder with the program. • Damage to the official msi installer files. Also, these files can be deleted by utilities of the garbage cleaning or by user. We have examined the typical conflicts that may arise when you use FastReport.Net. Now you know how to avoid them. Tags: .NET, .NET, FastReport, FastReport ### Results of Embarcadero's webinar URL: https://www.fast-report.com/news/results-webinar-2012 Summary: Results of Embarcadero's webinar Results of Embarcadero's webinar As you know, on 7 F ebruary there was a webinar which was devoted to RAD Studio Reporting with FastReport.  Thank you everyone for participating! You can find a video from the webinar o n our Youtube channel . Go and subscribe to our  channel . Y ou can see a post ing about this webinar in Michael Philippenko ’s blog. ### Roslyn features in Visual Studio 2015 Preview URL: https://www.fast-report.com/blogs/roslyn-features-visual-studio Introduction Release of Visual Studio 2015 Preview includes new version of C# and VB.NET compilers called "Roslyn". Roslyn is a complete rewrite of C# and VB.NET compilers; if previously they were written in C++, now C# compiler is written in C#, and VB.NET compiler - in VB.NET respectively. Also Roslyn is fully open sourced and available on GitHub. When using the previous compiler, developer couldn't affect the compilation process. New compiler follows the idea of Compiler-as-a-Service: now it's a platform with API that allows the developers taking part in the compilation process. Benefits Refactoring becomes much easier. Developers of Visual Studio extensions can use the infrastructure of Roslyn to not waste their time on writing parsers and analyzers. Roslyn can be used in .NET applications to compile and execute dynamically generated code. Roslyn can greatly help in translating C# code to another programming language. New features based on Roslyn in VS 2015 Unused «using» directives are highlighted by gray color. Ctrl+. now contains the preview window that allows developers evaluating the result of the command. The menu Ctrl +. collected new commands to solve problems with the code and refactoring commands. Added new commands for refactoring: Inline temporary variable and Introduce local . Preview is available in renaming interface and it shows messages about possible errors. Tags: Visual Studio, Visual Studio ### Save $100 on PASS tickets in November! URL: https://www.fast-report.com/news/fastreport-economy-november-2019 Summary: Save $100 on PASS tickets in November! Save $100 on PASS tickets in November! We are excited to be a part of PASS Summit 2019 . Use promocode  PASSExhibitor  during registration to save $100 on your ticket. See you on November 5-8 in Seattle! ### Save the original image quality when exporting to PDF URL: https://www.fast-report.com/blogs/save-original-image-quality-pdf In PDF export report there is a new option - "Original Resolution". It allows you to save images in full resolution. Sometimes it is important to transfer an image with the original quality. Using this new option, you will be able to get the image from a PDF document without any quality loss. Here there is one restriction - you cannot rotate the image in the report because it will require a change of the image. However, FastReport has a special protection on the odd chance that you have rotated the image. PDF export will get the original picture. What if you find an image of not a desired angle in your PDF report? In this case, you should check the export options to make sure that the "Original Resolution" option is enabled. If it is necessary, you can scale the image. Let us take a look at the following example.  First, create a simple report. Add an object "Picture" to the report page. Double click on the added object "Picture". After this, a picture editor will open: Use the "Load" button and select the image on the local disk. Click "OK". Here, scaling of the object "Picture" is optional: Run the report in preview mode. Select «Save» -> «Adobe Acrobat» In the PDF export settings select the "Options" tab: Click "OK" and save the export file: Now change the report template. Establish the "Angle property" of the object "Picture" to 90 degrees. Take into account, that you should make export to PDF with the enabled "Original resolution": As you can see, the image has not been rotated by 90 degrees. Let us make another export to PDF, but with a disabled option "Original resolution": In this case, we get an image, rotated by 90 degrees. But what happened to the "original" image? The quality is lost. It is seen from the size of the file: In the last export, we have disabled the option "Original Resolution" and got the file size of 93 KB instead of 14 703 KB. You can stretch the image if you open your PDF file in the editor. In first two exports the picture with high resolution will retain quality: In the third one you will see a terrible pixelation: Summing up, in the article we have illustrated a method, that helps you to send documents, retaining the original image quality. Tags: .NET, .NET, FastReport, FastReport, PDF, PDF ### Saving a report in PDF/X format URL: https://www.fast-report.com/blogs/saving-report-pdf-x-format Summary: PDF/X format designed for the exchange of data, ready for printing. The idea is to create a document that can be printed on any printer identically. PDF/X format designed for the exchange of data, ready for printing. The idea is to create a document that can be printed on any printer identically. PDF/X format designed for the exchange of data, ready for printing. The idea is to create a document that can be printed on any printer identically. It is important for polygraphy, where it is important to print documents on any print device uniformly, whether the printer or plotter. PDF/X document contains color profiles for printers, due to which will be printed out exactly the color, which was conceived by the author. Thus, the standard PDF/X gives us guarantee of unchanging the final document. That makes PDF format ideal for document management in the sphere of publishing and polygraphy. The disadvantage of this format is the impossibility of use of properties: encryption, compression JBIG2 and transparent. PDF/X format designed for the exchange of data, ready for printing. The idea is to create a document that can be printed on any printer identically. It is important for polygraphy, where it is important to print documents on any print device uniformly, whether the printer or plotter. PDF/X document contains color profiles for printers, due to which will be printed out exactly the color, which was conceived by the author. Thus, the standard PDF/X gives us guarantee of unchanging the final document. That makes PDF format ideal for document management in the sphere of publishing and polygraphy. The disadvantage of this format is the impossibility of use of properties: encryption, compression JBIG2 and transparent. PDF/X standard is constantly evolving and has already presented 5 th generations: • PDF/X-1a - the first standard, designed to work with documents: black / white, CMYK or spot color; • PDF/X-3. The PDF/X-3 has a color management support; • PDF/X-2. Add-on PDF/X-3. Designed to interact more closely the supplier and the recipient of the file. Support OPI (Open Pre-Press Interface) and does not support embedded fonts; • PDF/X-4. The updated version of the PDF/X-3, which supports transparency and spot colors; • PDF/X-5. Based on PDF/X-4, allows external images. You probably noticed that the standard X-2 is located after X-3. It's not a mistake. Developers have created X-2 after X-3. Apparently they did not want a gap in numbering. FastReport.Net supports export to PDF/X-3 format. Thus, later on we will consider its features. There are some restrictions applicable to the PDF/X-3 files: • All fonts must be embedded in the document; • All the color data can be grayscale, CMYK or spot colors. It is also permissible RGB, LAB or ICC based color spaces. If you are using a device-independent color, the embedded ICC profiles and the Rendering Intent, should be taken into account when processing the PDF/X-3. This means that you need to know the color management process to be able to process PDF/X-3 files; • OPI is not allowed; • PDF/X-3 files can not contain music, videos, or other non-printing data; • If there are annotations (notes) to PDF, they should be located outside of the bleed; • The file should not contain any forms or Javascript code; • Supported by a limited number of compression algorithms; • You cannot use encryption; • Do not use curves; • Do not use transparency. In addition to restrictions there is also a list of what should be in PDF/X-file 3. This is what distinguishes it from ordinary PDF files: • metadata that indicates that the file is a PDF/X and some details indicating the version of the standard; • PDF/X-3 contains additional statements that define the bleed (bleed area) and the area to crop (trim area): MediaBox defines the size of the entire document; ArtBox or TrimBox defines the boundary of the printing area; If the file is printed with the bleed, you should ask BleedBox. It must be more than TrimBox / ArtBox, but less than the MediaBox. • The file must contain the ICC color profile, which specifies the color space CMYK. This profile should be implemented as OutputIntent. Now consider the process of creating a report export in PDF/X. So: - Prepare a report template and run it in preview mode; - Choose Export to PDF format. We are interested in "Settings" tab: There are some changes unlike in previous versions of FastReport. This tab looked like this, before: Added the new option " Lossless images". It allows you to use the original image without conversion to Jpeg. This is especially important for vector images and barcodes. The main differences in the "Compliance" section. Now you do not need to choose this option. The default is PDF 1.5 format. This is the usual Export as PDF. The list of compliance standards contains one more - PDF/X-3. Select it. The options of the "Security" tab will not be available. Open the export file in a PDF program Adobe Acrobat Pro. you need to open the panel "Standard" to verify compliance with the standard document. "View" opens the menu - "Show / Hide" -> "Navigation Area" -> "Standards". Now we can see that the document does conform to the PDF/X-3 ISO 15930-3: Thus FasrtReports reports become more useful, especially for polygraphy and publishing. Now there is no need to worry about repetition reproduction of a document on the different sources of print. The report will always look the same. Tags: .NET, FastReport, PDF ### Saving FastReport .NET template to RDL file URL: https://www.fast-report.com/blogs/saving-net-template-rdl Why is it necessary Possibility to save FRX report to RDL is needed for some users. Unfortunately, some objects of FRX report will be lost, because there is no relevant in the RDL . Saving the report to RDL format To do this go to the File menu in designer and select Save As... . On next window select the filter RDL file (*. rdl) and enter the file name. The designer saves report template in the RDL file. The next pictures shows FRX report (left) and the same report saved in RDL (right). Tags: .NET, .NET, FastReport, FastReport ### Saving images from Delphi / C++ Builder / Lazarus URL: https://www.fast-report.com/blogs/saving-images-delphi Summary: We talk about the advantages and disadvantages of popular raster image formats. Saving the report in the form of images with fine-tuning using FastReport VCL and code. We talk about the advantages and disadvantages of popular raster image formats. Saving the report in the form of images with fine-tuning using FastReport VCL and code. We talk about the advantages and disadvantages of popular raster image formats. Saving the report in the form of images with fine-tuning using FastReport VCL and code. BMP, JPEG, TIFF, GIF – there is a variety of raster image formats. 1. BMP First of all, you should know that since BMP is an old image format it is not so popular among Internet users, only the bitmap images are saved in this format which doesn’t support the vector ones. The size of .bmp files can differ, depending on the quality of the images. Despite the fact that users consider the BMP format obsolete, it is actively used in many spheres. For example, all Windows interfaces were based on this format. Why exactly BMP? Because it is convenient to use when creating images that do not lose quality after editing them. BMP is often used in Photoshop when editing images, this format is also easy to upload to social networks and various websites. Of course, it is better to use modern image formats, as they are multi-layered and you can upload them to any website without technical issues. At the same time, there are many options to edit these images and they have a smaller file size. 2. JPEG JPEG is a commonly used format for storing images. It has a good compression quality for viewing pictures. This format has many benefits because the user has several advantages, such as: the ability to change the quality and size of the file, open the image in any browser with ease, editing this file in any graphic editors, as well as low size, which doesn’t take much space on computers and other data storage devices. If you do not compress much, the quality of the image will be completely saved. This format has few disadvantages: a) There is no transparency unlike, for example, PNG. b) If you compress (resize) the JPG image, its distortion (or complete loss) will be noticeable. c) It is not recommended to edit the restored JPG file after compression, as it may lose the quality. Despite these drawbacks, this format is considered the most popular on the internet and people use it a lot. 3. TIFF This is a well-known raster format that supports almost all known color spaces. Images without compression has almost become the standard in the printing industry. There are various compression algorithms with or even without losses. A TIFF file can contain an image stored in the CMYK, RGB, Lab color models in indexed color mode, as well as in grayscale. This allows to use this format for storing a variety of images, used both for the preparation of web-graphics and typography. In addition to the image itself, the TIFF contains transparency channels which allows you to save transparent areas of the image or highlight objects between work sessions. Another feature of the TIFF format is the ability to save multiple images that have their own sets of attributes and properties (tags) in one file. This makes TIFF similar to GIF, though it doesn’t have the ability to create animated images. The popularity of this format makes it easy to transfer images between programs and hardware platforms. 4. GIF GIF files have small size and support simple animations, i.e. changing frames in one file. GIF format is widespread in the field of creating banners, as well as the graphic shell of video content. The main advantage is data compression without an obvious loss of quality at a depth of up to 256 colors. Animated images consist of a number of static frames, as well as data on the required time of demonstration of a frame. People use the GIF format in many fields. For example, in the design of their sites, web design, graphic design, while writing articles or books, on social networks, in the form of advertising banners, for storing photos and so on. Using this format, you can reduce the size of the image, which positively affects the speed of loading pages of the Internet website. 5. SVG This format is a vector one. In short, the websites are compiled with its help. SVG is an XML text file with tags. This format doesn’t lose the image quality when scaling and cropping. For more information on the advantages and disadvantages of SVG format, as well as about saving it from Delphi, see here .  Now we know when and which format is better to use. So how can we export to these formats from a Delphi / Lazarus application? Easy! Of course, this is not our primary goal, there are many options. We are interested in the opportunities of FastReport VCL, because using it we can prepare a document, a poster, a banner – fortunately, the visual designer includes graphic primitives and many objects with effects. You can immediately see an, if needed, change / edit the document before exporting it to the desired image format. So, we need to create / save / export to BMP or GIF from Delphi? First we have to create a document. Simple or complex – there is no difference. Now, after we created the object that we want to turn into an illustration, launch and look . In the preview window, we select the format for saving the report. For example, we need to export to BMP image. Select and click. The export settings window will appear. Configure and save. Let’s talk a bit about settings. We can save all pages, current page or a range. Here are the screenshots to compare the settings of different formats: (TIFF, JPEG,GIF)  In some cases, some settings are not available (format differences). Monochrome – images in shades of black; Crop pages – whether to crop pages; JPEG quality – setting the quality of the graphic object; Resolution (dpi) – dots per inch; Open after export – opening the document automatically after the export. You can specify where to save your file (in the local storage, send as E-mail, upload to FTP or cloud storage). Well, now we learned how to easily save the report in graphical formats from Delphi / C++Builder / Lazarus from the preview window. But how can we save BPM/JPEG/TIFF/GIF directly from the Delphi / C++Builder / Lazarus code? Here is how! Export to BMP ``` procedure TForm1.Button1Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported} frxBMPExport1.PageNumbers := '2-3'; {Set whether to export each page to a separate file.} {.N will be added to the file name, where N is the serial number of the page} frxBMPExport1.SeparateFiles := True; {Set whether to export to monochrome image} frxBMPExport1.Monochrome := False; {Set whether to crop empty edges (page margins)} frxBMPExport1.CropImages := False; {Set the resolution, DPI} frxBMPExport1.Resolution := 96; {Set whether to open the resulting file after export} frxBMPExport1.OpenAfterExport := False; {Set whether to display export progress (show which page is currently being exported)} frxBMPExport1.ShowProgress := False; {Set whether to display the export filter dialog box} frxBMPExport1.ShowDialog := False; {Set the name of the resulting file.} {Please note that if you do not set the file name and disable the export filter dialog box,} {the file name selection dialog will still be displayed} frxBMPExport1.FileName := 'C:\Output\test.bmp'; {Export the report} frxReport1.Export(frxBMPExport1); end; ``` Export to JPEG ``` procedure TForm1.Button2Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported} frxJPEGExport1.PageNumbers := '2-3'; {Set whether to export each page to a separate file.} {.N will be added to the file name, where N is the serial number of the page} frxJPEGExport1.SeparateFiles := True; {Set whether to export to monochrome image} frxJPEGExport1.Monochrome := False; {Set whether to crop empty edges (page margins)} frxJPEGExport1.CropImages := False; {Set the quality of JPEG} frxJPEGExport1.JPEGQuality := 90; {Set the resolution, DPI} frxJPEGExport1.Resolution := 96; {Set whether to open the resulting file after export} frxJPEGExport1.OpenAfterExport := False; {Set whether to display export progress (show which page is currently being exported)} frxJPEGExport1.ShowProgress := False; {Set whether to display the export filter dialog box} frxJPEGExport1.ShowDialog := False; {Set the name of the resulting file.} {Please note that if you do not set the file name and disable the export filter dialog box,} {the file name selection dialog will still be displayed} frxJPEGExport1.FileName := 'C:\Output\test.jpg'; {Export the report} frxReport1.Export(frxJPEGExport1); end; ``` Export to TIFF ``` procedure TForm1.Button3Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported} frxTIFFExport1.PageNumbers := '2-3'; {Set whether to export each page to a separate file.} {.N will be added to the file name, where N is the serial number of the page} frxTIFFExport1.SeparateFiles := True; {Set whether to export to monochrome image} frxTIFFExport1.Monochrome := False; {Set whether to crop empty edges (page margins)} frxTIFFExport1.CropImages := False; {Set the resolution, DPI} frxTIFFExport1.Resolution := 96; {Set whether to open the resulting file after export} frxTIFFExport1.OpenAfterExport := False; {Set whether to display export progress (show which page is currently being exported)} frxTIFFExport1.ShowProgress := False; {Set whether to display the export filter dialog box} frxTIFFExport1.ShowDialog := False; {Set the name of the resulting file.} {Please note that if you do not set the file name and disable the export filter dialog box,} {the file name selection dialog will still be displayed} frxTIFFExport1.FileName := 'C:\Output\test.tif'; {Export the report} frxReport1.Export(frxTIFFExport1); end; ``` Export to GIF ``` procedure TForm1.Button4Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported} frxGIFExport1.PageNumbers := '2-3'; {Set whether to export each page to a separate file.} {.N will be added to the file name, where N is the serial number of the page} frxGIFExport1.SeparateFiles := True; {Set whether to export to monochrome image} frxGIFExport1.Monochrome := False; {Set whether to crop empty edges (page margins)} frxGIFExport1.CropImages := False; {Set the resolution, DPI} frxGIFExport1.Resolution := 96; {Set whether to open the resulting file after export} frxGIFExport1.OpenAfterExport := False; {Set whether to display export progress (show which page is currently being exported)} frxGIFExport1.ShowProgress := False; {Set whether to display the export filter dialog box} frxGIFExport1.ShowDialog := False; {Set the name of the resulting file.} {Please note that if you do not set the file name and disable the export filter dialog box,} {the file name selection dialog will still be displayed} frxGIFExport1.FileName := 'C:\Output\test.gif'; {Export the report} frxReport1.Export(frxGIFExport1); end; ``` After seen how we can create and export to such formats, we come to the conclusion that it is extremely easy! But please – do not exploit these features! Very often (for example, many software products for generating tax reports or 1040-SR forms) allow to save the resulting file only in a certain closed format, send it to print or save as TIFF – unfortunately, this option doesn’t withstand any criticism from the point of view further use. It can only be admired or printed. After all, it doesn't cost you anything to export these documents to PDF (or, if necessary – PDF/A), ODS , ODT , RTF , DOCX , XLSX – with full support of relevant standards but much more convenient for working with them as text documents.  Tags: VCL, Export, Lazarus, FastReport, Delphi ### Saving report in cloud services from a user application code URL: https://www.fast-report.com/blogs/saving-report-cloud-services You are not only available report exports, but also some options for saving the report, for example, into Box, into DropBox, into Google Drives and others. In the menu "Save" allocated a special section with options for saving the report in a variety of cloud services: We are available: 1)      Box; 2)      Dropbox; 3)      FastCloud; 4)      GoogleDrive; 5)      OneDrive; 6)      XMPP. The latter option uses the FastCloud cloud service for storing and building reports. The XMPP protocol sends a link to the report to the jabber client. Using these save options is not difficult if you manually set the preferences in preview mode. But how to automate the process of saving, using code? This will be discussed in this article. With the exception of FastCloud, all cloud services use OAuth-type authorization. This is an authorization protocol that allows you, without using a real login and password from the service, to give the application access to the cloud service. However, you can restrict access rights. You will be given an identifier and a secret key that you need to use for authorization. To get the Client Id and the Client Secret, you need to create the application and register it on the OAuth server of your cloud service. Therefore, we need to specify at least two parameters to save the report to the cloud service. Let’s consider in order. 1)      For the Box service: First of all, you need to add the FastReport library: using FastReport; We create an instance of the ClientInfo class, which will contain information for authorization:  ``` FastReport.Cloud.StorageClient.SkyDrive.ClientInfo clientInfo = new FastReport.Cloud.StorageClient.SkyDrive.ClientInfo("ClientName", "ClientId", "ClientSecret"); ```  ClientInfo can take three parameters: ClientName, ClientId and ClientSecret. In our case, ClientId and ClientSecret are required. Then create a GoogleDrive client to save the report: ``` FastReport.Cloud.StorageClient.GoogleDrive.GoogleDriveStorageClient client = new FastReport.Cloud.StorageClient.GoogleDrive.GoogleDriveStorageClient(clientInfo); ```  Create a report object and load the report into it: ``` Report report = new Report(); report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); ```  If you want to save the report in a format other than native fpx (the format of the report preview), you need to create an export instance: ``` FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport(); ```  Save the report using the client: ``` client.SaveReport(report, pdf); ```  If you save a report in the fpx format, you can pass null instead of the second parameter: ``` client.SaveReport(report, null); ```  2)  For the DropBox is slightly different. Within OAuth, you can also use access token. This is an access key that is generated as a result of successful authorization. Passing such a token, we seem to restore the previous authorization. Create a client for the DropBox and pass it access token in text format: ``` FastReport.Cloud.StorageClient.Dropbox.DropboxStorageClient drop = new FastReport.Cloud.StorageClient.Dropbox.DropboxStorageClient("accessToken"); ```  Proxy settings: ``` drop.ProxySettings.Server = ""; drop.ProxySettings.Port = 999; drop.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http; drop.ProxySettings.Username = "Username"; drop.ProxySettings.Password = "Password"; ```  Next, as in the previous example: ``` Report report = new Report(); report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); ```  Save the report: ``` drop.SaveReport(report, null); ```  3)  For the GoogleDrive: ``` FastReport.Cloud.StorageClient.SkyDrive.ClientInfo clientInfo = new FastReport.Cloud.StorageClient.SkyDrive.ClientInfo("ClientName", "ClientId", "ClientSecret"); GoogleDriveStorageClient client = new GoogleDriveStorageClient(clientInfo); ```  Proxy settings if needed: ``` client.ProxySettings.Server = ""; client.ProxySettings.Port = 999; client.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http; client.ProxySettings.Username = "Username"; client.ProxySettings.Password = "Password"; ```  Create a report: ``` Report report = new Report(); report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); ```  Create export: ``` FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport(); ```  Save the report:            ``` client.SaveReport(report, pdf); ```  4)  For the OneDrive: ``` FastReport.Cloud.StorageClient.SkyDrive.ClientInfo clientInfo = new FastReport.Cloud.StorageClient.SkyDrive.ClientInfo("ClientName", "ClientId", "ClientSecret"); FastReport.Cloud.StorageClient.SkyDrive.SkyDriveStorageClient one = new FastReport.Cloud.StorageClient.SkyDrive.SkyDriveStorageClient(clientInfo); ```  Proxy settings if needed:             ``` one.ProxySettings.Server = ""; one.ProxySettings.Port = 999; one.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http; one.ProxySettings.Username = "Username"; one.ProxySettings.Password = "Password"; ```  Create a report: ``` Report report = new Report(); report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); one.SaveReport(report, null); ```  5) For FastCloud there are differences. It does not use the OAuth protocol. Authorization is carried out by email address and password. Create a FastCloud client: ``` FastReport.Cloud.StorageClient.FastCloud.FastCloudStorageClient fast = new FastReport.Cloud.StorageClient.FastCloud.FastCloudStorageClient(); ```  Assign a token. To generate a token, use the GetAccessToken method:  ``` fast.AccessToken = fast.GetAccessToken("email@mail.com", "password"); ```   Create an instance of the export: ``` FastReport.Export.RichText.RTFExport rich = new FastReport.Export.RichText.RTFExport(); Report report = new Report(); report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); fast.SaveReport(report, rich); ``` 6)  Send the report to Jabber (XMPP). Previously, we need to create an xmpp client: ``` FastReport.Messaging.Xmpp.XmppMessenger messenger = new FastReport.Messaging.Xmpp.XmppMessenger("user@xmpp.jp", "password", "user@xmpp.jp"); ```  If you need to configure Proxy: ``` messenger.ProxySettings.Server = "server"; messenger.ProxySettings.Port = 999; messenger.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http; messenger.ProxySettings.Username = "username"; messenger.ProxySettings.Password = "password"; ```  Then, or before, create a report object: ``` Report report = new Report(); report.Load(@"С:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); ```  And we pass it to xmpp client: ``` messenger.SendReport(report, null); ```  Having executed this code, we send the report to the cloud service FastCloud. At the same time, the jabber user receives a message with a link to the report. The link in the xmpp client looks like this: https://cloud.fast-report.com/reports/3da0fcd3f76ac1f6d87c21df85f5d5e2 Tags: .NET, .NET, FastReport, FastReport, Web Storage, Web Storage ### Saving SVG images from Delphi / C++ Builder / Lazarus URL: https://www.fast-report.com/blogs/export-svg-delphi-vcl Summary: Using SVG, you can save reports as pictures without losing quality from Delphi code. Using SVG, you can save reports as pictures without losing quality from Delphi code. Using SVG, you can save reports as pictures without losing quality from Delphi code. The SVG file is a two-dimensional vector image based on documents in XML format. The SVG format is used not only for the description of two-dimensional vector graphics, but also for mixed vector-raster images. Let's list the main advantages of SVG format: First of all, as previously mentioned in the last article , vector graphics are scaled up or down without loss of quality (and when enlarged, the image doesn’t turn into the cubism art). Second, SVG is fully compatible with web technologies and therefore will be an organic part of any web-site. Third, adding Javascript to objects, we can make the image interactive, that is, responding to certain user actions with the given answers – in relation to the image and its form. Forth, SVG files are considered text, so you can optimize the file for SEO without external meta tags by directly adding keywords to the image code. This format has some disadvantages, too: The file size will rapidly increase just like an avalanche when increasing the detailing of images. However, for images with a bunch of details, it is best to use PNG of JPG formats. So, unfortunately, SVG is completely unsuitable for realistic high-resolution photographs and detailed maps of the area. SVG is not supported by older browsers (Internet Explorer 8 and older), but I don’t think this is a great disadvantage. By default, (for example, WordPress), doesn’t allow you to upload SVG files, due to security issues. WordPress perceives this extension as something malicious and therefore blocks it. But you can bypass this block using plugins. SVG is suitable for creating simple objects that can be described by simple figures or their parts. We should also mention that social networks, such as Facebook and Twitter, do not support SVG format. If you use SVG files as thumbnails, you will have to use the plugin and set PNG or JPG for meta tags. We reviewed the main advantages and disadvantages of the SVG format and now we can return to the main topic of this article.  How to save a SVG file using Delphi or Lazarus? First you need to create the image! And then I can advise (all of a sudden) FastReport VCL, because using it you can save immediately in the desired format from Delphi. After all, there might be many objects to display apart from the pictures. It’s convenient – so, why not? From barcodes to tables and maps, it’s strongly recommended to save them in a vector format! Therefore, let’s begin! Create a report. Previewed before saving, didn’t like something? Changed, edited! Now, after we created what was required, launch it and see what happened. Call a preview and select the format we need. Here it is – below! Select and click . Now we see a window with many different settings. Set up everything we need and click OK ! Briefly about export settings You can see that when saving in SVG format, the settings are not the same with BMP, JPEG, TIFF or GIF. More precisely, such functions as: Styles – saving styles; Unified Pictures – unifying pictures; Formatted – saving formatting; Pictures – saving a document with pictures – this is the right choice for those images that were already pixel when adding to our document; Multi Page – saving multiple pages; Page navigator – creating a page navigator; Saving images in PNG, EMF, BMP and JPEG formats. And the settings for the BMP, JPEG, TIFF, GIF formats are: Monochrome – images in shades of black; Crop pages – whether to crop pages; JPEG quality – setting the quality of the graphic object; Resultion (dip) – resolution. Obviously, a vector image will be rasterized when saved in raster formats, but the opposite (raster to vector) will not happen. The only things that seem to be common among all these formats are the action settings, ability to save and automatically open the document immediately after saving. Having considered how to save using the preview window, let’s move on to the saving without a preview. Saving SVG files using Delphi / C++Builder / Lazarus code Export to SVG ``` procedure TForm1.Button1Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported} frxSVGExport1.PageNumbers := '2-3'; {Set whether to export styles of the objects} frxSVGExport1.EmbeddedCSS := True; {Set whether to convert all images in accordance with PictureFormat:} {if the image in the report is in BMP format and the PictureFormat is PNG, then BMP will be saved in PNG format} frxSVGExport1.UnifiedPictures := True; {Set whether to format the source text of SVG (increases the size of the resulting file)} frxSVGExport1.Formatted := False; {Set whether to export pictures} frxSVGExport1.EmbeddedPictures := True; {Set whether to export each page to a separate SVG file} frxSVGExport1.Multipage := False; {Set whether to add navigation buttons to the resulting SVG file} frxSVGExport1.Navigation := False; {Set in which format to export pictures} //uses frxExportHelpers; // TfrxPictureFormat = (pfPNG, {$IFNDEF FPC}pfEMF,{$ENDIF} pfBMP, pfJPG);) frxSVGExport1.PictureFormat := pfPNG; {Set whether to open the resulting file after export} frxSVGExport1.OpenAfterExport := False; {Set whether to display export progress (show which page is currently being exported)} frxSVGExport1.ShowProgress := False; {Set whether to display the export filter dialog box} frxSVGExport1.ShowDialog := False; {Set the name of the resulting file.} {Please note that if you do not set the file name and disable the export filter dialog box,} {the file name selection dialog will still be displayed} frxSVGExport1.FileName := 'C:\Output\test.svg'; {Export the report} frxReport1.Export(frxSVGExport1); end; ``` Let’s compare the results of exporting raster and vector objects! I will provide JPEG and SVG examples below. JPEG SVG And… here we immediately see the difference. Can you find it? :) Well, for example, a raster image has a larger size than a vector image, and when scaling, the clarity decreases. But as for a vector image (SVG), when scaling, clarity remains the same and the file size is much smaller. The only drawback is that SVG is not suitable for realistic photos (but we don’t have them anyway). Let’s summarize! The SVG vector format is very convenient (if you use it in the right place), and saving via FastReport VCL makes it simple. Tags: VCL, Export, Lazarus, FastReport, SVG, Delphi ### Scale management when printing in Excel URL: https://www.fast-report.com/blogs/scale-management-printing-excel FastReport .NET 2018.4 version brought quite a few innovations. One of them is the ability to set the scale of the Excel page of the document when printing in the Excel export settings. You can export the report to Excel in preview mode or from the code of the user application. Let's consider both options. Export to Excel 2007 from pre-view. For example, I will take a report with a large number of rows and columns - a matrix of 100 by 100. Let’s open the export menu in Excel 2007: At the bottom of the form is the “Print Scaling” option. The default setting is “Actual Size” (No Scaling). Let's make an export and see the Excel document in the view mode when printing: As you can see, the report did not fit one printing page. It will take 6 pages for our matrix. Let's export the report again. But now, for Print Scaling, we select Fit Sheet on One Page. What will we see in the print mode of an Excel document? The scale of the document is reduced so that it fits entirely one page. Well, this is a very valuable option. Often we need to print the entire report on one page. It is necessary to select the scale by trial and error. Let's move on to the next value of the “Print Scaling” option - “Fit All Columns on One Page”. In this case, our example with the matrix will not be the most indicative. As far as you understood, this option allows you to place all data columns on one printing page. In this case, the lines may not fit one page and another one will be generated. But, since our matrix is square, both the columns and the rows will fit on the same printing page. Therefore, I will generate another 30-by-100 matrix. Let's export it to Excel with the value "Fit All Columns on One Page” of the" Print Scaling "option. Let's see how it looks like in print mode in Excel: The scale of the document was chosen so that all columns fit in the width of one page. But the lines did not fit, but this is not important for us, because we chose "All columns on one page." Another value of the option "Scaling when printing" - "All lines on one page." In this case, it is important for us to put all the lines on one page, and whether the columns fit in is not of interest to us. Let's make export to Excel of our matrix 100 by 100. Let's see what happened: All requirements are met - the lines fit on one page. And only 56 columns fit. For the rest, a second print page was created. So, we consider 4 document scales when exporting a report to Excel 2007. Now let's see how to use the considered option in the code of the user application: ``` Report report = new Report(); FastReport.Export.OoXML.Excel2007Export exp = new FastReport.Export.OoXML.Excel2007Export(); exp.PrintFit = FastReport.Export.OoXML.Excel2007Export.PrintFitMode.FitAllColumsOnOnePage; report.Export(exp, @"C:\result.html"); ```  4 values available for PrintMode: NoScaling, FitSheetOnOnePage, FitAllColumsOnOnePage, FitAllRowsOnOnePage. And for the web report, only one mode of scaling Excel document is available - Place on one page: ``` webReport.XlsxPrintFitPage = true; webReport.ExportExcel2007(); ```  Thus, we have at our disposal another useful option. Tags: .NET, .NET, FastReport, FastReport ### Search result URL: https://www.fast-report.com/search Search result Search result: "" Nothing found info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Seminar Firebird and FastReport, Prague, 9. November 2007 URL: https://www.fast-report.com/news/seminar-firebird-prague-2007 Summary: Seminar Firebird and FastReport, Prague, 9. November 2007 Seminar Firebird and FastReport, Prague, 9. November 2007 Seminar Firebird and FastReport, Prague, 9. November 2007 We cordially invite you to a one-day seminar on The Firebird and FastReport database systems, which will be held in patek 9. November in Prague hotel Angelo na Smichove (Radlicka 1g, Prague 5, metro station Andel). Preface: Dmitry Yemanov, chief developer of Firebird Pavel Cisar, IBPhoenix and Firebird QA Mikhail Phillipenko, CEO of FastReport Dmitry Kuzmenko, CEO of IBSurgeon and IBPhoenix expert on data optimization and data recovery. The topic of the seminar will be news in Firebird, security, data protection and optimization, business intelligence and reporting with fastreport and Firebird products. You will not miss the chance to meet members of the developing Firebird team and the opportunity to get prime answers to your questions at the round table! Lectures will be presented in Czech and English. Admission to the seminar is free. However, the number of mist is limited, so register as soon as possible! Seminar programme: 1. Introduction 2. New features of Firebird (English, Dmitry Yemanov) 3. Fastreport kits (English, Mikhail Phillipenko) 4. Protection against damage or loss of data (English, Dmitry Kuzmenko) 5. Firebird Internals by Dmitry Yemanov 6. Business intelligence with FastCube (English, Mikhail Phillipenko) 7. Firebird and security (Czech, Pavel Cisar) 8. Optimization (English, Dmitry Kuzmenko) 9. Round table (English and Czech, all lecturers) http://ibphoenix.fr/spip.php?article80 ### Seminar in Warsaw URL: https://www.fast-report.com/news/seminar-warsaw-2007 Summary: Seminar in Warsaw Seminar in Warsaw On behalf of Fast Reports Inc. and Firebird we are pleased to invite you to a seminar devoted to new functionalities of the Fast Report and Firebird programmes. The seminar will take place on 07.12.2007 at Hotel Lord in Warsaw, Al. Krakowskie 218.    Fast Reports Inc company has been operating on the IT market since 1998 and its main objective is to develop report-generating software.  The aim of the seminar is to present new functionalities and features of Fast Report and Firebird, as well as other tools.  All the advantages and functionalities of the programmes will be presented by: Fast Reports' BI solutions for developers and end-users, Michael Philippenko, CEO Fast Reports Fighting database corruptions, Dmitry Kuzmenko, CEO IBSurgeon Fast Reports' new products and new features, Michael Philippenko, CEO Fast Reports Optimization of Firebird databases, Dmitry Kuzmenko, CEO IBSurgeon  Participation in the seminar is free of change.   All the interested persons are asked to contact us by phone: 022 885-43-21 or by writing to the e-mail address:  info@softkey.pl  in order to receive an application form.  The number of participants is limited. We invite you to take part in our seminar! ### Sending report from Delphi program via MAPI protocol URL: https://www.fast-report.com/blogs/send-report-delphi-mapi-protocol Just copy following code for sending the report from your own application: ``` procedure TForm1.Button2Click(Sender: TObject); var mail: TfrxMailExport; txt: TfrxTXTExport; begin txt := TfrxTXTExport.Create(nil); mail := TfrxMailExport.Create(nil); mail.UseMAPI := MAPI; mail.Address:='Recepient Name '; mail.ExportFilter:=txt; mail.FilterDesc:='TXT per E-Mail'; mail.FromMail:='Sender Name '; mail.Login := ''; mail.Password := ''; mail.Subject:='Subject-Text here'; mail.Lines.Add('Hi there, ' + #13#10#13#10+ 'heres comes an email with attached file'); frxReport1.Export(mail); mail.Destroy; end; ``` There are two important issues for this example:  The recepient address must be written in canonical form Name . Simple forms  - user@host.net will be rejected by some mail clients. For example, Microsoft Outlook require a  canonical form of the recepient address. You must set fields Login and Password  with empty values. Tags: VCL, VCL, MAPI, MAPI, FastReport, FastReport, Delphi, Delphi ### Sending report in PDF to Email from application code URL: https://www.fast-report.com/blogs/send-report-pdf-email-application-code It is no secret that FastReport .Net allows you to send reports by email. But few people know how to do it by using the code in a custom application. In such way that you wouldn't have to run a report and send it via email manually. The required reports will be automatically sent to a specified e-mail address with help one button, or schedule. Let's consider the example of sending the report in PDF format by e-mail. Create WindowsForms application. Add buttons and two text fields. In the first one, we will input recipient's email address, and the second - mail server for outgoing mail. We will need the following libraries: ``` using FastReport; using FastReport.Export; using FastReport.Utils; ``` Create an event handler for the button click:      ``` private void button1_Click(object sender, EventArgs e) { Config.ReportSettings.ShowProgress = false; //Disable progress window Report report1 = new Report(); //Create new report object report1.Load(Environment.CurrentDirectory+"\\text.frx"); //Load report report1.Prepare(); //Prepare report FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport(); //Cteate PDF export FastReport.Export.Email.EmailExport email = new FastReport.Export.Email.EmailExport(); //Create Email export   //email mailer settings email.Account.Address = "gromozekaster@yandex.ru"; email.Account.Name = "TestUser"; email.Account.Host = textBox2.Text; email.Account.Port = 25; email.Account.UserName = "Gromozekaster"; email.Account.Password = "Password"; email.Account.MessageTemplate = "Test"; email.Account.EnableSSL = true;   //email addressee settings email.Address = textBox1.Text; email.Subject = "Test Report"; email.MessageBody = "Test message";   email.Export = pdf; //Set export type email.SendEmail(report1); //Send email } ``` First of all I disabled the progress window in the report settings, but you can skip this step. If you do not need it, just do not write this line of code. Then create an instance of a report object and load the report into it. Before the export you need to prepare a report (Prepare), in other words - build it. Since the title of the article contains “PDF”, let's create an object of export to PDF.  Likewise we create export to email. Now we can customize the export settings in the Email. In the Account - the sender's settings. Basically it is the outgoing mail server settings. Next - set the parameters of the recipient as well as the email address, subject line, message text and export to the desired file type. Here it should be noted that is not necessary to export to PDF, you need only to create an export object. Email export makes exports to the specified format. If you do not specify Export parameter, then the report will be sent in the FPX format. This file is preview of the report. You can view, print or export the report, but can not edit it. Finally, we will send a letter using Sendmail method. Be sure to pass the report object to this method. Considered method will be useful for standard emails, for example, you can arrange to automatically broadcast daily reports to your chief email. Tags: .NET, .NET, FastReport, FastReport, PDF, PDF, Report, Report, Email, Email ### Sending reports by E-mail via MAPI protocol URL: https://www.fast-report.com/blogs/sending-reports-email-mapi FastReport.VCL with the very first version uses the original realization of SMTP protocol, written for sending generated reports via email. Excellent implementation, which is used by many users. These days some providers of postal services have demanded secure authentication to send mail, therefore some users have difficulty in sending reports. Customers of .NET version of the report generator does not run into this problem, because the implementation of sending reports in FastReport.NET based on MAPI protocol. In this case, the report generator uses an external mail program for sending the reports. Due to numerous requests the support of MAPI protocol was included in VCL version. We apologize to all users who are prematurely get informed of readiness MAPI - our implementation had contained some errors that did not allow to send mail when using the report generator with modern versions Delphi with Unicode support. We are pleased to report that MAPI error corrected now. All comments, bug reports and suggestions regarding sending reports via MAPI protocol in FastReport.VCL you can write into this blog. Tags: VCL, VCL, MAPI, MAPI, FastReport, FastReport, Email, Email ### Service Solutions Update to Version 2026.1 URL: https://www.fast-report.com/news/release-service-2026.1 Summary: In the 2026.1 release of our service solutions lineup, we focused on improving usability, security, and expanding capabilities. In the 2026.1 release of our service solutions lineup, we focused on improving usability, security, and expanding capabilities. In the 2026.1 release of our service solutions lineup ( FastReport Cloud , FastReport Publisher , FastReport Corporate Server ), we focused on improving usability, security, and expanding capabilities. The update includes dozens of improvements to the interface, integration mechanisms, user tools, and increased stability. Saving Documents to S3-Compatible Storage A component for working with Amazon S3-compatible storage has been added. This allows saving templates, reports, and finished documents in various formats (pdf, docx, xlsx, etc.) to S3. One use case is creating an annual report (by passing start and end dates as report parameters), exporting it to PDF, and saving it to S3-compatible storage, where it will be available for viewing and downloading.  For more details on saving to S3  and its programmatic use , please refer to the documentation. Sending Documents to Telegram Telegram Bot API support has been added. Similar to saving to S3, documents and report templates can now be sent to Telegram. Sending to channels, direct messages with the chatbot, and group chats is supported. To send, use the unique identifier or name of the public channel or group where the bot has been added. More information on Telegram bots and their creation can be found on  the official Telegram website .  Additionally, the most convenient way to send documents to Telegram is by using an export task followed by sending. To do this, select the previously created Telegram sending task from the dropdown list in the export task settings. Hotkey Hints Added to Context Menus Interface usability has been improved: hotkey hints now appear in context menus. These allow for faster interaction with the user panel interface. Enhanced API Security: CORS Support and Trusted Domain Management We have updated the API request protection mechanism in accordance with modern web security standards. Now, authorized API requests require explicitly specifying trusted domains—this enables correct handling of CORS (Cross-Origin Resource Sharing) and preflight requests in modern browsers. Browsers block cross-domain requests without explicit permission—this protects users from CSRF (Cross-Site Request Forgery) and other attacks. The previously used approach stopped working after security policy updates in Chrome, Firefox, and other browsers. Workspace administrators can configure the list of allowed domains in the “Settings → Workspace” section. Only requests from these domains will have authorized access to the API. This enhances security without compromising convenience—integrations continue to function, but now reliably and according to standards. Added Script Autocompletion Support for FastReport Online Designer Online Designer now includes support for autocompletion hints (similar to IntelliSense), which increases the speed and accuracy of template development. For other new features of the Online Designer, please refer to the 2026.1 release news .  New Template and Report Preview Modes Added The preview component has received additional modes. The following are now available: Static preview (a lightweight mode that displays/renders templates and reports in SVG format); WASM Static Preview—a more accurate, but also resource-intensive component, written in Blazor; Interactive WASM Preview—the most accurate and powerful mode, allowing interactive reports to be run. The appropriate mode can be selected before opening a template or report.  It is also possible to set a default mode in the user settings. Nested Parameters Added to Static Preview Static Preview now supports parameters of any nesting level. This improves work with complex templates and allows parameters to be grouped by topic. Global File Search Added to API The ability to perform a global search for files and folders via API has been added.  This allows you to find a template, report, or any document by its name, even without knowing which folder it is located in. Additional Changes for FastReport Corporate Server and FastReport Publisher Below are additions that apply only to the on-premise products in the lineup. Docker Image Repository Builds are now distributed via Docker Registry. Documentation has been added and updated, and related docker-compose scripts have been fixed. This simplifies product updates and deployments. Separate Sign-In Form A separate sign-in form has been introduced, fully supported by Gateway mechanisms. Old settings (SignInPagePath, DisabledPath) have been removed—they are now replaced by the built-in system. The authorization process has become simpler and requires less traffic. As of the 2026.1 release, this functionality is used for logging into the administrator panel. Support for other services will be added in future releases. Information on Active Users and Subscriptions on the Audit Page The administrator panel has gained additional functionality: the “Audit” page now displays the IDs of active users and subscriptions for a specified time interval. This allows for more effective system usage control and better user understanding. Font Management in the Administrator Panel A dedicated font management page has been added to the administrative panel. Corporate Server and Publisher Installation Wizard The installation wizard has received a major update: Added the option to install FerretDB and PostgreSQL as databases. Users can now choose to install either Publisher or Corporate Server. Added the option to select a demo version for installation. Improved configuration file creation. Reworked interface and bug fixes. Documentation The documentation has been significantly revised and expanded: Documentation for Cloud, Corporate Server, and Publisher is now unified into a single build. Added guides for working with S3, FerretDB, and Docker Registry. Added an article on integrating static preview via iframe. Corrected errors and typos. Added canonical tags and current version to the online documentation. Full list of changes [Frontend] + added font interface to workspace information page + added export parameters to localstorage + added virtualization to users page + added s3 component to user panel + added hotkey hints to various context menus + added telegram task component * added support for alternative uid / pwd keys in MySQL connection dialog (now it will also parse “user id” and “password”) * added new components for font limit designation * added S3 and FTP tasks to workspace information page - fixed product purchase link - fixed automatic connection string parsing in data source setup dialog for MS SQL - fixed file renaming with F2 - fixed export to docx in paragraph breaking mode [Admin Panel] + added more links to entities in the admin panel + added information about active users and subscriptions to the audit page in the admin panel + added a new page in the admin panel for fonts + added checks for duplicate file names and incorrect user IDs in analytics * fixed an error with parameters in the admin panel - fixed visual errors when loading fonts in the admin panel - fixed a bug where the problem solver returned an error when analytics found font problems - fixed a bug where the check for unlinked documents marked all font description models as unlinked (belonging to a non-existent workspace) [Docs] + added documentation on how to use FerretDB instead of MongoDB + added documentation for S3 + added an article to the documentation on integrating staticpreview via iframe + added canonical tag for documentation pages * added current version to online documentation * updated documentation for working with docker registry * fixed some typos in the documentation * unified documentation into one [Online Designer] * disabled html5 notifications in Online Designer * changed the preview generation mechanism for Online Designer; now the temporary template file is deleted after creation [Backend] + added S3 upload task + added Telegram sending task + added domain permissions; now, to execute authenticated requests, a list of allowed domains must be specified in the workspace; previously, due to the new browser security system, this functionality was inoperable + added IntelliSense support for Online Designer + added global file search to API * improved font caching mechanism in the worker service * added search by subscription plan to audits * replaced the view model for the request for space occupied by fonts. Now it is not the same model as for files - fixed an error where many parallel requests led to memory leak and caused an error - fixed data types of returned view models in the task controller - fixed a bug where font space calculations accounted for all workspaces - fixed a bug where OpenID users did not display any useful information in the workspace user list - fixed a bug where nested transport had a null subscription ID [Tasks] - fixed an error where a task could sometimes enter an infinite loop and hang the entire system [Preview] + added new preview modes + added localization switching logic for wasmpreview, identical to staticpreview + added nested parameters to static preview [Installer] + added FerretDB installation option + added Publisher installation capability + added Docker-related text to the final page + added demo version license keys • changed behavior: the “Next” button will now be disabled if a license key is not specified • changed behavior: the installer now creates an extended configuration file - fixed a bug where the installer crashed when clicking to show the RabbitMQ password [Demos] + added WPF demo application for FastReport .NET + Cloud [Common] + added a new AllowLocalSignUp property for Auth, which allows enabling and disabling user registration + added a new FaviconLink property for Server, which allows setting the favicon link for a white-label license * assembly download is now available via Docker Registry instead of ZIP * changed the API test cleanup method * the gateway now handles the sign-in form; sign-in is simplified and requires less traffic - fixed an error where license restrictions erroneously prevented the use of OpenID (OIDC) - removed SignInPagePath property from Gateway config; it is replaced by the built-in sign-in mechanism - removed DisabledPath property from Gateway config; it is replaced by the built-in mechanism - fixed docker-compose script for installation files, updated RabbitMQ version [Font Server] - fixed a bug where some TTF files failed to load ### Service Solutions Update to Version 2026.2 URL: https://www.fast-report.com/news/release-service-2026.2 Summary: In the 2026.2 release of our service solutions lineup (FastReport Cloud, FastReport Publisher, FastReport Corporate Server), we focused on improving reliability and usability. In the 2026.2 release of our service solutions lineup (FastReport Cloud, FastReport Publisher, FastReport Corporate Server), we focused on improving reliability and usability. In the 2026.2 release of our service solutions lineup ( FastReport Cloud , FastReport Publisher , FastReport Corporate Server ), we focused on improving reliability and usability: task scheduling has been enhanced, the admin panel has been extended with new capabilities, new integration options have been added, and bugs have been fixed across several key components. API Key Support in Online Designer Online Designer now supports authentication via API keys, expanding integration capabilities for enterprise systems. To authenticate via an API key, add the apikey parameter to the URL. For example: {hostname}/designer/?uuid={templateId}&v=df&apikey={apikey} . Online Designer also now uses the icon from the server configuration, allowing branding to be applied correctly without additional setup. Faster Task and Scheduler Execution Cron expression execution caching has been added. This significantly reduces the number of database calls when working with the scheduler. Also fixed bugs that caused tasks to run without proper permissions or execute too frequently. Documentation Updates The current product version has been added to all documentation articles. This allows you to use scripts from the documentation to install the current product version. Documentation for tasks and the scheduler has been improved, and a new article has been added on the limitations of the demo version of Publisher and Corporate Server. Additional Changes for FastReport Corporate Server and FastReport Publisher The following changes apply only to the on-premise products in the lineup. New Admin Panel built on Fluent UI The admin panel has been completely rebuilt using Fluent UI — a modern Microsoft component library. The interface is now more consistent, user-friendly, and accessible. Error handling on the bulk plan editing page has also been improved. The new admin panel is currently being tested in the cloud infrastructure and will soon be set as the default in Publisher and Corporate Server. Bulk Editing Plans in Workspaces A new flag has been added to the UpdateSubscriptionPlan method — it allows updating the current plans for all subscriptions that use the plan being updated. This simplifies bulk configuration management. Local Browser Time Support Workspace creation and renewal are now set using the browser's local time. The audit creation date on the audit page is also displayed in local time — eliminating date discrepancies for users across different time zones. Default Product Name from the License Key The product name (Corporate Server or Publisher) can now be automatically determined from the license key. Initial product configuration during deployment will now be easier. Extended FerretDB Integration A bug that prevented migrations from being applied when using FerretDB has been fixed. Additionally, the migration mechanics have been improved. Swagger File for the Admin Panel A Swagger file describing the Admin Panel API has been added to Corporate Server and Publisher. This simplifies integration and makes it easier to explore the available administrative API capabilities. The Admin Panel API description is available at /api/swagger/index.html by selecting the appropriate section in the top right corner of the screen. Installer Fix A bug has been fixed that caused the installer to use incorrect demo keys during installation. FastConverter A new service, FastConverter, has been released. It allows converting *.FPX files to various formats supported by FastReport Cloud (for example, *.PDF, *.DOCX). The service does not require installation or registration. You can convert your reports here . Full Changelog [Admin Panel] + a new flag has been added to the UpdateSubscriptionPlan method — it allows updating the current plans for all subscriptions that use the plan being updated; * workspace creation and renewal are now set using the browser local time; * the audit creation date on the audit page is now displayed in browser local time; - improved error handling on the bulk plan editing page; - fixes for the new admin panel; [Backend] + added missing audit messages; - fixed a bug where CORS returned a 500 error for static files; - added the ability to set the default product name (Corporate Server, Publisher) from the license key; - fixed permission check during bulk file move; - fixed a bug in migration #48 where a null value could not be processed as a string; - fixed MHT export; [Common] + added a Swagger file for the admin panel in Corporate Server and Publisher; + added additional health checks for FerretDB; - fixed a bug where MySQL did not allow creating SELECT command parameters for the database; - fixed a bug where migrations were not applied when using FerretDB; [Docs] + added the current product version to all documentation articles; + improved documentation for tasks and the scheduler; + added an article on the limitations of the demo version of Publisher and Corporate Server; [Frontend] + added a new admin panel built on Fluent UI; - fixed the file selection dialog in transport tasks; [Installer] - fixed a bug where the installer used incorrect demo keys; [Online Designer] + added API key support in Online Designer; * Online Designer now uses the icon from the server configuration; [SDK] - fixed a bug when passing date and time values; [Tasks] + added cron expression execution caching, which significantly speeds up database operations; - fixed a bug that allowed tasks to run if the user had no active cloud workspace; - fixed a bug where tasks executed even if the workspace had no permission to use the scheduler; - fixed a bug where a task executed too frequently when a cron expression was specified. ### Session: Generating document templates using machine learning in Azure URL: https://www.fast-report.com/news/generating-document-azure Summary: Session: Generating document templates using machine learning in Azure Session: Generating document templates using machine learning in Azure On September 26 lead developer of Fast Reports Viacheslav Shamshin will hold a session on generating document templates using machine learning in Azure during Basta! conference in Mainz. The session discusses the current MS Azure cloud possibilities focused on artificial intelligence and machine learning technologies for automatical creation of reports and document forms. In addition, the speaker presents a new approach for report generation using machine learning for data blocks recognizing. Models for templates deploying of databases and report generators based on cloud structure finalize the session. Buy your tickets for Basta! conference here:  https://basta.net/tickets/ ### Setting up the Online Designer in a React .NET Core app URL: https://www.fast-report.com/blogs/designing-react-net-core Summary: Let's take a closer look at how to setup the Online Designer in a React .NET Core application. Find more usefull tips and articles in our blog. Let's take a closer look at how to setup the Online Designer in a React .NET Core application. Find more usefull tips and articles in our blog. Let's take a closer look at how to setup the Online Designer in a React .NET Core application. Find more usefull tips and articles in our blog. Many FastReport.Core users are interested in how the report generator will work in a web application written by using the React library. We have already reviewed this in the article "How to use FR Core Web Report with React.docx". In this article we will look at the way to use an online designer. Despite the fact that it is displayed in the same web object as a regular report, the difference with the display in React is significant. But first things first. If you have never created an application on React with a backend on .Net Core, then you need: 1) Install NodeJS. This is a software package that allows you to perform JavaScript code on the server side, as well as install various JavaScript libraries. 2) Install Microsoft Visual Studio 2017 or another IDE + .Net Core SDK 2.0. To create the application, open the Windows command prompt in the folder where the project will be located and execute the command: dotnet new react –o ReactFRCoreDesigner Open the created project. Let's just add FastReport libraries to the NuGet packages manager. Configure the local package source for the folder: C:\Program Files (x86)\FastReports\FastReport.Net\Nugets Install the FastReport.Core package. Locate the Startup.cs file in the project and add one line of code to the Configure () method: ``` app.UseFastReport(); ```  Now we can use the report generator in our project. In addition to displaying the online designer, we also look at the way to transfer the name of the desired report and upload it to the online designer. Therefore, we will add the App_Data folder to the project. And in it we will add report templates from the Demos \ Reports folder in the FR.Net installation directory. As you can see, we also added an xml file from the same folder. This is a database for reports. Find the Controllers folder. A SampleDataController controller is available to us. Add two methods to it: ``` … using FastReport.Web; using System.IO; … [HttpGet("[action]")] public IActionResult Design(string name) { WebReport WebReport = new WebReport(); WebReport.Width = "1000"; WebReport.Height = "1000"; if (name != "Blank") WebReport.Report.Load("App_Data/" + name + ".frx"); // Load the report into the WebReport object System.Data.DataSet dataSet = new System.Data.DataSet(); // Create a data source dataSet.ReadXml("App_Data/nwind.xml"); // Open the database xml WebReport.Report.RegisterData(dataSet, "NorthWind"); // Registering the data source in the report   WebReport.Mode = WebReportMode.Designer; // Set the web report object mode - designer display WebReport.DesignerLocale = "en"; WebReport.DesignerPath = @"WebReportDesigner/index.html"; // We set the URL of the online designer WebReport.DesignerSaveCallBack = @"api/SampleData/SaveDesignedReport"; // Set the view URL for the report save method WebReport.Debug = true; ViewBag.WebReport = WebReport; // pass the report to View return View(); }   [HttpPost("[action]")] // call-back for save the designed report public IActionResult SaveDesignedReport(string reportID, string reportUUID) { ViewBag.Message = String.Format("Confirmed {0} {1}", reportID, reportUUID); // Set the message for representation Stream reportForSave = Request.Body; // Write the result of the Post request to the stream. string pathToSave = @"App_Data/TestReport.frx"; // get the path to save the file using (FileStream file = new FileStream(pathToSave, FileMode.Create)) // Create a file stream { reportForSave.CopyTo(file); // Save query result to file } return View(); } ```  The first method creates a web report object, sets a template and data source for it, and also sets the report editing mode, report designer settings. As a result, the method will return the view where the web report object will be displayed. The method has a parameter - the name of the report, which we substitute when loading the report template into the web object of the report. The second method is a call back handler for clicking the report save button. It saves the edited report in the App_Data folder. For these two methods, you must create two views. Create a Views folder in the project root. Now back to the controller. Right click on the design method signature and select Add view from the menu. Set the view name - Design. Replace the entire contents of the created view with the code: ``` @await ViewBag.WebReport.Render() ```  For the SaveDesignedReport method, we also create a view with the same name. Its contents are replaced by: ``` @ViewBag.Message ```  We turn to the most interesting - the frontend. React application is located in the ClientApp folder. Expand it in the tree in the solution browser. Further we open the src and components directory. Add a new component to this folder. Create a javascript file named Designer: ``` import React, { PureComponent, Fragment } from 'react'; import { WebReport } from './WebReport';   export class Designer extends PureComponent { constructor(props) { super(props); this.state = { options: [ { value: 'Select report name …', }, { value: 'Matrix', }, { value: 'Master-Detail', }, { value: 'Text', }, ] }; }   handleChange = (event) => { this.setState({ name: event.target.value }); };   render() { const { options, value } = this.state; return (
); } } ```  Probably, you paid attention to the import of the WebReport component, we will observe it later. First of all, add states to the class constructor. In our case, it is an array with the names of the reports. Next, consider render () straight away - the method that builds the web page. Rendering is performed every time the state changes. For example, when we select a list item, the onChanges event handler is executed. This method sets the new state of the name variable using the setState function. After that the contents of the render will be rebuilt. Notice the tag. Here another component is called. As a parameter, it receives the selected report name. Consider the WebReport component, which also, like Designer.js should be created in the components directory: ``` import React, { Component } from 'react';   export class WebReport extends Component { constructor(props) { super(props); this.state = { designer: "" }; }   componentWillReceiveProps(nextProps) { fetch('api/SampleData/Design?name=' + nextProps.name + '').then(response => response.text()).then(text => { this.setState({ designer: text }); }); };   render() { return (
); } } ```  The whole point of this component is to execute a ‘get’ request to the backend and return the resulting html code. The built- in function componentWillReceiveProps (nextProps) is executed each time the props property changes. That is, when this component will receive a new value when called. We get the report name from the property and substitute it in the url of the request. We get the answer in text format. It needs to be converted to secure html code in order to be inserted into the DOM. The attribute dangerouslySetInnerHTML will help us with this. It remains only to add the Designer component to the menu. Add to NavMenu file: ``` ```  And to the App.js file add this: ``` … import { Designer } from './components/Designer'; … … ```  That's all. Run the application. On the Designer page, we will see a drop-down list: Select the name of the Matrix report: And now - Master-Detail: Go to the Report tab and click the Save button: The message “saved” appeared on the right, which tells us about the successful saving of the report on the server. Check it out: Another file appeared in the App_Data folder - TestReport.frx. This completes the creation of our demo application. We successfully displayed the report designer, loaded the necessary report into it and saved it. Tags: FastReport, Online Designer, Core, React ### Setup of advanced export functions in FastReport.Web for Core and Blazor Server URL: https://www.fast-report.com/blogs/setup-export-web-core-blazor Summary: Using the code, we configure individual options and parameters for exporting reports for FastReport.Web for Core and Blazor Server. Using the code, we configure individual options and parameters for exporting reports for FastReport.Web for Core and Blazor Server. Using the code, we configure individual options and parameters for exporting reports for FastReport.Web for Core and Blazor Server. Often, our users need to change the file export parameters, and we will look at their implementation today. This feature was integrated into the 2022.1 release. Let's say that we have a finished project. Let's take any report from the FastReport .NET demo application and add additional parameters to the export window using this code: ``` WebReport.Toolbar.Exports.EnableSettings = true; ``` Now let's run our application and see the result: Let's study how it works in FastReport Web for Core in more detail. All options for advanced export settings have been implemented to be enabled or disabled depending on just one setting, EnableExportSettings. You can set up customized export options. Let's say we only need PDF and HTML. The implementation will look like this: ``` Exports = new ExportMenuSettings() { ExportTypes = Exports.Pdf | Exports.HTML } ``` Let's slightly change the export settings in the container, you can read more about this in the article Toolbar customization and export settings in FastReport.Web for Core . Let's enable advanced settings using the EnableSettings property, this will allow calling modal windows with various additional settings for export: ``` WebReport.Toolbar.Exports.EnableSettings = true; ``` Let's run our application and see the result: In the screenshot above, we have only two formats for saving. You can also notice the possibility to localize into various languages. To use different languages, you need to write a small line of code: ``` webReport.LocalizationFile = Path.Combine(Directory.GetCurrentDirectory(),"Localization", "English.frl"); ``` But how to export a file with advanced settings? Let's look at this step by step. Step 1. Click on the gear opposite “Export to PDF”, where the following window should appear: Step 2. Select the parameters that we need, for example, an HTML file without images: Step 3. Click OK and look at the result: If the pictures are not displayed, then we did everything right. It should be noted that you can customize the settings window. Let's take a look at how to do this. First, let's write a few lines of code: ``` WebReport.Toolbar.Exports.Color = Color.Gray; WebReport.Toolbar.Exports.FontSettings = new Font("Times New Roman", 14, FontStyle.Bold); ``` Let's see what happened: You may notice that the color is set to gray and the font family is Times New Roman as specified. At this stage, we examined how to use the advanced export settings for FastReport.Web for Core. Now let's show you how to work in Blazor. Again, we will review one of the available reports. For example, let's take the demo application from our article Toolbar customization and export settings and add new features to it. Let's again add advanced settings and all kinds of exports. By the way, there is also customization here and it is used in the same way as in Core. Go to Pages/Index.razor.cs file and write two lines of code: ``` webReport.Toolbar.Exports= ExportMenuSettings.All; ``` ``` webReport.Toolbar.Exports.EnableSettings = true; ``` Let's run our application: We see that all the exports are displayed and their advanced settings too. Let's try it with the advanced export options to “HTML”. To do this, open the settings by clicking the left mouse button on the gear, where, for example, we will leave only the current page with pictures: We confirm our choice with the "OK" button and look at the result: We covered how to use the advanced export settings for FastReport.Web for Core and Blazor Server through your application code. Tags: .NET, Visual Studio, FastReport, Core, WebReport, Blazor ### Several reports in the same object WebReport - Working with tabs URL: https://www.fast-report.com/blogs/several-reports-same-object-webreport Web Reports direction actively develops in FastReport.Net. A new feature - bookmarks, you can create a bookmark to a web report toolbar. These tabs allow you to open other reports in the same window. Such a decision may be convenient to display a series of reports similar subjects or reports related by the context. It looks like this: Tabs are presented in the form of buttons. By selecting a tab, we run the report in the same window. Now there is no need to display each report in individual object WebReport. This will help to save space on the page and to avoid congestion of the site. Let's look at the implementation of this function in the example. I used the MVC web project. Add FastReport libraries to the project: FastReport.dll; FastReport.Web.dll. They can be found in the folder FastReport.Net application. Create in the controller Home: instances of report objects, data source, tabs. In general, all the logic here. Declare the libraries: ``` using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using FastReport.Web; using System.Web.UI.WebControls; ```  For Index method write the following code: ``` public ActionResult Index() { string report_path = "C:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\"; //Report path System.Data.DataSet dataSet = new System.Data.DataSet(); //Create DataSet instance dataSet.ReadXml(report_path + "nwind.xml"); //Read XML databse WebReport webReport = new WebReport(); //Create webReport instance webReport.Width = Unit.Percentage(100); //Set the webReport object width 100% webReport.Height = Unit.Percentage(100); //Set the webReport object heigh 100% webReport.SinglePage = true; //Enable SinglePage mode webReport.Report.RegisterData(dataSet, "NorthWind"); //Register data source in the webReport object webReport.Report.Load(report_path + "Simple List.frx"); //Load a report into the webReport object webReport.CurrentTab.Name = "Simple List"; //Set the current tab name Report report2 = new Report(); //Create a Report instance which will be displayed in the second tab report2.RegisterData(dataSet, "NorthWind"); //Register data source in the report object report2.Load(report_path + "Labels.frx"); //Load a report into the report object webReport.AddTab(report2, "Labels").Properties.SinglePage=true; //Add web tab in the webReport object. Pass as parameters report object and tab name. Enable SinglePage mode for the tab. Report report3 = new Report(); //Create a Report instance which will be displayed in the third tab report3.RegisterData(dataSet, "NorthWind");//Register data source in the report object report3.Load(report_path + "Master-Detail.frx");//Load a report into the report object webReport.AddTab(report3, "Master-Detail");//Add web tab in the webReport object. Pass as parameters report object and tab name. webReport.TabPosition = TabPosition.InsideToolbar;//Set the property TabPosition ViewBag.WebReport = webReport; //Set the ViewBag as webReport return View(); } ```  There is another interesting property: webReport.ShowTabCloseButton If it is set to true, the tabs will have an "X" to close the tab. This option may be useful in interactive reports, where tabs will be dynamically created and contain detailed reports. If a report is not needed, you can close the tab. Then, if necessary, it will be possible again to generate its tab. Above we have looked at how to create a tab, send them reports. We used: ``` public ReportTab AddTab(Report report, string name); ```  As parameters we pass the report object and the name of the tab. However, you can do one parameter: ``` public ReportTab AddTab(Report report); ```  Pass a report object. This tab name will be generated automatically. This will be the serial number of a tab. It is possible to pass the already built report to bookmark of a Web report: ``` public ReportTab AddTab(Report report, string name, bool reportDone); ```  Here, we pass: report, name for the tab and the property that indicates whether the report is to be pre-built. You can upload a file of already prepared report into the report object, and the last parameter specify as true. Then the report will be loaded from the specified file fpx. It might look like this: ``` Report report2 = new Report(); //Create a Report instance which will be displayed in the second tab report2.RegisterData(dataSet, "NorthWind"); //Register data source in the report object report2.Load(report_path + "Labels.frx"); //Load a report into the report object report2.Prepare();//Prepare the report string s = this.Server.MapPath("~/App_Data/Prepared.fpx");//Set the location to save prepared report report2.SavePrepared(s);//Save prepared report   Report firstReport = new Report();//Create instance of Report object firstReport.LoadPrepared(s);//Upload prepared report to the Report object webReport.AddTab(firstReport, "First tab", true);//Add the tab to the WebReport toolbar ```  I showed how to keep the prepared report to a file, and then download it and use it in a web report tab. Go to the view. In the folder Views-> Home open the file Index.cshtml. All page code consists of four lines: ``` @{ ViewBag.Title = "Home Page"; } @ViewBag.WebReport.GetHtml() ```  In the last line of the report output. Home controller sends a report to the page. Add scripts for the web report in the initialization of view _Layout.cshtml (in Views-> Shared folder): ``` … @WebReportGlobals.Scripts() @WebReportGlobals.Styles() … ```  Edit the Web.config, which is located in the Views folder Add the namespace: ``` ```  Edit the Web.config, which is located in the project root. Add the handler: ``` ``` Undoubtedly, the new feature of the addition of tabs in the Web report will be useful and in demand. Features of web reports is gradually expanding. It seems that in the near future, web reports nothing will not yield to the desktop reports. Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport ### Shape property of PictureObject in FastReport .NET URL: https://www.fast-report.com/blogs/shape-property-dotnet Summary: With the release of 2024.1, a new property called "Shape" has been added to the PictureObject element, allowing to change the image's shape. With the release of 2024.1, a new property called "Shape" has been added to the PictureObject element, allowing to change the image's shape. With the release of 2024.1, a new property called "Shape" has been added to the PictureObject element, allowing to change the image's shape. With the release of 2024.1, a new property called "Shape" has been added to the PictureObject element, allowing to change the image's shape. The following shapes are available for the Shape property: Rectangle. RoundRecangle. Ellipse. Triangle. Diamond. In the designer, they look like this: It is worth considering that the form is not attached to the picture but to the PictureObject. Also, for correct export to PDF format, you must disable the "Original resolution" setting, otherwise, the export may not be correct. Tags: .NET, .NET, FastReport, FastReport, Designer, Designer ### Simplifying the work with TableObject in the report designer URL: https://www.fast-report.com/blogs/table-object-dotnet Summary: New features for the "Table" object in the report designer will allow you to create templates faster through the context menu. New features for the "Table" object in the report designer will allow you to create templates faster through the context menu. New features for the "Table" object in the report designer will allow you to create templates faster through the context menu. Before the 2024.1 update, to add a row or column, you had to look for the desired property in the properties panel and set the desired value. If you wanted to insert a row or column other than at the end of the table, you had to transfer all the cell values manually. In addition, to transfer values, it was necessary to open the editor, copy the value, and paste it through the same editor of another cell. To resolve these issues and make working with TableObject easier, we have added several changes to the designer. 1. Adding columns and rows using the “+” buttons; 2. Copying, cutting, and pasting cell contents into other cells using keyboard shortcuts; 3. Adding lines above and below using the context menu; 4. Adding columns on the right and left using the context menu; 5. Setting styles for a group of cells via the context menu; Thanks to all these changes, working with tables in the designer has become much easier. Tags: .NET, .NET, FastReport, FastReport, Designer, Designer ### Single ecosystem for Delphi products in FastReport 2023.2 release URL: https://www.fast-report.com/news/fastreport-vcl-2023.2 Summary: This major update links our core Delphi and Lazarus products into a single ecosystem with shared installation and authorization. This major update links our core Delphi and Lazarus products into a single ecosystem with shared installation and authorization. This major update combines our core products for Delphi and Lazarus into a single ecosystem. What does it mean? One installation system with online authorization—install and update all your products at once. Shared release system—major releases are a shared release of all products. Shared library for all products—fixes and new functions are available in several products. The Recompile utility has been removed. The functions of package rebuilding are now performed by the installer. ❗️To download the update, we recommend you uninstall all products through the old installer and then use the new one (installer). ❗️ Core library There are new Core, Core Graphics, and Core Localization packages combining products into one ecosystem. The product localization system has been changed. Now it does not require rebuilding packages: it is enough to install language packs during installation, add the TfrLocalizationController component, and select the desired language. FastReport VCL The system for editing and using styles in the report designer has been revised. The new mode allows you to: create, edit and assign styles during report design. The created styles copy the formatting of the object by default. Changing a style affects all objects that have been assigned this style. The new Style Table tool allows you to customize the appearance of a report using styles and switch between them on the fly. You can: Select style table mode; Create new custom styles and color schemes that would fit your report; Change already created styles of report objects to your taste; Switch almost instantly between ready-made solutions. Style tables are supported in a rendered report and allow you to change the report style without rebuilding. These styles are saved to the rendered report file to allow report distribution to other users. Each user can choose their style. Composite barcodes We have added a new container object for composite barcodes. The object has ready-made settings for composite barcodes: EAN 8+2, EAN 8+5, EAN 13+2, and EAN 13+5. The object editor offers functionality for quick compilation of your compound barcodes. An example of barcodes used when printing price tags. Powerful tools for your reports For the efficient work of multi-threaded applications, we have added the ability to print in multiple threads. Each thread can print to the printer without blocking others. This approach is efficient for applications running in print service mode. We have improved the digital signature object for PDF export. Now you can supplement the signature with the current signed date, name, and other additional information. The ability to override and replace the standard export dialog has been added to export filters without changes in the FastReport source codes. Example: ``` uses frxExportPDFDialog; type TfrxCustomPDFExportDialog = class(TfrxPDFExportDialog) protected procedure InitControlsFromFilter(ExportFilter: TfrxBaseDialogExportFilter); override; end; procedure TfrxCustomPDFExportDialog.InitControlsFromFilter(ExportFilter: TfrxBaseDialogExportFilter); begin inherited; SignaturePage.TabVisible := False; end; procedure SetDialogClass; begin frxPDFExport1.CustomExportDialogClass := TfrxCustomPDFExportDialog; end; ``` We have improved and fixed the bugs in export filters. PDF export has received support for handling translucent SVG images. Report compatibility between Lazarus and Delphi versions has been improved. The transfer of report variables between versions has been fixed. FastCube VCL and FastCube FMX For FastCube VCL and FastCube FMX products, we have added integration with FastScript, which we moved to a separate package. For FastScript support, it is enough to install one additional package and not rebuild all the others. We also paid attention to fixing errors in highlighting and editors. FastCube VCL gets HiDPI support for high-resolution monitors. It supports all available RAD Studio development environment modes. FastQueryBuilder gets package support for the latest RAD Studio versions. RAD Studio 11 compatibility bugs have been fixed in FastReport FMX. Product optimization and performance have been improved, and internal architectural changes have been made. The full changelog for the 2023.2 version Сore library --------------- + Added new core package with a shared code for all products + Added a new graphics core package with a shared code for all products + Added new localization packs * Changed product localization system Fast Report VCL --------------- [Designer] - Fixed Int64 support in Object Inspector - Fixed filter behavior in the data selection dialog - Fixed TfrxRichView frame borders in the designer - Fixed a bug when the dropdown code completion did not copy styles from Syntax Memo [Engine] + Added support for style tables and improved work with styles in the report designer + Added the option of simultaneous multi-threaded printing - Fixed form scaling for additional display for Delphi 10.1 and later - Fixed bug with parent container component interactive events - Fixed error handling in CrossView events - Fixed printing of current page mode - Fixed Duplex printing for multiple copies of documents with collation enabled [Exports] + Added new CustomExportDialogClass property for export filters, which allows you to override the export dialog for standard export filters * Improved translucent SVG export in PDF export via EMF - Fixed memory leak with embedded files in PDF export - Fixed progress dialog in HTML export when entering the wrong page number - Fixed export of TfrxLineView and TfrxShapeView in PPTX export [Lazarus] + Added support for variable portability in templates (Delphi <--> Lazarus) - Fixed behavior of empty TfrxPictureView in Lazarus [Preview] - Fixed button order in the preview [Report object] + Added composite barcodes (EAN 8+2, EAN 8+5, EAN 13+2, EAN 13+5) + Added TfrxPictureView.LoadFromStream method + Added handling of Hint property (similar to TagStr) - Fixed placement of SVG pictures in TfrxPictureView [Resources] * Updated Portuguese resources * Updated Polish resources FastReport FMX --------------- - Fixed integer overflow error in gradient fill object - Fixed crosstab editor bug in RAD Studio 11 FastQueryBuilder --------------- - Added packages for new Delphi versions (RAD Studio 10-11) FastCube --------------- + Added HiDPI support for high-resolution monitors + Added integration package with FastScript (integration does not require rebuilding of the main packages) - Fixed bugs in highlighting rules - Fixed Access violation error when using the component in some editors ### Special offer for the 25th anniversary of FastReport VCL! URL: https://www.fast-report.com/news/sale-25-vcl-ultimate Summary: In honor of the anniversary of the FastReport VCL Ultimate report development kit, we are giving you a discount until February 8th. Don't miss the chance to make reports fast, flexible and beautiful at a great price! In honor of the anniversary of the FastReport VCL Ultimate report development kit, we are giving you a discount until February 8th. Don't miss the chance to make reports fast, flexible and beautiful at a great price! Only from February 4 to 8 - 25% off FastReport VCL Ultimate . To celebrate the anniversary of this legendary reporting toolkit, we’re offering a special discount on FastReport VCL Ultimate - a powerful and flexible suite for creating reports, documents, and analytical interfaces in your business applications. FastReport VCL Ultimate is a professional set of reporting components for Delphi, C++Builder, RAD Studio, and Lazarus, featuring rich functionality - from visual report design and editing to advanced multidimensional analytics and export to dozens of formats. The key advantage of the Ultimate edition is that all core solutions for the Delphi ecosystem are bundled into a single package. Instead of purchasing individual products, you get a complete toolkit for report development across VCL, FMX, and Lazarus, along with a web-based designer for working with templates. This is not only convenient, but also highly cost-effective - especially now, with a 25% discount. FastReport VCL Ultimate includes: FastReport VCL report generator; FastReport FMX cross-platform report generator; FastReport for Lazarus report generator. As well as products available exclusively as part of FastReport VCL Ultimate: FastCube VCL and FMX OLAP analysis tools; FastGrid data visualization library; FastReport Online Designer for visual editing of document templates. The promotion is valid only from February 4 to 8 - 25% off any FastReport VCL Ultimate license (Single, Team, Business, or Site). This is the perfect time to upgrade your reporting tools or to introduce a professional reporting solution with maximum capabilities into your project. Don’t miss this opportunity — make your reports fast, flexible, and beautiful with FastReport VCL Ultimate at a great price. If you are purchasing through FastSpring, use the promo code FRUVCL25 , and if you are paying via PayPro, use the links below. ### Start FastCube 2 VCL beta-testing! URL: https://www.fast-report.com/news/fastcube-vcl-beta-testing Summary: Start FastCube 2 VCL beta-testing! Start FastCube 2 VCL beta-testing! We announce powerful beta-testing of FastCube 2 VCL! What does it mean? - Trial versions of FastCube 2 for all supported IDEs are available here: https://www.fast-report.com/en/download/fast-cube-2/ - All who ordered FastCube 1 from now to date of release of FastCube 2 (approximately May 2013) will get FastCube 2 for free (beta - today and release then). - All customers of FastCube 1 can order FastCube 2 with great discount (see customer panel) ### Styles in FastReport .NET URL: https://www.fast-report.com/blogs/styles-fastreport-net In this article, I would like to talk about the use of styles in FastReport .NET. Indeed, many people underestimate this feature. They think that styles helps bring documents to a unified specie. Almost every user faced with a text editor Microsoft Word. And most know that styles help instantly change the appearance of objects (such as titles). FastReport .Net also allows styles to bring individual objects or groups of objects to uniformity. The practice of style greatly accelerates the development of reports. So, open the report designer. The toolbar Stiles is located on the tab Home: There is the drop-down list that allows you to choose the current style. To apply the style you need to select an object or group of objects. Then select the desired style from the drop-down list. To open the Style Editor, use the icon below the drop-down list: In the Style Editor, you can add, delete, and edit. In addition, you can save a set of styles file * .frs, and then load styles from this file to create another report. This is very useful if you are developing many reports in the same style. Style allows you to: set the object frame. This can be a whole frame and one or more lines to choose from. Also, is defined style, thickness and color of lines; Set the fill color. This can be not only a solid color, but a gradient or hatching; Set the font. Traditionally, you can set the size, style, alteration; Set the font color. For example, apply a style for headlines data in the report Master-detail: Bands also have property Style. This means that it is possible to apply the custom styles. But let's turn our attention to the property EvenStyle. Because of this property we can set style for even rows in the table. Create another style with a light gray fill. Choose a band with the data (in our case, a detailed band data). For the property EvenStyle select created style. Preview the report: Admit this is a very simple and effective. Thus, using the styles in your reports, you will: accelerate the creation of the report, achieve a uniform design of report objects, and improves the appearance of the lists through the property EvenStyles. Tags: .NET, .NET, FastReport, FastReport ### Subscribe on save events in FastReport Online Designer URL: https://www.fast-report.com/blogs/subscribing-save-events-online-designer In case you need to do some actions on client side after saving the report like show some beautiful dialog from your code or do redirect to the other page you can use following techniques. 1) you can use the following code: ``` const eventName = 'save_success';   window.addEventListener('message', e => { if (e.data === eventName) { // here is your code. It could be something like showSuccessDialog(); } }, false);   ``` where eventName can also be: save_begin - will be executed when user starts saving the report but before sending request to the server save_failure - will be executed in case the request failed and report was not saved. 2) Another possibility to do some actions on save events is to set URL option in config section during building your online designer : Tags: FastReport, FastReport, Online Designer, Online Designer ### Summary and plans for 2021 URL: https://www.fast-report.com/blogs/2020-summary-2021-plans Summary: Summing up the year 2020 and planning 2021: new technologies and objects Summing up the year 2020 and planning 2021: new technologies and objects Summing up the year 2020 and planning 2021: new technologies and objects We could talk a lot about our experiences and difficulties in the past year, but we'll just take stock of this year and talk a little bit about our plans for the future. In spite of all the difficulties, we worked hard this year. Not everything we planned has been completed, but we are committed to achieving all of our goals for the foreseeable future. What's done? Over the past year we were able to implement new quality control processes for our products. Work in this direction will continue. We have optimized and improved exports to various formats, added new object properties, improved report generation algorithms and fixed many bugs. We have added support for 5 new barcodes and 6 new formats for saving documents. We want to acknowledge the hard work our developers did to refactor the code to merge the .NET family source code into a common repository. In addition, in FastReport .NET we added Windows Forms support for .NET Core 3.1 and support for .NET 5, introduced security control of the report script when working in web applications, and developed a new demo application. Also we deprecated .NET Framework 2.0 support in the FastReport NET product. The FastReport Mono gained the ability to build charts. We added support for new RAD Studio in FastReport VCL, did a lot of work to improve the user interface, added new features to build complex reports, and improved the quality of generated reports. Separately we note the work on improving the product FastReport for Lazarus. In turn, FastReport FMX has gained the ability to work in 64-bit apps under macOS operating system, the report designer has been improved as well as work on data processing and document generation. OLAP FastCube .NET product can be used in ASP.NET Core web-applications now, it has an improved interface, new possibilities of data filtering were added and it works in Mono. FastCube VCL got expression support, it works better in Lazarus. In FastCube FMX new options for data highlighting were added. We want to thank all FastReport Open Source users, those who contributed to its improvement and those who wrote to us with their issues. What's next? Our analysts together with the entire team closely follow trends in software development and the entire IT industry. We are constantly learning and trying to improve our products according to our customers' wishes. Let's start with the FastReport VCL and FMX product plans: we want to release FastReport VCL 7; the tables in the reports will be improved; PDF documents will get digital signing capabilities; reports will be able to use SVG images; new transports will be added; the Lazarus version will get a RichView object; new interface styles will be added. The FastReport .NET product will get: support for high-resolution screens (high dpi); components to work with the Blazor framework; support for the new .NET 6; digital signatures for MS Office documents; parallel printing on multiple printers; ability to connect to the Clickhouse column based DB. FastReport Mono cross-platform report generator will become even more compatible with different operating systems - we plan to improve stability and performance of this product. Browser-based report editor FastReport Online Designer will be added support for editing charts, new report objects, improved user interface. Work on improvement of the FastCube user interface will be continued, also it is planned to expand its capabilities to connect to different DB. It is planned to release a new product for generating reports and launch its closed beta-testing. You can take part in it. Just follow our news. We also plan to update and publish documentation for all our products. We also plan to introduce a subscription-based licensing model for those products which haven't used it yet. Good luck in the new 2021! We want to wish you good and positive emotions in the coming year 2021! May your programs be bug-free and your reports always complete and timely! May your DB queries run fast, and may users' requests to you for new features not hamper you! And let the suppliers of libraries for your products fulfill your requests quickly! In any case - we'll do our best for you! We always welcome your requests - write us your wishes about our products, and we'll try to fulfill them! With respect, Fast Reports team Tags: FastReport ### Summary and plans for 2022 URL: https://www.fast-report.com/news/summary-and-plans-2022 Summary: We are wrapping up the outgoing 2022: the release of FastConverter .FP3, the end of support for Delphi 7, and also share our plans for 2023. We are wrapping up the outgoing 2022: the release of FastConverter .FP3, the end of support for Delphi 7, and also share our plans for 2023. The year 2022 was full of important events. Despite its unpredictability and all challenges, that we've faced over the past 12 months, we've continued to work hard to improve document generation in thousands of apps. What important happened? A milestone for the VCL report generators was the end of support for obsolete non-Unicode versions, which will allow us to work harder to improve FastReport and introduce more sophisticated features with each release. Since the release of 2023.1, FastReport VCL supports Delphi versions starting from 2010. We have released the fp3 converter which converts to any FastReport VCL data format — FastConverter .FP3 . We have launched NuGet server for the .NET direction — a repository of licensed products for users. Now you can conveniently download the latest versions of our components on any operating system. FastReport.Core now supports graphics and text rendering using the SkiaSharp library. Also, FastReport .NET got a bronze medal in the "Reporting, Analysis and Visualization" nomination in the Reader's Choice Awards by Visual Studio Magazine. We were happy to share the stand with Devexpress and SAP Crystal Reports. What about plans? The release of several services at once will be a truly revolutionary breakthrough in 2023. One of them is FastReport Cloud cloud report builder. This is an online service for creating, storing, and editing reports and documents, which allows you to set up and implement reporting in companies with minimal involvement of programmers. Stay tuned and you will be one of the first to try it! We are also working on a high-performance WPF reporting and document library for business application development. Other products will have the following features: WASM support New report objects Support for the latest version of the environment — NET 8, RAD Studio 11.3 Updated user interface and user experience Digital signature stamp Support for RFID tags for ZPL export Map implementation based on GeoJson And much more! It's also time for New Year's wishes. Maybe it's reporting for Android? Or export to some exotic format? Write to us your wish in the form below. It would be great if you also tell us how this will change the work of your applications. Congratulations on the upcoming holidays, Fast Reports team. Загрузка… ### Summer events with Fast Reports URL: https://www.fast-report.com/news/summer-events-2018 Summary: Summer events with Fast Reports. We are having a busy-busy summer and invite you to meet us at the following events in Europe that we organized together with our partners Summer events with Fast Reports. We are having a busy-busy summer and invite you to meet us at the following events in Europe that we organized together with our partners We are having a busy-busy summer and invite you to meet us at the following events in Europe that we organized together with our partners:  Date Name Location For .Net Developers For Delphi Developers Link June 6 – 7 Delphi Day Italy Piacenza, Italy + June 15 SDN (Free!) Zeist, Netherlands + + June 25-28 DWX Nuremberg, Germany + June 29 Workshop (Free!) Nuremberg, Germany + + July 2 Workshop (Free!)  Barcelona + + ### Summer offer: 10% off on FastReport VCL editions URL: https://www.fast-report.com/news/fastreport-vcl-discount-2023 Summary: Get Lazarus support and source code with 10% off in FastReport VCL Professional and Enterprise editions with VCL Ultimate. Get Lazarus support and source code with 10% off in FastReport VCL Professional and Enterprise editions with VCL Ultimate. From  July 11 to July 25 , get Lazarus support and source code with 10% off in FastReport VCL Professional and Enterprise editions, or full cross-platform with FastReport VCL Ultimate. Save from $39,9 when purchasing a Single license, $89,9 when purchasing a Team and $599,9 when purchasing a Site! Take advantage of getting much more functionality for less cost. You can see the differences between editions here . The offer is valid only for the license purchase and does not apply to an upgrade or renewal. You can use the hot offer by clicking on the link. ### Summing up. Rewarding our partners URL: https://www.fast-report.com/news/summing-up-rewarding-our-partners Summary: We would also like to acknowledge sales growth in the UK of 52% and the Czech Republic of 69%. We would also like to acknowledge sales growth in the UK of 52% and the Czech Republic of 69%. Dear Friends! We are going to reward our best dealers and present them with personal certificates for their good work and special contributions in FastReport product promotion. The key results and awards given are:  Germany. We have awarded a certificate and "Partner of the Year" status to  Christian Haimerl  and  McLicense   for their active promotion of our products and high sales levels. Japan! This is exceptional! The  Ag-Tech  company has localized FastReport.Net and FastReport VCL to Japan, and sales have grown by 1973% Brazil. Very good performance. Growth is low at 8% but we thank  our dealers  from Brazil for the stable sales and technical support. Netherlands.  Growth is 73% for the year 2011. We would like to mention in a special way  Isah , our technical partner in Holland. Poland. Rising sales  of 73%. Moreover, we have opened a training center for FastReport customers. An award goes to  Softkey.pl  and  BSC Polska . China. Very good work by resellers in this country. We thank our partners for their hard work and marketing campaigns! Awards go to  Qast Software Group ,  Panyan Tehnology (Component CN) ,  Chongqing Huidu Technology (Evget) . Italy. Many thanks to  Andrea Urbani   for his work and product technical support. Andrea is our friend and very good partner. We would also like to acknowledge sales growth in the UK of 52% and the Czech Republic of 69%. We thank our partners from other countries and give them “Partners of Year 2011” status : Component Source  (UK and World),  Jan Kadlecek  (Czech Republic),  Olivier Pennec  (France),  Danysoft  (Spain),  Linksoft  (Taiwan). Michael Philippenko rewards Jan Kadlecek ### Support URL: https://www.fast-report.com/support Summary: Customer Support Center. Contact us in a convenient way or leave a request through the contact form. We are always ready to help you. Support Center We are here for help Contacts Tickets Forum Frequently Asked Questions Licensing issues FastReport .NET - FAQ FastReport VCL - FAQ Reporting FMX - FAQ Analysis VCL - FAQ Online Designer - FAQ FastReport Publisher - FAQ Do you need help? Useful materials Documentation Blogs Tutorial Video info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Support for .NET 7 in new FastReport .NET 2023.1 URL: https://www.fast-report.com/news/fastreport-net-2023.1 Summary: We are pleased to present you a integration with FastReport Cloud, .NET 7 support, JasperReports converter, connection to stored procedures in MsSQL. We are pleased to present you a integration with FastReport Cloud, .NET 7 support, JasperReports converter, connection to stored procedures in MsSQL. The autumn update for the report generator is now available! The functionality of our solutions is expanding every day and we are pleased to present you a partial integration with FastReport Cloud, .NET 7 support, JasperReports template converter, connection to stored procedures in MsSQL, and much more. Integration with FastReport Cloud FastReport .NET, FastReport Core, and FastReport Mono now support some interaction experience with FastReport Cloud. Downloading and uploading reports Now you can download the report from Cloud and work on it in the designer, or vice versa — upload your files to Cloud. Web Preview A web preview function has also appeared in addition to the standard preview. The report can only be viewed this way if it was opened from Cloud. Connecting to FastReport Cloud data sources FastReport Cloud can store connections to data sources. From now on, you have the option to add these data sources to your report.  It also became possible to add the connection to Cloud. R ead this article to learn more about the new features.  .NET 7 support We have added  .NET 7  support for FastReport.Core and FastReport.CoreWin. This platform improves application performance and adds many new features to your projects. Report validator improvements Increased work speed Now the report validator runs in a single thread. The speed of its work is significantly optimized. You can notice the changes in processing reports with a large number of errors. While the validator is checking the report, the check window shows a respective message. In this case, you can edit the report. A table with errors will appear upon completion of the validator. Validator table setup For convenience, we have added a new column with error numbers. Its display can be enabled or disabled via the table context menu. In the same way, you can customize the display of the error type column. JasperReports Template Converter We have added the option to convert report templates from JasperReports to FastReport .NET templates. JasperReports reports may contain objects that are not supported by the FastReport designer. These objects will not be converted or will be replaced to make the generated report as similar as possible to the one created in JasperReports. Read more in the article. MSChartObject improvements and fixes The MSChartObject object has many properties and settings. The most frequently used ones are moved to the object editor. Properties that are not available in the editor can be modified using the Object Inspector. However, there was a problem with these properties — when they were changed, the report was not seen as modified. As a result, saving was not available. To save the report, it was necessary to change its other property or object. In addition, the values of the specified properties were reset to their default values when preparing a report and after closing the preview window. This bug has been fixed in the new version. Connection to Stored Procedures in MsSQL We have added the option to connect to procedures stored in MsSQL. This was previously available via a database query. Now you can connect to procedures much more conveniently using the interface of database table connection. They will be displayed in the selection window along with the tables. Once you select a procedure, a window with parameter settings, if any, will appear.  Read more in the article. Export Improvements "Print optimized" option in RTF export We have added a new PrintOptimized property and a corresponding option in the export window. Enabling this option will greatly increase the quality of the exported image. However, the size of the output file will be bigger. UseFileStream property in Excel 2007 export We have added a new option, UseFileStream, for exporting to Excel 2007. It can only be used when exporting from code to a file. This option is useful when exporting reports with a large number of pages (several tens of thousands) in multiple threads. This will help you avoid memory shortage errors. In other cases, it does not make much sense to use it and it is not recommended to do it. Example: ``` Report report = new Report(); Excel2007Export export = new Excel2007Export(); export.UseFileStream = true; report.Export(export, "report.xlsx"); ``` Accounting format when exporting to Excel 2007 You can now export the currency data format as an accounting format. To do this, a corresponding option has been added in the export window and the CurrencyToAccounting property. Upgrading the minimum .NET Framework version from 4.0 to 4.6.2 We are upgrading the minimum supported version of FastReport .NET to .NET Framework 4.6.2 due to the following: support for .NET Framework 4.0 has long been ended; there are problems with building the FastReport source code in the latest versions of Microsoft Visual Studio; the need to implement new APIs. The full list of changes is available at the following link. ### Support for editable fields in WebReport URL: https://www.fast-report.com/blogs/support-editable-fields-webreport In the article "Interactive forms in the PDF export of Fast Report .Net 2018" I have already considered editable fields. The bottom line is that the Text and Checkbox objects can be edited in the report preview mode if you include the Editable property. Until recently, this function was supported only for desktop reports. Now, starting with version 2018.2.3, web reports can also have editable fields. That is, when viewing the report in the browser, you can change the text and the checkboxes, and after that, for example, export the report to the desired format. Let's look at an example of how this works. Let's say we have a Web application with a WebReport object. An arbitrary report is displayed in the object. I took for example the Master-Detail report from the FastReport.Net delivery. Select the desired text object and set its properties to Editable = true. I made two fields editable: Unit price and Discontinued. Launch the web application: Before us there are categories with lists of goods. Let's say I'm a businessman and look through the goods of my store. I see an error in the price or description and correct it right in the report. Then, I can save the report or print it to transfer it to the price adjustment to the administrator. Everything is simple and convenient. Let's fix the price for a product. Just click on the desired text field, and before you open the editing window: Put the check boxes in the Discontinued field for other products: By the way, if you use the Editable property, and set the InteractiveForms option when exporting to PDF, you will get editable fields in the PDF document. Tags: FastReport, FastReport, ASP.NET, ASP.NET, WebReport, WebReport ### Support of Lazarus in FastReport VCL 6 URL: https://www.fast-report.com/news/support-lazarus-vcl6 Summary: Support of Lazarus in FastReport VCL 6 Support of Lazarus in FastReport VCL 6 We are excited to announce that FastReport VCL 6 now supports Lazarus in beta test mode. Update your FastReport VCL Professional edition and see it first. Feedback is welcomed at support@fast-report.com What's new?  - Support of Lazarus 2.0.0 Improved: - paper handling by default - refreshing page count when jumping between tabs - drop-down list of fonts Fixed: - undo-redo buffer in Linux - hyperlinks in Text object - nested cross objects - report variables Added: Export to following formats: HTML, HTML5, RTF, DBF, CSV, ODS, ODT, XML, PDF, DOCX, PPTX, XLSX. ### Support our products in Community Choice Awards URL: https://www.fast-report.com/news/community-choice-awards-2010 Summary: Support our products in Community Choice Awards Support our products in Community Choice Awards Two community choice awards votings are taking place now. These are:  1. "2010 SQL Server Magazine Community Choice Awards" Our great reporting product- “Fast Report .Net"- is taking part in this voting .It is in the second category called “Best Business Intelligence & Reporting Product”. This is our great chance to vote for our product, let others what it can do and promote it in different communities.  And to add to that, are you impressed with our tech support team?  Then you have a chance to vote for our own team in the ninth category called “Best vendor tech support”. And what can be the best way to encourage our team than to vote for it?  2. "2010 DevProConnections Community Choice Awards". Our impressive and effective data analysis tool –FastCube- is taking part in the second category “Charting & Graphics Tool”, The best way to tell others that there is a better way to analyze their data is by voting for our product. And this will do us all pride that once again, we are together supporting our team and making others aware of better ways to handle and report their data. Thanks for your support! ### Tabs in WebReport URL: https://www.fast-report.com/blogs/tabs-web-report We can use tabs to view multiple reports in WebReport  in version FastReport.NET 2013.4 and newer. Tabs can be useful for viewing many reports with additional information. Each report in tab has own navigation and may be attached to any data source. Saving in different formats is performed for each tab. We have plans to implement FastReport.NET for open the detailed report in a separate tab by clicking on the object page. Also we will add the ability to close unnecessary tabs. Tabs can be added directly in the application code, for example: ``` WebReport webReport = new WebReport(); webReport.Report.RegisterData(dataSet, "NorthWind"); webReport.Report.Load(report_path + "Simple List.frx"); webReport.CurrentTab.Name = "Simple List"; // tab 2 Report report2 = new Report(); report2.RegisterData(dataSet, "NorthWind"); report2.Load(report_path + "Labels.frx"); webReport.AddTab(report2, "Labels"); // tab 3 Report report3 = new Report(); report3.RegisterData(dataSet, "NorthWind"); report3.Load(report_path + "Master-Detail.frx"); webReport.AddTab(report3, "Master-Detail");   ``` A property “webReport.CurrentTab” needs for access to the current tab, for example: “webReport.CurrentTab.Report”. By default, the first tab is available. In each of the tabs we have next available properties: “Report” – report object, “Name” – tab name. The name of the tab will be taken from the properties of report or report file name if the “Name” property is not specified. The collection of tabs "webReport.Tabs" is also available. These can be used to refer to the tab by its index, for example: webReport.Tabs [0]. Name. WebReport.AddTab method adds a new tab. We can use any declaration from next: ``` // an adding of report object public ReportTab AddTab(Report report); // an adding of report object with its name public ReportTab AddTab(Report report, string name); // an adding of prepared report object with its name (reportDone = true) public ReportTab AddTab(Report report, string name, bool reportDone);   ``` Last call declaration can add any prepared report. An example of adding some prepared reports: ``` webReport.Tabs.Clear(); string s = this.Server.MapPath("~/App_Data/Prepared.fpx"); // first Report firstReport = new Report(); firstReport.LoadPrepared(s); webReport.AddTab(firstReport, "First tab", true); // second Report secondReport = new Report(); secondReport.LoadPrepared(s); webReport.AddTab(secondReport, "Second tab", true);   ``` In the near future we will add the display settings for tabs and an implementation of interactive reports. LIVE DEMO Thank you for attention! Tags: .NET, .NET, FastReport, FastReport, ASP.NET, ASP.NET, MVC, MVC ### Thank you for your request URL: https://www.fast-report.com/user-request-successful Summary: You succesfully applied your contest project! Thanks for being a part of it. We will notify you about your status change via email You succesfully applied your contest project! Thanks for being a part of it. We will notify you about your status change via email You succesfully applied your contest project! Thanks for being a part of it. We will notify you about your status change via email ### The content of .NET component packages URL: https://www.fast-report.com/fastreport-packs-net Summary: The composition of the product line .NET directions, effective from June 1, 2024: now the products are more specialized The composition of the product line .NET directions, effective from June 1, 2024: now the products are more specialized Here you can learn how .NET products will be formed starting on June 1, 2024. Instead of the usual product and edition, we suggest choosing the set of components (pack) that is right for you.  Ultimate WEB Avalonia WinForms WPF Mono Open Source The composition of component sets Run-time report designer ✓ ✓ ✓ ✓ ✓ ✓ ✓ Report Viewer ✓ ✓ ✓ ✓ ✓ ✓ ✓ Saving and uploading templates to  FastReport Cloud ✓ ✓ ✓ ✓ ✓ ✓ ✓ Saving prepared reports to the cloud ✓ ✓ ✓ ✓ ✓ ✓ Report script ✓ ✓ ✓ ✓ ✓ ✓ ✓ Print support ✓ ✓ ✓ ✓ ✓ ✓ In-report data sources ✓ ✓ ✓ ✓ ✓ ✓ ✓ In-report dialogue forms ✓ ✓ ✓ ✓ ✓ ✓ Export the prepared report to other formats ✓ ✓ ✓ ✓ ✓ ✓ Partly* Advanced report objects : Table, Matrix, AdvMatrix, Barcode, Charts, Maps, RichText, Checkbox, Zip code, CellularText, Digital signature ✓ ✓ ✓ ✓ ✓ ✓ Partly** Report objects - Text, Picture, Shape, Line, Subreport ✓ ✓ ✓ ✓ ✓ ✓ ✓ System.Drawing (GDI) ✓ ✓ ✓ ✓ ✓ ✓ ✓ FastReport.Drawing (Skia) ✓ ✓ ✓ Blazor Server ✓ ✓ Blazor Webassembly (WASM) ✓ ✓ ASP.NET components (WebReport) ✓ ✓ ✓ WinForms components ✓ ✓ WEB components  ✓ ✓ ✓ Avalonia components ✓ ✓ WPF components ✓ ✓ Mono components ✓ ✓ OLAP components ✓ Business Graphics components ✓ Online Designer included ✓ ✓ Source code ✓ Operating systems Windows ✓ ✓ ✓ ✓ ✓ ✓ ✓ macOS ✓ ✓ ✓ ✓ Linux ✓ ✓ ✓ ✓ ✓ Pricing policy Single $1,499 $799 $599 $499 $499 $499 Team $4,499 $2,399 $1,799 $1,499 $1,499 $1,499 Site $22,499 $11,999 $8,999 $7,499 $7,499 $7,499 *Only PDFSimple, Images (Jpeg, PNG, BMP, GIF, TIFF, EMF), HTML, HTML5 (layered) are supported **Only Table, Matrix, Barcode, RichText, Checkbox, Zip code, CellularText are supported ### The content of Delphi component packages URL: https://www.fast-report.com/fastreport-packs-delphi Summary: The content of the Delphi product line, effective from June 1, 2024: now the products are more specific foк your needs The content of the Delphi product line, effective from June 1, 2024: now the products are more specific foк your needs Here you can learn how Delphi products will be for med starting on June 1, 2024. Instead of the usual product and edition, we suggest choosing the set of components (pack) that is right for you. Ultimate VCL Optimum VCL Reporting VCL Reporting FMX Reporting Lazarus Analysis VCL Embarcadero Edition The composition of component sets Report Designer ✓ ✓ ✓ ✓ ✓ Partly* Report script ✓ ✓ ✓ ✓ ✓ Connecting data sources ✓ ✓ ✓ ✓ ✓ ✓ ✓ In-report dialogue forms ✓ ✓ ✓ ✓ ✓ Export to other formats ✓ ✓ ✓ ✓ ✓ ✓ Partly** Advanced report objects - Table, Matrix, Barcode, Charts, Maps, RichText, Checkbox, Zip code, CellularText ✓ ✓ ✓ ✓ ✓ Partly*** Report objects - Text, Picture, Shape, Line, Subreport ✓ ✓ ✓ ✓ ✓ ✓ Converters from Quick Report, Report Builder, Rave Reports ✓ ✓ ✓ VCL components (Core, Core controls, Core Graphic, Core Localization) ✓ ✓ ✓ ✓ VCL OLAP components ( FastCube VCL ) ✓ ✓ ✓ VCL ClientServer components ( learn more ) ✓ ✓ FMX components (Core, FastScript, Reporting) ✓ ✓ FMX OLAP components (FastCube FMX) ✓ Lazarus components (Core, Core UI,  FastScript, Reporting) ✓ ✓ Lazarus OLAP components (FastCube Lazarus) ✓ Lazarus ClientServer components  ( learn more ) ✓ Save prepared reports to clouds (transports) ✓ ✓ Source code ✓ ✓ ✓ ✓ ✓ ✓ FastScript included ✓ ✓ ✓ ✓ ✓ ✓ FastQueryBuilder included ✓ ✓ ✓ Operating systems Windows ✓ ✓ ✓ ✓ ✓ ✓ ✓ macOS ✓ ✓ ✓ Linux ✓ ✓ ✓ Pricing policy Single $1,299 $899 $499 $499 $499 $399 Download Team $3,899 $2,699 $1,499 $1,499 $1,499 $1,199 Site $19,499 $13,499 $7,499 $7,499 $7,499 $5,999 *Design time only **Only PDF, RTF, HTML, TXT, Images, CSV  are supported ***Only Сharts, Linear barcodes, Rich Text, Checkbox are supported ### The era of WinForms is over, the era of FastReport.Core.Skia began URL: https://www.fast-report.com/blogs/fastreport-core-skia Summary: The new Sharp graphics engine for creating high-quality reports and correctly exporting to different formats is available in FastReport .NET. The new Sharp graphics engine for creating high-quality reports and correctly exporting to different formats is available in FastReport .NET. The new Sharp graphics engine for creating high-quality reports and correctly exporting to different formats is available in FastReport .NET. To create high-quality reports and correctly export them to different formats (PDF, Word, Excel, etc.), it is necessary to use the graphics engine. Since the earliest versions of the .NET Framework, Microsoft has used GDI+ and its wrapper as part of the System.Drawing library. FastReport .NET has long been using the same library to create beautiful and functional reports. The Mono team has developed their GDI+ version for Unix systems: libgdiplus, which is used by System.Drawing.Common. However, this method does not work perfectly. GDI+ problems Unfortunately, unlike on Windows, System.Drawing.Common works on other platforms very specifically. Such common issues that we receive from our users include incorrect rendering text sizes, lack of RTL language support, incorrect word spacing, word break error in sentences, lack of ARM processor support, and general libgdiplus instability (“Out of memory”, problems during the work in a multi-threaded configuration). You can solve some of these problems by manually rebuilding libgdiplus from the Mono repository  with Pango/Cairo support . In any case, this is inconvenient, especially if your application uses containerization. The other problems affect the quality of report export on all operating systems except Windows. As a result, Microsoft officially dropped support for System.Drawing.Common on non-Windows platforms. Here is their post:“ Breaking change: System.Drawing.Common only supported on Windows - .NET | Microsoft Docs “ . After it, our users began to actively ask how they could use the powerful functionality of FastReport on Linux or macOS. Solution We have developed a special version of FastReport.Core, which uses Skia as a graphics engine and its wrapper for .NET - SkiaSharp, called FastReport.Core.Skia. The FastReport.Core.Skia and FastReport.Web.Skia packages are available on our private NuGet server.  In case you have problems rendering text under Linux with libgdiplus, we highly recommend trying FastReport.Core.Skia. To use it in your application, just change the package name  FastReport.Core -> FastReport.Core.Skia , and add the following packages on Linux (on Windows and macOS, the necessary packages are added automatically) : - SkiaSharp.NativeAssets.Linux ( NuGet ). - HarfBuzzSharp.NativeAssets.Linux ( NuGet ). Let's now compare FastReport.Core with libgdiplus and FastReport.Core.Skia on Linux/macOS. First, let's look at the incorrect calculation of text length after exporting to HTML format on Linux Ubuntu 20.04. In the images below, you can see how libgdiplus with Pango, even rebuilt from the source, does not display the end of the 1st line correctly, dropping some information, Skia works fine. Incorrect HTML export on Linux, libgdiplus + Pango Correct HTML export on Linux, SkiaSharp Let's look at exporting the Unicode.frx report from our demo with texts in different languages. Unfortunately, even after rebuilding libgdiplus with Pango, it does not work with RtL languages such as Hebrew, Arabic, and others. FastReport.Core.Skia can work with such languages. Incorrect PDF export of RtL text on Linux, libgdiplus with Pango wrote all text in 1 column for 8 pages Correct PDF export of RtL text on Linux, SkiaSharp We can see the similar situation with some Eastern languages, the correct display of which requires a special font: Incorrect PDF export of text on Linux, libgdiplus with Pango Correct PDF export of text on Linux, Skia. An appropriate font is automatically selected for each text. Let's try FastReport.Core.Skia in a previously unsupported scenario: working on devices with ARM processors, such as Apple M1. Let's create a .NET 6 console application (because only .NET 6 has native support for ARM architecture for macOS) and export the Simple List.frx report from our demo. In the end, we recall that System.Drawing.Common, starting with version 7.0, will completely stop supporting non-Windows systems, so the examples of libgdiplus given above will soon not work at all. Limitations: This version of FastReport.Core cannot be used with the System.Drawing API: in some .NET Framework projects, NET Core 3.1/ NET 5+ WindowsForms projects, and in projects with System.Drawing.Common due to the specifics of this modification. Try the new version of FastReport.Core with SkiaSharp support and enjoy all its advantages. If you have any questions, please contact our  Support . Tags: .NET, MacOS, Mono, FastReport, Linux, Core, PDF, WinForms, HTML, Libgdiplus, Windows ### The Event of ExportParameters in WebReport.Report URL: https://www.fast-report.com/blogs/exportparameters-in-webreport Summary: The article discribes how to use event ExportParameters with FastReport.Net reports. The article discribes how to use event ExportParameters with FastReport.Net reports. The article discribes how to use event ExportParameters with FastReport.Net reports. In FastReport 2020.1 we have added the ability to change export parameters. To do this, you must subscribe to the ExportParameters event in WebReport.Report. Until now the FastReport.Net library did not provide access to the export parameters. Or rather, it did, but only to some of the parameters, and with the help of individual properties of the Web report. All these properties are piled up and working with them using intelisense is quite inconvenient, and they do not cover all the needs of users. So it was decided to give users access to all properties of the export object, using a special ExportParameters event. In the event handler you can get the export object and set all the properties you need. Thus, it is now possible to configure the export more precisely due to previously unavailable properties. This is how you can use the new event: ``` WebReport.Report.ExportParameters += (sender, e) => { PDFExport export = e.Export as PDFExport; if (export != null) { export.Title = "test"; export.DefaultPage = 2; } }; ```  In this example, we only changed the header and the default page. Note that we are expecting a PDF export when processing, which means that this code will not work for another type of export. In one handler you can specify settings for several export types at once. Now, let's take the example of PDF export as an example of how the available export properties have expanded. Previously WebReport offered us a set of export properties, which were essentially wrappers over the properties of the PDFExport export object: ``` public string PdfTitle { get; set; } public string PdfAuthor { get; set; } public string PdfSubject { get; set; } public string PdfKeywords { get; set; } public string PdfCreator { get; set; } public string PdfProducer { get; set; } public string PdfUserPassword { get; set; } public bool PdfPrintScaling { get; set; } public string PdfOwnerPassword { get; set; } public bool PdfAllowModify { get; set; } public bool PdfAllowCopy { get; set; } public bool PdfAllowAnnotate { get; set; } public bool PdfA { get; set; } public bool PdfShowPrintDialog { get; set; } public bool PdfImagesOriginalResolution { get; set; } public bool PdfJpegCompression { get; set; } public bool PdfAllowPrint { get; set; } public bool PdfCenterWindow { get; set; } public bool PdfHideWindowUI { get; set; } public bool PdfFitWindow { get; set; } public bool PdfEmbeddingFonts { get; set; } public bool PdfBackground { get; set; } public bool PdfInteractiveForms { get; set; } public bool PdfPrintOptimized { get; set; } public bool PdfOutline { get; set; } public bool PdfDisplayDocTitle { get; set; } public bool PdfHideToolbar { get; set; } public bool PdfHideMenubar { get; set; } public bool PdfTextInCurves { get; set; } ```  I must say that this list of properties includes the main and most popular, but not all. Many users want more. And now, with the new event ExportParameters, they have the full set of properties available: ``` public bool HideWindowUI { get; set; } - hide user interface; public bool ShowPrintDialog { get; set; } – show printing dialog; public bool HideToolbar { get; set; } – hide toolbar in PDF viewer; public bool HideMenubar { get; set; } – hide menubar in PDF viewer; public GradientInterpolationPointsEnum GradientInterpolationPoints { get; set; } – gradient interpolation poinrs; public bool FitWindow { get; set; } – enable window fitting; public bool CenterWindow { get; set; } – center window; public bool PrintScaling { get; set; } – show scaling; public bool Outline { get; set; } – show contents; public MagnificationFactor DefaultZoom { get; set; } – default zoom; public int RichTextQuality { get; set; } – RichText quality; public bool Compressed { get; set; } – compress file; public bool TransparentImages { get; set; } – transparent image; public bool DisplayDocTitle { get; set; } – display document title; public int DefaultPage { get; set; } – default page number; public byte[] ColorProfile { get; set; } – color profile; public ExportType ExportMode { get; set; } – export type; public bool InteractiveForms { get; set; } – enable interactive forms; public bool IsDigitalSignEnable { get; set; } – enable digital signature; public bool SaveDigitalSignCertificatePassword { get; set; } – save digital signature certificate password; public X509Certificate2 DigitalSignCertificate { set; } – digital signature certificate; public string DigitalSignCertificatePath { get; set; } – digital signature certificate path; public string DigitalSignCertificatePassword { set; } – ; digital signature certificate password public string DigitalSignLocation { get; set; } – digital signature location; public string DigitalSignReason { get; set; } – digital signature reason; public string DigitalSignContactInfo { get; set; } – digital signature contact info; public CurvesInterpolationEnum CurvesInterpolation { get; set; } – curves interpolation; public bool AllowAnnotate { get; set; } – allow annotation; public bool AllowCopy { get; set; } – allow copying; public bool AllowModify { get; set; } – allow editing; public bool AllowPrint { get; set; } – allow print; public GradientQualityEnum GradientQuality { get; set; } – gradient quality; public PdfStandard PdfCompliance { get; set; } – PDF standard complience; public bool EmbeddingFonts { get; set; } – enable embedded fonts; public bool Background { get; set; } – enable background; public CurvesInterpolationEnum CurvesInterpolationText { get; set; } – interpolation text curves; public PdfColorSpace ColorSpace { get; set; } – color space; public bool ImagesOriginalResolution { get; set; } – use original image resolution; public bool PrintOptimized { get; set; } – print optimization; public bool JpegCompression { get; set; } – Jpeg image compression; public bool TextInCurves { get; set; } – make text in curves; public string Title { get; set; } – title; public string UserPassword { get; set; } – user password for encrypted documents; public int JpegQuality { get; set; } – Jpeg image quality; public string OwnerPassword { get; set; } – Owner’s password; public string Producer { get; set; } – Producer; public bool SvgAsPicture { get; set; } – Display Svg objects as pisctures; public string Keywords { get; set; } – Keywords; public string Subject { get; set; } – Subject of the document; public string Author { get; set; } – Author; public string Creator { get; set; } – Creator; ```  And this is without considering the properties common to all exports. Let's summarize what benefits the new ExportParameters event brings us. By using an object for a specific export, we can only access the properties of that export. Previously, it was required to select from a common list of properties of all possible exports, which is not always convenient, because the names of some properties are not obvious to identify the export. You will see the full list of available properties using Intellisense or you can see the full list of available properties. Tags: .NET, .NET, Export, Export, FastReport, FastReport ### The Future of Report Generation with Blazor WebAssembly URL: https://www.fast-report.com/blogs/blazor-webassembly-manual Summary: Step-by-step instructions for creating a demo application on .NET 6 and 7 directly in the browser using Blazor WebAssembly in FastReport .NET. Step-by-step instructions for creating a demo application on .NET 6 and 7 directly in the browser using Blazor WebAssembly in FastReport .NET. Step-by-step instructions for creating a demo application on .NET 6 and 7 directly in the browser using Blazor WebAssembly in FastReport .NET. Microsoft has long introduced a framework for creating an interactive web interface with C#, HTML and CSS. It comes in two versions: Server-side (Blazor Server) and Client-side (Blazor WebAssembly). WebAssembly is particular because it is executed right in the user’s browser and accesses the remote server only for the libraries required for code execution. FastReport .NET already supports Blazor technology as part of the FastReport.Web package ( more ). However, until now, we have only supported Server-side rendering (Blazor Server). It took us a long time to get FastReport .NET working right in the user’s browser because we needed  Skia  support for stable work. Starting with version 2023.2, we are pleased to announce Blazor WebAssembly support as part of the FastReport.Blazor.Wasm package. This package is available as part of a FastReport .NET Enterprise subscription and higher (including Ultimate).  Attention! Blazor WebAssembly support is currently in beta. Some reports and functionality may not work. Read the documentation and restrictions carefully before using. Creating a demo application Let’s create a test demo application to see the work of FastReport in WebAssembly. First, install WebAssembly Build Tools to build your project with WebAssembly. If it is not installed, then run the following commands on the command line, depending on the TargetFramework of your application: For .NET 6: ``` dotnet workload install wasm-tools-net6 ``` For .NET 7: ``` dotnet workload install wasm-tools ``` Now let’s create a simple Blazor WebAssembly demo project from a template. You can do this using Microsoft Visual Studio 2022 or the dotnet CLI. For simplicity, let’s use the command: ``` dotnet new blazorwasm -n BlazorWasmDemo ``` Let’s edit the csproj of our project and add the latest FastReport.Blazor.Wasm package: ``` ``` Now, if you want to prepare your report in the browser (.frx), you must disable Trimming, as it interferes with the report script compilation. You can do this in the following way: ``` false ``` Now we add the native SkiaSharp libraries as part of our application. Depending on the TargetFramework we need to add: For .NET 6: ``` ``` For .NET 7: ``` ``` In the _Imports.razor file, similarly to the Blazor Server components, add the necessary namespace to view the FastReport components: ``` @using FastReport.Web @using FastReport.Web.Blazor.Components ``` Register FastReport services in our DI container (file Program.cs): ``` builder.Services.AddScoped(_ => new HttpClient{ BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); builder.Services.AddFastReport(); ``` Note that for FastReport to work in WebAssembly, you must have a configured HttpClient in a DI container that can access root to load the necessary dlls builds. If you need to override HttpClient for your use, you can just set a separate HttpClient only for FastReport needs: ``` builder.Services.AddFastReport(options => options.HttpClient = new HttpClient{ BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)}); ``` We have almost completed our long journey of preparing FastReport in WebAssembly, but there are just a few finishing touches. In the standard wwwroot\index.html file, we need to add the loading of js scripts for the proper work of FastReport: ``` ``` Font registration FastReport must interact with the user’s fonts since FastReport works with reports and the font is an integral part of any report with text. This is what happens when the report generator runs on Windows or Linux. However, the information about installed fonts on the user’s computer becomes unavailable when FastReport runs in a browser. Thus, our application must register the fonts that we will use in our reports. In our application, we will use a font that we will embed in our library as an embedded resource (EmbeddedResource) in advance. For this, specify in our project (.csproj): ``` Fonts\%(RecursiveDir)%(Filename)%(Extension) ``` Let’s put all the fonts we need in the Fonts folder and register them in our Program.cs. Let’s create this method and call it immediately: ``` static void AddFonts() { var resources = Assembly.GetExecutingAssembly().GetManifestResourceNames(); foreach (var resource in resources) { using var font = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource); FastReport.Utils.Config.PrivateFontCollection.AddFontFromStream(font); } }   AddFonts(); ``` Data registration That’s quite difficult. Few database connectors can work directly from the user’s browser. Therefore, we leave this to the discretion of our users. For example, you can request data from some third-party resource via HTTP and then register this data in a report before preparing it. In our application, for demonstration, we use the data from the xml file, which we put in wwwroot together with the report. Attention! Do not use this method for the final project publication because hackers can easily steal your data. Using WebReportContainer component Finally, let’s change the file Index.razor to use our WebReportContainer component. It will require the following code: ``` @page "/" @using FastReport @using System.Data; @inject HttpClient HttpClient   @if (isReady) { }   @code{ WebReport myWebReport; private bool isReady = false;   protected async override Task OnParametersSetAsync() { // We receive a report var reportBytes = await HttpClient.GetByteArrayAsync("Simple List.frx"); var reportStream = new MemoryStream(reportBytes); var report = Report.FromStream(reportStream);   // Get xml database and register it var dataBytes = await HttpClient.GetByteArrayAsync("nwind.xml"); var dataSet = new DataSet(); dataSet.ReadXml(new MemoryStream(dataBytes)); report.RegisterData(dataSet, "NorthWind");   // Create a WebReport and assign a report to it myWebReport = new WebReport() { Report = report, EmbedPictures = true }; isReady = true; } } ``` Everything went well if we saw our report in the browser: You have access to the reporting engine, you can build reports and view ready-made. Online designer support will be added in future. For security reasons, database connections are disabled inside reports, you will need to connect data from your application yourself. We are working hard on improving our WebAssembly component. If you have any questions, write to our support at  support@fast-report.com . Tags: .NET, FastReport, WebReport, Blazor ### The indicator of the presence of events in the object in the report designer FastReport.Net URL: https://www.fast-report.com/blogs/indicator-presence-events-designer-net In FastReport 2018.2.3, new settings for the report designer appeared - objects appearance. Settings can be opened in the File menu - Settings. The new section contains only two settings for now: • Show indicator on bands with events; • Show indicator on objects with events. Both settings allow you to enable the indication of the presence of events in the object. Thus, you can quickly find in the report objects for which there is code in the report script. The indicator is a small red triangle in the upper left corner of the object: For example, select the CheckBox object and look in the Property inspector for the events for it: Indeed, it's fast and convenient to search for objects with events. An alternative path is to go to the Code section, find the desired event and read the name of the report object. Then you need to return to the report page and, in the Property inspector, select the desired object from the drop-down list. This is very inconvenient, isn’t it? With the indicator, you can open a large, complex report and instantly detect objects with events. Obviously, the new settings section "Appearance of objects" will be replenished with other interesting options. Tags: .NET, .NET, FastReport, FastReport ### The InterBase and Firebird Developer Magazine 2005 URL: https://www.fast-report.com/news/firebird-developer-magazine-2005 Summary: The first issue of "The InterBase and Firebird Developer Magazine" The first issue of "The InterBase and Firebird Developer Magazine" The first issue of "The InterBase and Firebird Developer Magazine" is published. It is a free electronic magazine in PDF devoted to InterBase`and Firebird database development. You can download the first issue and subscribe to the next issues at  www.ibdeveloper.com ### The Latest FastReport Version: 50% Discount on Updates URL: https://www.fast-report.com/news/promotion-march-2026 Summary: From March 23 to April 6, 2026, a special offer is available for customers with expired licenses. Report generators FastReport .NET and FastReport VCL with a 50% discount. From March 23 to April 6, 2026, a special offer is available for customers with expired licenses. Report generators FastReport .NET and FastReport VCL with a 50% discount. From March 23 to April 6, 2026 , a special offer is available for customers with expired FastReport licenses. During this period, you can purchase the latest versions of FastReport .NET and FastReport VCL report generators with a 50% discount. The promotion applies to FastReport .NET editions: Ultimate, WEB, Avalonia, WPF, WinForms, Mono, as well as to FastReport VCL editions: Ultimate, Optimum, Reporting VCL, Reporting FMX, Reporting Lazarus, Analysis VCL. The offer is valid for Single, Team, Business, and Site licenses and allows you to upgrade to the current product versions under special conditions, even if your license has expired a long time ago. Updating provides access to the latest FastReport features, including new functionality, an updated report designer, technical support, and improved performance. Additional releases with new functionality are also planned in the coming months and will be available only to owners of active licenses. After the promotion ends, the discounted price can still be locked in for an additional 7 days if necessary. To take advantage of the offer or receive more information, please contact the sales team at sales@fast-report.com . ### The new version of FastCube FMX - 2021.1 URL: https://www.fast-report.com/news/fastcube-fmx-2021.1 Summary: The new FastCube FMX with the support of RAD Studio 11 Alexandria, improved interface, and the new licensing model - subscription. The new FastCube FMX with the support of RAD Studio 11 Alexandria, improved interface, and the new licensing model - subscription. New features Now FastCube OLAP decision cube for FireMonkey supports the new RAD Studio 11 Alexandria. On top of that, we have improved the interface - there are new items in the context menus, improved the ability to search for values. We also fixed bugs. New licensing mode l Starting version 2021.1 all FastCube FMX editions are subscription-based. It means that you will always have an up-to-date version as long as your subscription is valid. Full list of changes + Add support for RAD Studio 11 Alexandria. + Axis position changes on DblClick in the axis field popup. + Added search in the popup list of unique values by pasting from the clipboard. + Added "Copy" menu item to the axis menu. Item copies dimension value to the clipboard. * Fixed keyboard handling in the popup grid list (grid must have CanFocus = True). * DataZone gets the focus and therefore keyboard handling on the grid focus (grid must have CanFocus = True). ### The new version of FastReport Online Designer 2024.1 URL: https://www.fast-report.com/news/fastreport-online-designer-2024.1 Summary: With the release of 2024.1, the visual convenience when creating reports has been improved, new fills and gradients for objects and bands have been added. With the release of 2024.1, the visual convenience when creating reports has been improved, new fills and gradients for objects and bands have been added. Exciting updates to the report designer in the 2024.1 release! We have paid special attention to the internal architectural product changes and improved the visual ease of reporting. We have also added new object fills and gradients. New opportunities We added the ability to apply a "Linear Gradient" fill to an object or band To apply the "Linear Gradient" fill to an object or band, you need to select the element first and then click on the "Fill" group in the properties panel: A dialogue box will open where you need to navigate to the "Gradient" tab. After that, you can choose the gradient parameters (start color, end color, gradient angle, focus, and contrast) and apply the changes: Added the ability to apply a "Shape Gradient" fill to an object or band To apply a "Shape Gradient" fill to an object or band, you need to select an element and then click on the "Fill" group in the properties panel: You will see a dialog box in which you need to go to the "Shape Gradient" tab. After, you can select the parameters of the figure gradient (center color, edge color, shape) and apply the changes: Added the ability to apply the "Hatch" fill to an object or band To apply the "Hatch" fill to an object or band, you need to select an element and then click on the "Fill" group in the properties panel: A dialog box will open in which you need to go to the "Hatch" tab. Here, you can select hatch parameters (hatch color, background color, hatch style) and apply the changes: Added the ability to apply the "Glass" fill to an object or band To apply the "Glass" fill to an object or band, you need to select an element and then click on the "Fill" group in the properties panel: You will see a dialog box in which you need to go to the "Glass" tab. Then you can select the glass fill parameters (color, transparency, shading) and apply the changes: Added the ability to apply a "Texture" fill to an object or band To apply the "Texture" fill to an object or band, you need to select an element and then click on the "Fill" group in the properties panel: You will see a dialog box in which you need to go to the "Texture" tab. After this, you can select the texture parameters (image, texture pattern dimensions, transfer mode, "save proportions" option, pattern shift along the X and Y axes) and apply the changes: Added the ability to drag a field onto a barcode so that it is recorded in the DataColumn Now, to insert any data into a barcode, you can, in addition to using the properties panel, drag data from the data panel directly onto the barcode: Added the ability to delete a matrix via the context menu Based on user requests, we have added a useful "Delete" item in the context menu of the matrix: Improvements Rework and new design of pop-ups All pop-up windows, such as the expression and format editor, have been completely redesigned and improved to meet modern UI standards. We have completely reviewed and rewritten all dialog boxes in our project. This was done to ensure better performance, ease of use, and optimize user experience. For example, now the expression in the expression editor field is transferred to the specified location: Here is the full list of changed windows: MS Chart editing; Band editing; Border editing; Connection string editing; Data band editing; Fill editing; Font editing; GroupHeader editing; Conditional selection editing; Map editing; Matrix cells editing; MS Chart series editing; Image editing; RichText editing; Format; Link editor; Map layer loading; Adding connection; Outline editing. Rework and new design of elements in pop-up windows In addition to functional improvements, you will also notice visual changes. The design of controls has become more modern, clean, and intuitive. These changes improve user experience with the application. Rework and new design of the work panel (properties, report tree, data, events) The work panel has been redesigned and changed. It includes: Properties panel; Report tree panel; Data panel; Events panel. Now, the work panel is located on the right: The design of the properties panel has been changed. Now it looks like this: Also, the report tree panel has been redesigned: The data panel has been redesigned: And another event panel: New Components Panel for Desktop Devices For desktop devices such as personal computer or laptops, the component panel is now on the left: For devices with a touchscreen display, the component panel remains in the same place: Changed Color Picker The color picker has been updated to a more powerful version. The new version of the tool allows you to select preset colors and adjust color transparency. The old version of the tool looked like this: The new version looks like this: Now, when deleting GroupHeader, the Data band is not deleted with it Previously, if you deleted a GroupHeader, the Data band was also deleted. Now the Data band is saved: If you used JS injections for FastReport Online Designer, their functionality may be impaired! If you have any problems, please contact our support . Full list of changes ----- + Added the ability to apply a "Linear Gradient" fill to an object or band; + Added the ability to apply a "Shape Gradient" fill to an object or band; + Added the ability to apply the "Hatch" fill to an object or band; + Added the ability to apply the "Glass" fill to an object or band; + Added the ability to apply a "Texture" fill to an object or band; + Added the ability to drag a field onto a barcode so that it is recorded in the DataColumn; + Added the ability to delete a matrix via the context menu; * Rework and new design of pop-up windows; * Rework and new design of elements in pop-up windows; * Rework and new design of the work panel (properties, report tree, data, events); * New component panel for desktop devices; * Replacement of the color selection tool; * Now, when deleting a GroupHeader, the Data band is not deleted along with it; * Updated localization; * And other improvements; - Fixed a bug when the "Simple Progress Sensor" object was not displayed; - Fixed a bug when nothing happened when selecting a data format in some cases ; - Fixed default color for table borders; - Fixed reset of the separator when re-opening the "data format" form; - Fixed a problem where the CheckedListbox on the dialog form was not updated; - Fixed compatibility issues for old reports; - Fixed display of numbered list in RichText; - Correction of errors in dialog forms; - Fixed display of events after report reloading; - And other fixes. ### The new version of FastReport VCL 2022.3 is now available! URL: https://www.fast-report.com/news/fastreport-vcl-2022.3 Summary: We have compiled the most interesting improvements and fixes that came out with the release of FastReport VCL 2022.3. We have compiled the most interesting improvements and fixes that came out with the release of FastReport VCL 2022.3. We have compiled the most interesting improvements and fixes that came out with the release of FastReport VCL 2022.3. We have decided to drop support for non-Unicode Delphi versions to ensure quality and constant updating. All further releases will use Delphi 2010. FastReport VCL 2022.3 now supports the latest update of Embarcadero RAD Studio 11.2. Report engine The new ClearEmptyLines property of the Text object allows to delete empty lines in the object. Combined with the CanShrink and ShiftAlways properties, this property makes it possible to collapse objects with empty values. In this case, the entire tree of objects at the bottom will move up. The new stretch mode of the text object (StretchMode) is smPartMaxHeight. Breaking objects in this mode use the height of each part after the break with correction. Unlike the smMaxHeight mode, which uses the band's height before the break. Static table cell objects now have OnBeforePrint / OnAfterPrint / OnAfterData events. We have added support for printing translucent images for non-AlphaBlend devices using Dithering. Note: Some devices may not be supported. Report Objects We have added support for TfrxPDFView object rotation. We have added a basic rotation of some figures in the report. We have added a new Code11 barcode. You can now use the TfrxHtmlView object in Lazarus. We have also added the output format from left to right with the processing of the dir="rtl" parameter. Exports and transports Interactive PDF forms can now be enhanced with new Combobox and Listbox objects. This will make it easier for you to work with interactive PDF documents and create questionnaires and survey forms. There are new transports for accessing MS Outlook and Gmail mailboxes via the Webmail API. Transports can send and receive reports, as well as receive the result in the form of exported documents. See how to use  MS Outlook end  Gmail  from FastReport VCL. We have added the possibility to hash duplicate images in export filters. The new cache reduces the number of duplicate images and the resulting export size. You can enable this feature using the CalculatePictureHash property of the export filter. Report Designer New pop-up tips (hints) for text objects, which do not fit in the box. Improved script code editor Quick commenting of code blocks using the hotkeys “Ctrl + /”. Quick addition of viewable variables (context menu and hotkeys). New pop-up tips and step-by-step debugging modes “Step over” and “Run until return”. Client-Server We have added the option of using the mask ‘*’ in configuration files with a list of IP addresses. An example of using a server via GCI was added in Lazarus. Full list of changes in the 2022.3 version --------------- [Transports] + New Outlook webmail transport; + New Gmail webmail transport; - Unicode names in GDrive transport have been fixed; [Client-server] + GCI example for Lazarus has been added; + Support for '*' mask in IP server lists has been added; [Designer] + New pop-up tips in the report designer that show the full text of the Memo object; + Quick comments in the Syntax Memo editor for selected text (default hotkey "Ctrl + /"); + New tooltips in the Syntax Memo editor; + Step over and StepReturn debugging modes have been added; + Quick addition of selected text from Syntax Memo to the Watches list from the context menu; - TfrxDesignerForm.GetCurrentForm has been fixed (TFrame support has been added); - We have fixed the issue with the component editors of the report designer when editors have the same property names with different flags (paMultiSelect); - Fixed paper size B4 has been adjusted (JIS); - We have fixed the destruction of CodeCompletion thread when custom scripts are assigned by Report.Script.Parent; - The generation of Unicode names for objects during Drag&Drop from DataTree has been fixed; [Report engine] + We have added a new ShiftMode, smPartMaxHeight stretches each part of the split object to the maximum height of the Band and adjusts the height of each part; + We have added the hash calculation for images used in the report, for export filters (ExportFilter.CalculatePictureHash property), and the prepared report (TfrxReport.PictureCacheOptions.CalculateHash); + We have added the emulation for printing a translucent mask using dithering for printers without alpha blending (may not be supported on all printers); + We have added TfrxTableCell.OnBeforePrint/OnAfterPrint/OnAfterData event handlers for static table object; + We have added a new property of the Memo object ClearEmptyLines, which removes all empty lines inside the Memo object after the GetData method; - We have fixed a bug in using a combination of MemoView.AutoWidth=True and Align=baWidth to position objects on container; - We have fixed a bug with the wrong value of basic object shift when the first object in the container moved to the next page; - Proper removal of editors when unloading packages; - We have fixed the mechanism for partitioning the Table static object; [Exports] + We have added interactive PDF support for Listbox and Combobox objects; - We have fixed a Unicode password when exporting to PDF; - We have fixed the export of HTML tags to PDF for Embarcadero edition; - We have fixed the export of translucent vector graphics (SVG) when AllowVector is set to False. - We have fixed XLSX export for Delphi versions, which do not support Unicode; - PDF export with European ligatures via EMF (ETO_GLYPH_INDEX) has now been fixed; - PDF export now doesn't export clip text if the entire line doesn't fit; [Other] + We have added new openssl libraries (static crt and x64 support); - We have fixed the generation of CBuilder 2007 headers; - We have fixed the issues with HiDPI PerMonitorV2; [Preview] - Setting units of the preview page have been fixed; [Report objects] + New Code11 barcode; + Basic rotation has been added to the TfrxShapeView object; + Linux support for TfrxPDFView has been added in Lazarus; + TfrxPDFView rotation has been added; + Support for RTL attributes in the TfrxHtmlView object has been added; + Support for TfrxHtmlView object in Lazarus has been added; - The bug in QR EPC barcode has been fixed; - We have fixed the bug in Datamatrix C40 encoding when data size was equal to code size limits; - We have fixed the bug in scaling of 2D barcodes during the export to PDF for applications that do not support dpi; - The processing of TfrxHTMLView expressions for data fields has been fixed; - The bug in GS1-128 code has been fixed; - RichView splitting in double pass reports has been fixed; * Laz Chart support has been updated to version 2.2.0; [Resources] * Swiss resources have been updated; * German resources have been updated. ### The object rendering border for the Clip property URL: https://www.fast-report.com/blogs/clip-setting-boundaries-drawing Summary: Let's take a closer look at how the object rendering boundary works for the Clip property in FastReport. Find more usefull tips and articles in our blog. Let's take a closer look at how the object rendering boundary works for the Clip property in FastReport. Find more usefull tips and articles in our blog. Let's take a closer look at how the object rendering boundary works for the Clip property in FastReport. Find more usefull tips and articles in our blog. In this article I would like to draw your attention to an interesting property of the of the object Text. Clip property determines whether to display the text, if it goes beyond the boundaries of the object. If this feature is enabled, the text will be cut according to the boundaries of the object. If disabled - will be displayed in full, as if the object was stretched. Let's look at an example. Create a simple report. For example, I bring a list of product categories with pictures: Please note that the selected text object with the name of the category has a small size. I specifically disabled text wrapping (WordWrap property) for clarity. Preview the report: As you can see, the names of the categories cut because of the small size of the text object. Now, set the Clip property to false (default true) for the same object. Let's see how the report will look is now: Names are displayed in full, despite the size of the text object. Now do export to PDF format:  The document corresponds to the report, everything is correct. I went ahead and decided to display the text vertically. To do this, change the angle of the text of the object in the Angle property, for example - 270. Now the object of the text is as follows:  Run the report:  At this time, the property did not work. But it is not all that bad. Let us export the report in PDF: And here, the Clip property really disabled and the text is displayed correctly, despite the size of the text object. Make text slope of 45 degrees and repeat the experiment.  The report is still not fully displayed text. And now export to PDF: And this time, export to PDF did not disappoint. Everything looks correct. Summarize. The property Clip of the text object truncates text that does not fit within the boundaries of the object. If you use the autogrow feature object may occur displacement of neighboring objects or objects overlap that for some exports will lead to an incorrect display of the report. In such cases it is convenient to disable Clip property. From considered above, it is clear that now this "feature" works only with horizontal withdrawal of the text in the reports. However, when exporting to PDF, the rotation angle of the text does not matter. The text is always displayed in its entirety. Tags: .NET, FastReport, Designer ### The way to add a data field to a matrix row URL: https://www.fast-report.com/blogs/add-data-field-matrix-row Summary: Let's take a detailed look at how to add a data field to a matrix row in FastReport. Find more usefull tips and acticles in our blog. Let's take a detailed look at how to add a data field to a matrix row in FastReport. Find more usefull tips and acticles in our blog. Let's take a detailed look at how to add a data field to a matrix row in FastReport. Find more usefull tips and acticles in our blog. In this article, we'll have a look at the way to create a dynamic matrix that is populated from the report's script code. The peculiarity of this matrix is that in addition to the data added from the script, we will insert the data field in the report cell using a text object. Suppose you create a matrix with a variable number of columns, which will be added depending on any conditions, but some of the data you have is constant. They are always filled. It would be nice just to put these data fields simply in the matrix, and the remaining cells should be filled from the code. Despite the fact that the filling of the matrix data is provided only in two ways (from the code or automatically, the data fields) we will match them. In fact, the technology is very simple. The data field is simply inserted into the cell as a separate text object. However, this is not all. When you add data to the matrix in the report, you must add the row number from the data set. Let's have a look at the example. Create a report and add the matrix to the "Data" band. Connect the data source - the demonstration database from the delivery, the Employees table. The matrix template looks like this: In the cell with a value of 2, we added a text object. In it, select the field Employees.LastName. This is exactly the "static" field about which we have spoken in above. Create the AfterData event handler for the matrix. ``` private void Matrix1_AfterData(object sender, EventArgs e) { DataSourceBase rowData = Report.GetDataSource("Employees"); // we get the data source Employees. Matrix1.DataSource = rowData; // assign it to the DataSource matrix property   rowData.Init(); // initialize the data source // we go through all records of the data source while (rowData.HasMoreRows) { Matrix1.Data.AddValue(new Object[] {"Phone" }, new Object[] { (string)Report.GetColumnValue("Employees.City"), (string)Report.GetColumnValue("Employees.FirstName")}, new Object[] {(string)Report.GetColumnValue("Employees.HomePhone") }, Report.GetDataSource("Employees").CurrentRowNo); // add another record rowData.Next(); //get the next record } } ```  It is clear from the comments that when you add a data string, we define the title of Phone. Then we insert the data in order: city, name and phone. And also, we need to transfer the data line number to insert the last name from the current data record. Now run the report: As you can see, you can make it easier for yourself and not add all the necessary data in the report script, but simply place them in the matrix template using a text object. Tags: .NET, FastReport, Data Source ### Toilet paper printing URL: https://www.fast-report.com/blogs/printing-on-toilet-paper Summary: How to print report on toilet paper if needed with FastReport .NET. How to print report on toilet paper if needed with FastReport .NET. How to print report on toilet paper if needed with FastReport .NET. Gentlemen jokes aside! Today we are talking about toilet paper. This essential hygiene product was only recently developed in the United States in the 19th century. But to be honest, toilet paper was first mentioned in China as early as the 6th century, but this product was only available for a narrow circle of people. In preparation for the self-isolation in the midst of a pandemic, almost every inhabitant of the planet has got a myriad supply of toilet paper. It is worth remembering that first of all this is a paper. And so happened, that the paper - the carrier of information. So let's consider if we can use toilet paper to output information? You can ask a reasonable question: why? Of course for fun! For example, here is a shortlist of possible applications of printing on toilet paper: News - but they quickly become out of date, it is unlikely you will spend the toilet paper as fast; Jokes - humor never hurts, and such information is quite appropriate in this medium; Comics, manga, stories - as well as anecdotes - easy entertaining reading, just what we need; Images and pictures - are purely decorative prints. By the way, this kind is the most popular now print on toilet paper. Advertising - and this is a commercial approach. It is strange that until now there are no advertising prints on toilet paper, they are certainly more effective than billboards; Calendars and horoscopes. And these are only the options that appeared in my mind right now. You are limited only by your imagination. Let’s print on toilet paper! Printers Many inkjet and matrix printer models support roll printing. This function is not new, but the dying function on the home printer. But the laser printer is not suitable for printing. This is related to the mechanism of making news pages. A laser printer stores the entire page in memory in a line with jet or matrix printing. Therefore, we will no longer consider laser printers. Given the high roughness of toilet paper, printing on an inkjet printer will be fuzzy. The paint will fade on soft paper. Therefore, do not expect high-quality printing. Try printing the image on ordinary office paper. Even her stiff paper is not able to give a decent picture. A good matrix printer will give more clarity, simply because it was originally created for low-quality paper. The thinnest needles of the printing head carry microscopic drops of ink on paper, which are much thicker than the colors of the inkjet printer. Therefore, if you do not need color printing and you are ready to tolerate low printing speed, then the matrix printer is the best choice for your purposes. Carrier size Now it is necessary to think about the source of printing, the document itself. In fact, you will not be able to find a toilet paper template in any text or graphic editor. Width and length have to be chosen by yourself. FastReport.Net report generator allows you to create pages with reports of arbitrary width and length - according to our needs. What are the dimensions of the toilet rolls? Very different. Nevertheless, we can highlight the most popular sizes. As you remember, in the US and the UK to measure the length and width is inches, and in all other countries - centimeters. The most common sizes of roll width are 4.5 "(11cm), 4.1" (10 cm) and 3.7 "(9.4cm). The length can be completely different for different manufacturers and models. For example, rolls with an empty middle are more likely to be about 17 meters long. But there are quite large ones - 200m and even 500m. Among all the characteristics of toilet paper examined, we can draw the conclusion that the most suitable for printing is a harder paper with the minimum roughness. This kind of paper can often be seen in public toilets, placed on the large steering wheel. This is usually a single layer of grey paper from the second material. It's harder to break than soft. How to print? Now let’s move to create the document for printing. Let’s create it with the help of FastReport .NET report designer icon: In the form you need to set only the height and width: For example, the length of paper in a roll is 17 meters, and the width is 11 centimeters (670"). By default, the values are set in centimeters. Therefore, we introduce 1700cm in length and 11cm wide. The units can be changed in the designer's settings: Now, in the property inspector on the right, you need to select the object of the page and set the Property UnlimitedHeight to true. This property will not break the report into separate pages and will output all on one, as on a roll. Also, we set the PrintOnPollPaper property to true. It can't be set as true until you turn on the UnlimitedHeight property. Now it's time to decide what we will print. Report Generator can take the data not only from the database but also from the files. You can also add images. If your toilet paper is perforated to break into individual sheets, it is necessary to adjust the height of the DataBand according to the length of the resulting paper passage. In this case, the remaining bands are better to remove or take into account their height. Suppose we decided to display images. Then add on the band Picture object and set its properties Dock = Fill, so that it fills the entire area. Given that the band height 10 cm, and 1700 cm roll length, it is necessary to display the band 170 times. When the DataBand band is connected to a data source, then for each row of data appears a new instance of a band. But, as in our case there is no data source, we're just in the properties of the band shall indicate the number of times it should be repeated. To this end, the properties of the band set a property RepeatBandNTimes = 170. This is how will look like part of our report: Now you can load paper in the printer and start printing right out of the mode of viewing the report. But if you do not want to print right now, or want to share a document obtained, with colleagues working remotely, you can export the report, for example, in PDF. Tags: .NET, .NET, FastReport, FastReport, Printing, Printing ### Toolbar customization and export settings in FastReport.Web for Core URL: https://www.fast-report.com/blogs/toolbar-customization-and-export-settings-in-fastreport-web-core Summary: We add colors to your application by customizing the appearance of the toolbar. We add colors to your application by customizing the appearance of the toolbar. We add colors to your application by customizing the appearance of the toolbar. Our users often need to change the appearance of the toolbar or customize the export menu, but not everyone knows how to do this. Let’s say that we already have a finished project. As an example, we can use any report from the FastReport .NET demo application. Let’s add some colors to our toolbar. We need to write a code that will be responsible for customization: ``` ToolbarSettings toolbar = new ToolbarSettings() { Color = Color.Red, DropDownMenuColor = Color.IndianRed, IconColor = IconColors.Left, Position = Positions.Left, IconTransparency = IconTransparencyEnum.Low, }; webReport.Toolbar = toolbar; ``` Now let's run our application and see the result: Let’s take a look at how customization of the toolbar works in FastReport Web for Core in more detail. All customization parameters are stored as a collection of properties. There are several options of how you can implement changes in the appearance of the toolbar, but they all come down to adding or changing parameters. Let’s consider the appearance customization from the code, where you can see a list of collections and properties. Here are some of them: Color – change the background color of the toolbar. DropDownMenuColor – set the background color of the dropdown menu. DropDownMenuTextColor – set the text color of the dropdown menu. Position – change the toolbar position in the report. Roundness – add roundness to the toolbar. ContentPosition – change the content position. IconColor – change the icon colors. IconTransparency – adjust the icons transparency. FontSettings – fine-tune text styles. Let’s assume that we want to change the color of the dropdown menu and display all kinds of export options in it. To change the appearance of the dropdown menu, you just need to write some changes in the toolbar. But to display all the exporting data options, you need to add the following piece of code: ``` ToolbarSettings toolbar = new ToolbarSettings() { Color = Color.Red, DropDownMenuColor = Color.Red, DropDownMenuTextColor = Color.White, IconColor = IconColors.White, Position = Positions.Right, FontSettings = new Font("Arial", 14, FontStyle.Bold), Exports = new ExportMenuSettings() { ExportTypes = Exports.All } }; model.WebReport.Toolbar = toolbar; ``` If we run our project, we will see that the dropdown menu has changed, and the exporting data options have significantly increased: Now we see a customized menu with export formats. But what if we need only certain formats? For example, we need PDF, XPS, and CSV only. Let’s implement it! We need to slightly change the export settings in the container: ``` Exports = new ExportMenuSettings() { ExportTypes = Exports.Pdf | Exports.Xps | Exports.Csv } ``` Let’s run our application and see the result: If only these export options are displayed, then you did everything right. So, we have described how to customize the toolbar and edit the dropdown menu with export options in FastReport Web for Core. In addition to these examples, you can use the parameters discussed in combination with the other ones. Customization of objects appearance in Blazor We also need to mention Blazor, which includes everything that a regular version does, but with more advanced functionality. We will use the project from the following article:  Reports and PDF documents in Blazor .  Let’s customize the toolbar appearance. Go to the Pages/Index.razor.cs file. Here we will customize the toolbar, and add a part of the code that is responsible for customization in Blazor: ``` var toolbar = new ToolbarSettings { FontSettings = new Font("Verdana,Arial sans-serif", 15), Color = Color.Red, DropDownMenuColor = Color.Red, DropDownMenuTextColor = Color.White, IconColor = IconColors.White, Position = Positions.Bottom, ContentPosition = ContentPositions.Center, }; ``` Let’s run our application and see the result: Imagine, that in addition to simple customization we need to add export to PS, HPGL, JSON, and PDF. Let’s add the following code to implement this: ``` Exports = new ExportMenuSettings() { ExportTypes = Exports.PS | Exports.Hpgl | Exports.Json | Exports.Pdf } ``` As a result, we will get the export settings we need. At the moment, the Index.razor and Index.razor.cs files look like this: Pages/Index.razor ``` @page "/" @page "/{ReportName}" @inject NavigationManager NavManager     @code { [Parameter] public string ReportName { get; set; }   protected override void OnParametersSet() { base.OnParametersSet();   Load(); } } ``` Pages/Index.razor/Index.razor.cs ``` using System; using System.Drawing; using System.IO; using FastReport; using FastReport.Web; using System.Data;   namespace Blazor.UserDebugApp.Pages { public partial class Index { private readonly string directory;   private const string DEFAULT_REPORT = "Simple List.frx";   public WebReport UserWebReport { get; set; }   Report Report { get; set; } DataSet DataSet { get; } ToolbarSettings Toolbar { get; }   public Index() { directory = Path.Combine( Directory.GetCurrentDirectory(), Path.Combine("..", "Demos", "Reports"));   DataSet = new DataSet(); DataSet.ReadXml(Path.Combine(directory, "nwind.xml"));   Toolbar = new ToolbarSettings { FontSettings = new Font("Verdana,Arial sans-serif", 15), Color = Color.Red, DropDownMenuColor = Color.Red, DropDownMenuTextColor = Color.White, IconColor = IconColors.White, Position = Positions.Bottom, ContentPosition = ContentPositions.Center, Exports = new ExportMenuSettings() { ExportTypes=Exports.PS|Exports.Hpgl|Exports.Json|Exports.Pdf } }; }   private void Load() { Report = Report.FromFile( Path.Combine( directory, string.IsNullOrEmpty(ReportName) ? DEFAULT_REPORT : ReportName));   Report.RegisterData(DataSet, "NorthWind");   UserWebReport = new WebReport(); UserWebReport.Report = Report; UserWebReport.Toolbar = Toolbar; } } } ``` We have covered how to customize the objects appearance and set up the list of export options in Blazor. Now you can use the discussed options in your own applications.  Tags: .NET, Visual Studio, FastReport, Core, WebReport, C#, Customization, Toolbar, Blazor ### Top 100 Bestselling Publisher Award 2012-2013 URL: https://www.fast-report.com/news/publisher-award-2013 Summary: Fast Reports - Top 100 Bestselling Publisher Award 2012-2013 Fast Reports - Top 100 Bestselling Publisher Award 2012-2013 Good news! We ranked in 63rd place in ComponentSource Top 100 publisher list, up from 78th place last year.  ### TOP100 companies on the ComponentSource Awards 2011 URL: https://www.fast-report.com/news/component-source-awards-2011 Summary: Fast Reports in TOP100 companies on the ComponentSource Awards 2010-2011 Fast Reports in TOP100 companies on the ComponentSource Awards 2010-2011 This is great news for us and for all our customers. Now the FastReport becomes better known throughout the world. Thank you our dear customers - at affordable price, we compete with more expensive products. So you agree that the main thing - the quality of the product. We will continue to delight you with quality products for developing and implementing Business Intelligence. ### Transition to a new product forming system URL: https://www.fast-report.com/news/fastreport-packs Summary: We are changing our approach to product line formation: the new system will allow to select only the components and platforms needed in development We are changing our approach to product line formation: the new system will allow to select only the components and platforms needed in development Starting  June 1 , Fast Reports will switch to a new product forming system. Previously, the product line was formed on the principle of "Product + platform", and compatibility with platforms was evolutionarily added to the entire tool. Now a software product will represent a more specific set of components, providing a wider range of choices for the specific needs of developers. We have divided products into a set of components and put them together in such a way that you no longer have to pay for unnecessary or unused functionality. This makes our software solutions more flexible. Now you can purchase not the entire report generator, for example FastReport .NET, but choose the set of its components that you need. We kept the possibility to choose the license by the number of developers, and also left the option to purchase a separate version with source code or web components. Ultimate edition will also be available, which contains maximum components and additional tools for working with reports. The changes will take effect on June 1, 2024. You can read about the package components and prices here: Delphi direction .NET direction ### Try Beta-version of FastReport VCL 5 URL: https://www.fast-report.com/news/beta-fastreport-vcl Summary: Try Beta-version of FastReport VCL 5 Try Beta-version of FastReport VCL 5 Trial version and install packages of FastReport VCL 5 for Delphi 7'XE5 and C++ Builder 2005-XE5 published. You can download and try it. If you are our customer of FastReport VCL 4 you can get discounted upgrade to FastReport VCL 5 beta (and than free upgrade to release) from your customer panel. ### Turn database data into a document in Delphi / Lazarus / C++ Builder URL: https://www.fast-report.com/blogs/turning-database-into-documents Summary: How to use the data more efficiently by turning it into an understandable and structurized document. How to use the data more efficiently by turning it into an understandable and structurized document. How to use the data more efficiently by turning it into an understandable and structurized document. How to make a mush of data into an informative report? Oracle DB, MySQL, Microsoft SQL Server, PostgreSQL, FireBird are probably the most popular, but by no means all, of the many DBMSs in which data can be created, populated, modified and managed. Often they are filled with this very data for quite a long time (e.g. in timekeeping systems, goods-orders, and the question "how to get information out of them?" (readable, encompassable by sight and human mind, for further analysis) is put off for later. Let's consider what to do "then" - when we have a "full database" and we (or the company's management) have wondered "what's actually happening? Let's make effective use of the data we collect in the process, derive information from that data and make decisions based on that information!". Basically, this is the definition of Business Intelligence (BI) in plain language. There are many possibilities to create them (reports), but here we will look at FastReport VCL. There's a designer for generating templates, a preview and many other features to perform different levels of tasks - we've looked at them in other articles, but we still haven't looked at all of them. FastReport can work with several data sources (databases) at the same time, or retrieve them from so-called user sources (not databases) - arrays or regular files. How to get information from DB in Delphi? In order to connect the data source, a connector (TfrxDBDataSet) must be applied from the component palette. This is the link between the data and FastReport. Now I will tell you briefly about the role of the components: TfrxDBDataSet is an element used to work with data source, it is also compatible with TDataSet, but TfrxIBODataSet is used for IB Objects, also TfrxUserDataSet is used for other resources - arrays, files, etc. First of all, using the DataSet property, connect to the query or table itself, well, or DataSource (it connects to the TDataSource component). For the data to already be in the report, you will need to specify which of them will go into our report! This is also easy to do. Select in FastReport VCL designer in menu Report -> Data. Select necessary elements and click “OK”!  Connect this data source to the band. Select DataSet (table) in its properties. Now drag and drop table/request fields to the appropriate bands. After single dragging have peculiarity of automatic linking on band - fields of base. If you need to view the generated report, you can use the preview! Don't forget that you can add almost anything, be it QR codes, maps  and other add-ons, which are enough in FastReport VCL. Preview: In the top left corner select “File” . A list of settings appears immediately. In it, select "Preview". That's it! After this action, you will see what the finished report will look like. If you are satisfied, you can save to different formats and export to cloud storage or PC memory, as well as print. Select "Save" and the desired format. The selected one will be sent to the specified location for saving/export! The following steps are required to generate a report from the code: - clear the report. - add data source. - add “Data” page - add report page. - add bands on the page. - set band properties and connect them to the data. - add objects on every band. - set object properties and connect them to the data. Save the template and press “Preview”!  The report is ready! We can also save it in XML, PDF, even CSV or DBF for further analysis! I understand that such an abundance of screenshots can make one get depressed. But in writing this article making all these screenshots was the longest and most time consuming task. Preparing the report itself took about 5 minutes. And if it is quicker and without screenshots? Create a report from our database from Delphi / Lazarus - code! Consider creating a simple "list" type report. Assume we have the components frxReport1: TfrxReport and frxDBDataSet1: TfrxDBDataSet (the latter is connected to data from DBDEMOS, table Customer.db). Our report will contain one page with report title and master data banks. The report title band will have an object with the text "Hello FastReport!" and the master data will have an object with a reference to the field "CustNo". Turn database data into a document in Delphi / Lazarus / C++ Builder ``` var DataPage: TfrxDataPage; Page: TfrxReportPage; Band: TfrxBand; DataBand: TfrxMasterData; Memo: TfrxMemoView;   { Clear the report } frxReport1.Clear;   { add data source to the available list for the report } frxReport1.DataSets.Add(frxDBDataSet1);   { add “data” page } DataPage := TfrxDataPage.Create(frxReport1);   { add page } Page := TfrxReportPage.Create(frxReport1); { create unique name } Page.CreateUniqueName; { set page properties by default } Page.SetDefaults; { change page orientation } Page.Orientation := poLandscape;   { add report title } Band := TfrxReportTitle.Create(Page); Band.CreateUniqueName; { it’e enough for a band to set coordinate Top and hight } { both coordinates are in pixels } Band.Top := 0; Band.Height := 20;   { add object on report title } Memo := TfrxMemoView.Create(Band); Memo.CreateUniqueName; Memo.Text := 'Hello FastReport!'; Memo.Height := 20; { this object will be aligned with the band width } Memo.Align := baWidth;   { add master data } DataBand := TfrxMasterData.Create(Page); DataBand.CreateUniqueName; DataBand.DataSet := frxDBDataSet1; { coordinate Top shouldn’t cross the previous band! } DataBand.Top := 100; DataBand.Height := 20;   { add object on master data } Memo := TfrxMemoView.Create(DataBand); Memo.CreateUniqueName; { connect to data } Memo.DataSet := frxDBDataSet1; Memo.DataField := 'CustNo'; Memo.SetBounds(0, 0, 100, 20); { align text on the right side of the object } Memo.HAlign := haRight;   { show the report } frxReport1.ShowReport; ```  So - we have learned how to turn invisible but collected data into reports - documents. You can now publish them or pass them on to analysts! Tags: VCL, Lazarus, FastReport, Data Source, SQL, Firebird, Delphi ### Types of solutions for generating reports and documents URL: https://www.fast-report.com/ Summary: Fast Reports - create libraries and tools for generating reports and documents. Use the FastReport report generator to create high-quality and fast reports. Create all the documentation you need easily and efficiently with our tools. Types of solutions for generating reports and documents FastReport .NET Sets of components that simplify and automate the process of creating reports and documents in C# for diverse technologies. Ultimate .NET WinForms WPF WEB Mono Avalonia FastScript .NET FastReport VCL Sets of VCL, FMX, and Lazarus components with full sources codes for creating reports and documents in Delphi and Pascal. Ultimate VCL Optimum VCL Reporting VCL Reporting FMX Reporting Lazarus FastQueryBuilder FastScript FastGrid FastEditors WEB reporting Components for cross-platform projects to develop, build, display, print, and export reports directly in the browser. Online Designer Solutions for end-users Independent software solutions for designing, building, converting, and viewing ready-made reports on your computer. FastReport Desktop FastReport Viewer FastConverter OLAP and Business Graphics Data presentation and analytical processing tools for obtaining pivot tables with subsequent visualization based on Business Graphics. Business Graphics .NET FastCube .NET Analysis VCL Service solutions Ready-made services and client-server systems for fast data visualization and automatic execution of information processing tasks. FastReport Cloud FastReport Publisher FastReport Corporate Server News August 10, 2026 Fast Reports Anniversary Celebration — Enjoy 20% Off Every year brings new products, thousands of successful projects, and millions of reports created with Fast Reports solutions. But our greatest achievement is the community of customers and... Read May 25, 2026 Service Solutions Update to Version 2026.2 In the 2026.2 release of our service solutions lineup (FastReport Cloud, FastReport Publisher, FastReport Corporate Server), we focused on improving reliability and usability: task scheduling has... Read May 19, 2026 Release of Version 2026.2 for FastReport Online Designer The new FastReport Online Designer version (2026.2) brings significantly improved UI and a reworked theming system, a new report workspace, and a substantial amount of new functionality. Among the... Read All news Reviews Ender Arslanturk /Trustpilot 5.0 Report from a single center 👏👏👏 In our project, we used different and various report design brands. However, these designs were scattered throughout the project. Fortunately, we met a great tool like Fast Report and this became a... Read Bruno de Chassey /Trustpilot 5.0 The reporting tool I needed ! After using QuickReport and Rave Reports in Delphi, I finally discovered Fast Reports (it was the version 5 at this time), and I decided not to change anymore. Once you understand the band... Read Stephan Kallnik /Trustpilot 5.0 Good and powerful Report-Generator After first steps, a very good and powerful Report generator, and fast in design. Very intuitive WYSIWYG Report-Designer, Easy preview and pdf-generation. Used in all reports throughout our... Read All reviews Articles August 03, 2026 How to Export a Report from FastReport .NET to PostScript FastReport .NET supports exporting reports to many popular formats, such as PDF, Excel, Word, and others. However, professional printing, plotters, and specialized printing equipment often... Read July 10, 2026 How to configure Content Security Policy for FastReport .NET WEB reports Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions... Read June 22, 2026 How to Configure a Report with Business Objects in Code and the FastReport .NET Designer FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a... Read All articles Popular questions What is a report generator? Report generators are libraries or stand-alone applications that connect a report template with a data source and generate ready-made documents based on current data. They can later be exported to various formats (PDF, DOCX, HTML, JPG, etc.) or sent for printing or storage. The report generator turns the data into information (document). Why do we need report generators and OLAP analytics tools? Any business system collects and stores data in some form. Unfortunately, this type is convenient for storage but not for presentation, obtaining important information, or making a decision by a person. Our tools, solutions and libraries allow us to make data informative. These can be documents or tables - structured as needed and convenient for users for their specific tasks. What does Fast Reports Inc. do? We create report generators and other tools for programmers and business application developers. We are trusted info@fast-report.com Sales sales@fast-report.com 800-985-8986 (English, US) +31 97 01025-8466 (English, EU) +49 30 56837-3928 (German, DE) +55 19 98147-8148 (Portuguese, BR) Office Alexandria, VA 22314 66 Canal Plaza, Ste 505 Products Buy Demo Documentation How to uninstall Licenses Products Buy Demo Documentation How to uninstall Licenses Support Support SLA Online support FAQ Tutorial Video Forum Articles News Support Support SLA Online support FAQ Tutorial Video Forum Articles News Company About Identity Resellers Contacts us Company About Identity Resellers Contacts us Privacy policy Cookies policy © 1998-2026 Fast Reports Inc. Trustpilot Link copied successfully ### Ultimate .NET URL: https://www.fast-report.com/products/ultimate-net Summary: A set of tools for creating reporting infrastructure for .NET business applications and cross-platform development. A set of tools for creating reporting infrastructure for .NET business applications and cross-platform development. A set of tools for creating reporting infrastructure for .NET business applications An ultimate package for creating reporting infrastructure with additional tools for report design and data analysis Ultimate .NET A set of tools for creating reporting infrastructure for .NET business applications and cross-platform development. Buy Try for free Documentation Practically any: invoices, financial reports, product catalogs with color profile support, restaurant menus, sales details, questionnaires with electronic forms, airline tickets, utility bills, and much more. If you have data that needs to be made visually understandable, FastReport is the perfect solution for you. Embeddability in projects Install the required package from the NuGet repository, or download the package from our website to your computer and add the necessary libraries to the project. No additional modules or special extensions are required. High performance Our components have gone through many stages of testing to truly work stably with large volumes of data. Your multi-page report will be processed on the fly. Complete control over the development This set of tools is provided with the source code. The most convenience for companies that want to adjust the code to their needs. Quick access to the report and data structure From the report tree and properties tree, you can edit the report structure, parameters, and filters, as well as data sources with global styles. Compatibility and integration Ultimate .NET allows creating the FastReport ecosystem on C#. Reports created in all products within the Ultimate package are completely compatible with each other. Smooth transition from other solutions Our report generator instantly converts your reports from List&Label, DevExpress, Microsoft Reporting Services (RDL, RDLC), Crystal Reports, StimulSoft, and Jasper Library into FastReport format. Cross-platform development Report in the browser .NET Core demo Online Designer demo Blazor WASM demo Blazor Server demo How to Export a Report from FastReport .NET to PostScript FastReport .NET supports exporting reports to many popular formats, such as PDF, Excel, Word, and others. However, professional printing, plotters, and specialized printing equipment often require the PostScript (.ps) format. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. In this article, we will look at exporting a FastReport .NET report to the PostScript format, using a practical example to examine parameter configuration and programmatic implementation. How to configure Content Security Policy for FastReport .NET WEB reports Content Security Policy (CSP) is a key tool for protecting web applications from XSS attacks, but its integration with reporting systems is often fraught with difficulties. In the latest versions of FastReport .NET WEB, the architecture of the client-side has been significantly reworked, which simplifies compliance with a strict CSP without losing report functionality. In this article, we will examine how to properly configure CSP for FastReport reports and take into account typical risks. Learn how to configure Content Security Policy for FastReport .NET WEB reports: an overview of CSP directives and values, changes in the FastReport architecture, typical bypass scenarios, and ways to protect against them. How to Configure a Report with Business Objects in Code and the FastReport .NET Designer FastReport .NET provides multiple ways to access and work with data, including databases, DataSet, JSON, and Business Objects (regular C# classes in your application). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects (Category → Products). This article demonstrates a practical example of creating and using an .frx report template that connects to hierarchical Business Objects in FastReport .NET. Any other questions? Contact the manager ### Ultimate VCL URL: https://www.fast-report.com/products/ultimate-vcl Summary: A set of tools for creating reporting infrastructure for Delphi business applications and cross-platform development A set of tools for creating reporting infrastructure for Delphi business applications and cross-platform development A set of tools for creating reports in Delphi and for cross-platform development A comprehensive package for creating a report ecosystem with additional tools for data analysis "on the fly". Ultimate VCL A set of tools for creating reporting infrastructure for Delphi business applications and cross-platform development Buy Try for free Documentation Transports Save prepared reports to the cloud storages: Google Drive, Next Cloud, Box, Dropbox in a couple of mouse clicks for convenient delivery to your clients Quick access to the report and data structure From the report tree and properties tree, you can edit the report structure, parameters, and filters, as well as data sources with global styles. Client-server components Build reports directly on the WEB using standard FastReport VCL components without the need to connect the client directly to the database server. Flexible and open architecture If FastReport's functionality is not enough for you, you can improve it by creating and connecting your objects (export filters, databases) to your reports. Source code This set of components includes FastReport source codes. Maximum convenience for companies wishing to adapt the code to their needs. Helpful additions Ultimate includes systems for multidimensional analysis: FastCube VCL and FMX, as well as FastConverter .FP3 plugin for exporting reports in all possible formats. Client-Server components Cross-platform developing Full Review of FastGrid Library's Capabilities FastReport VCL Ultimate users have probably already noticed that the installer now includes two new options: FastEditors VCL and FastGrid VCL. A new demo has also been added to the DemoCenter: FastGrid VCL Demo. An overview of the FastGrid library for VCL and Lazarus: data visualization, editing, and structuring. Sorting, filtering, grouping, convenient data editors — all in one article! New Report Validation System in FastReport VCL We have frequently received requests from technical support for functionality to automatically validate reports, and we are pleased to announce its inclusion in the 2026.2.0 release. The "File" menu in the report designer now features "Validate" and "Validation Rule Settings" options. This allows users not only to check reports but also to manage the set of rules, including the creation of custom ones In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. In this article, we'll explain how report validation works, how to set it up, how to write your own rules, and share some interesting new features. Using Watermarks in FastReport VCL The latest versions of FastReport VCL now feature watermarking functionality. Watermarks are labels embedded in electronic documents, images, videos, audio, or other digital content. Their purpose is to confirm authorship, protect against copying, and track file distribution. In this article, we'll take a detailed look at creating and using watermarks in FastReport VCL reports. An example of watermark use is available in the Demo included with FastReport VCL. The article provides a detailed overview of the watermark functionality in FastReport VCL — covering both the visual interface and programmatic methods using Delphi code and report scripts. Any other questions? Contact the manager ### Update for FastReport .NET 2026.1 version URL: https://www.fast-report.com/news/release-fastreport-net-2026.1 Summary: A new version of FastReport .NET 2026.1 has been released with several updates: a unified demo center for .NET products, a report designer with built-in plugins for databases. A new version of FastReport .NET 2026.1 has been released with several updates: a unified demo center for .NET products, a report designer with built-in plugins for databases. A new version of FastReport .NET 2026.1 has been released with several significant updates: a unified demo center for .NET products with demonstration applications, a report designer with built-in plugins for databases. A new Ribbon UI interface and RibbonDesignerControl have been added, and exports have been improved (the ability to export formulas to Excel and configure image quality when exporting to Word). Changes have also been made to our WebReport. The toolbar design has been improved, cache clearing has been added when the Circuit is completed in Blazor Server, and additional settings have been added for WebReport created through the Online Designer . WEB demo applications for ASP.NET, ASP.NET Core, Blazor Server, and Blazor WASM have been updated, and much more. New Features Unified Demo Center for the .NET Lineup We have a rich lineup of .NET products. Each one comes with at least one demo application. In some cases, there can be up to a dozen. We’ve developed a demo center—an application that brings together all our demonstration examples. Now, after installing it, you can explore and try out all of our products. In the demo center, you can select the application you need. It will launch either as a program or open in your browser for an online demonstration. Report Designer Build with Connection Plugins The report designer allows you to use connections to various databases as data sources for reports. Some data sources are available by default. However, many of them are implemented as plugins for technical reasons. The advantage of plugins is that you can install only the ones you need. But there is also a downside: they need to be downloaded, compiled, and added to the designer. Difficulties can arise at this stage. To avoid installing plugins yourself, we’ve included a build of the designer with all available plugins in our application. Learn more about the designer with plugins in the article.  Read the article New Ribbon UI and RibbonDesignerControl A modern interface for report designers based on Ribbon UI is a significant upgrade, improving the user experience. It features high interactivity and an intuitive structure, optimizing report creation and editing. Previously, Ribbon support already existed, but the old interface had its drawbacks. It can still be enabled in the designer settings, as before.  A restart of the designer is required for the changes to take effect. In addition, a new control has been added —  RibbonDesignerControl . It allows you to use Ribbon UI in your own applications. Previously, this was not possible, as only  StandardDesignerControl  was available. Excel Report Export with Formula Support Now, when saving reports to Excel, it’s possible to enable the “Export Formulas” option. This means that text elements, table cells, and matrices with valid Excel formulas will be saved as formulas. When you open such a file in Excel, all the formulas will function correctly. For example, an object containing the text: =A1+B1 Will be converted to a cell with the corresponding formula. If the formula is incorrect from Excel’s perspective, the object will be saved as plain text. Find more detailed information about the limitations and features of exporting with formulas in the article.  Read the article Image Quality Settings for Word Export You can now configure the image quality when exporting a report to MS Word. A new “Images” tab has appeared in the export settings. There, you can choose to save with the original resolution, for printing, enable compression, or select one of four qualities: standard, low, medium, or high. For more detailed information, read the article. Read the article Improved Paragraph-Based Export in OpenOffice Writer The paragraph-based export mode in OpenOffice Writer has undergone significant changes. The process is now faster, the document complies with modern standards, and takes up less space. Numerous errors have been fixed, including issues with styles. The logic for generating pages has also been updated. Changes in WebReport New Toolbar Design in .NET Framework WebReport A new toolbar design has appeared in .NET Framework WebReport, which now matches the other versions of WebReport. To use the updated interface, use the following property: ``` WebReport.UseNewInterface = true; ``` Before: After: WebReport Cleanup on Circuit Completion in Blazor Server In Blazor Server, the ability to clear WebReport from the cache when a user session (Circuit) ends has been added. A Circuit is a user session based on SignalR (WebSocket or long polling). Now, when a Circuit closes (for example, when a tab is closed or a report is switched), the associated WebReport is automatically removed from the cache, which reduces memory consumption. The option is enabled as follows: ``` services.AddFastReport(options => { options.CacheOptions.UseCircuitScope = true; }); ``` The new UseCircuitScope option works as an add-on to the existing cache settings and does not change their logic. UseCircuitScope can only speed up the removal of the report from the cache, but never extends its lifetime beyond the specified rules. Configuring a New WebReport Created via Online Designer In the Online Designer, it is now possible to create a new WebReport directly from the interface. However, by default, the report will be empty: without connected data and without configured restrictions. To solve this problem, the following options have been added: ``` services.AddFastReport(options => { options.Designer.OnWebReportCreated = (webReport, serviceProvider) => { // WebReport configuration example webReport.EmbedPictures = true; webReport.Report.RegisterData(...); }; // or an asynchronous version of the method options.Designer.OnWebReportCreatedAsync = (webReport, serviceProvider, cancellationToken) => { webReport.EmbedPictures = true; webReport.Report.RegisterData(...); return Task.CompletedTask; }; }); ``` Using one of these options, you can further configure the WebReport (or the Report itself) using any available parameters. The changes will be immediately applied to the report in the Online Designer. Updated WEB Demos We have updated the WEB demo applications for ASP.NET, ASP.NET Core, Blazor Server, and Blazor WASM. The updates include a unified design and new reports. Ability to Disable Borders on WebReport Pages It is now possible to disable the shadows that separate pages in WebReport. To do this, use the following code: ``` WebReport.PageBorderVisible = false; ``` Full list of changes [Engine] + added the ability to choose encoding when connecting to an XML database; + added support for asynchronous requests in database connectors; + fixed an error with calculating the sizes of Polygon and Polyline objects; * supplemented the description of the IsNull function; * changed behavior in the methods for setting the values of the RFIDLabel.UseAdjustForEPC and RFIDLabel.RewriteEPCbank properties; - fixed an assembly loading error when compiling a report script; - fixed an error with the clipping area in SVG; - fixed a text display error in SVG if absolute character positioning is specified; - fixed an error with resetting the parameter value when setting it using the SetParameterValue() method; - fixed an error where table rows and columns with the Printable property disabled were printed; - fixed an XXE vulnerability in the SVG object; [Designer] + added support for horizontal scrolling gesture in designer and report preview windows; + added Ctrl key support for selecting multiple objects in the designer (previously the Shift key was used); + added a build of the designer with database connection plugins; + added display of the number of bytes in the RFID editor; + added a setting to display extended information about the position of an object in the designer; + added an alternative grid (Alt + mouse) in the designer; + added scaling of objects relative to their own center (Shift + corner markers); + added RibbonDesignerControl and new Ribbon UI; + added transfer of fields by dragging and double-clicking in the standard report wizard; + added the PaperSizeEqual(...) method for comparing the sizes of the paper used; + added support for change notifications in the Collection Editor; * changed the OpenLink method in AboutForm; * changed the sequence of calling the CheckDirectories method; - fixed the visibility error of the StartReport and FinishReport events; - fixed an error with an empty database name when connecting to MongoDB; - fixed an error with line spacing when exporting to Word; - fixed an error with resizing small objects; - fixed an error with displaying the position and size of an object in the designer; - fixed an error with returning the result of an empty parameter expression; - fixed an error with missing icons in the code editor; - fixed an error in the code editor when using snippets; - fixed an error with the line offset when resizing non-diagonal lines in the designer; - fixed errors in the SVG object editor; - fixed an error in the MDI mode of the report designer; - fixed an error where Scale, Pointer, and Border were drawn twice for SimpleGauge; - fixed the incorrect display of some windows in High DPI mode (target net60-windows); - fixed drag and drop in Avalonia and WPF designers; [Preview] - fixed errors when selecting the paper type; - fixed the behavior of the “Properties” button in the print window; - fixed an error in the print dialog; [Exports] + added XPSExport.PrintOptimized property; + added exporting the digital signature object name when exporting to PDF; + added changing the text color and filling the text box in ZPL; + added the ability to validate Excel formulas for MS Excel export; + increased the export speed of a table with an opaque background; * corrected the brightness of the watermark when exporting to MS Word; - fixed the export of semi-transparent images to PDF; - fixed an error with incorrect closing of the “div” tag during tabular export to HTML; - fixed the export of different top and bottom headers on separate pages in all export options to Word (tabular, layered, paragraphs); - fixed an error with the Cambria font in PDF export; - fixed errors causing slow export of interactive forms to PDF; - fixed an error with missing characters when exporting to PDF; - fixed an issue with missing Padding when exporting to Word using TextRenderType = HtmlParagraph; - fixed the export of transparent fill of shapes in Word; - fixed incorrect navigation to a bookmark in a Word document after export; - fixed text positioning when exporting to HTML with the HrAlgin.botom property enabled; - fixed an error when exporting to PDF with some SVG files; - fixed the export of LineObject to HTML; - fixed an error with the space width when exporting to PDF; - fixed the appearance of a border around the image in a table after exporting to Word; - fixed incorrect indents when using the top/bottom header option in Word export; - fixed an error when opening a file after exporting to Word using headers; - fixed an error with double borders of an object in layered HTML export; - fixed the export of RichObject to ODT format in paragraph mode; - fixed the formation of text with the justification property when exporting to Word; - fixed text styles and pagination during ODT export in paragraph mode; - fixed an error when exporting to Word in paragraphs with an incorrect left indent of the object; - fixed a problem with opening some files when exporting to Excel; - fixed an error with field widths when exporting to Word; - fixed an error importing DOCX documents; [Common] + added a field of properties of the start/end character in Codabar; * updated MySqlConnector dependency to version 2.4.0; - fixed database binding for a chart with a JSON data source; - fixed an error when changing the printer, the paper format was reset; - fixed an error displaying extra coordinates when exporting to ZPL; [Demos] - fixed the “Deutsche Leitcode” barcode type in demo reports; [Extras] + added support for the Apache Ignite plugin for other platforms; - fixed an error when importing docx files. ### Update of .NET-based products to ver. 2023.2 URL: https://www.fast-report.com/news/fastreport-net-2023.2 Summary: Support for Blazor Web Assembly, new icons for the Ribbon interface, changes to the report validator and WebReport in update 2023.2. Support for Blazor Web Assembly, new icons for the Ribbon interface, changes to the report validator and WebReport in update 2023.2. Meet new opportunities for your projects! Added support for Blazor Web Assembly, new icons for the Ribbon interface, the ability to open a page of another report inside the current one, changes to the report validator and WebReport, and much more. Changes are available for the following products: - FastReport .NET, - FastReport Mono, - FastReport Desktop, - FastReport for DBA, - FastCube .NET. New opportunities Blazor WebAssembly support Added FastReport.Blazor.Wasm package with Blazor WebAssembly support for owners of FastReport .NET Enterprise and higher editions. Now you can use Razor components to display a report in your WebAssembly application. Attention! Blazor WebAssembly support is currently in beta. ``` ``` Read more in this article. Ability to open another report page The designer now allows you to open and add pages and dialog forms of another report to the developing report. To do this, go to the "File" menu and select "Open Page...". Next, the standard file selection dialog box will open where you can select a report. After that a window will appear with a list of pages and a preview of the selected page. Here you can select one or more pages to be added to the current report. The names of pages and all objects contained in them, will be changed to unique, if the report already has them. This is necessary to avoid errors, as identical names are not allowed. Read more in this article. New icons for the Ribbon interface New Visual Studio-style icons have been added to the Ribbon interface in the designer. You can select them in the user interface options. Will need to restart the designer for the changes to take effect.  Filter in the properties window A new button has been added to the properties window that allows you to enable the display of object-specific properties. For example, for a text object, this mode displays the Text, Font properties. Common object properties such as Top, Left, Height and Width are not displayed. Report validator changes The report validator now doesn't run in the background, but runs with a separate "Validate Report" button in the "Report" menu. In addition, the validator window has been removed, and its messages are displayed in the window "Messages". Ability to hide connection string Added a new property Config.ConnectionStringVisible, which gives the ability to hide the connection string in the designer. Can be used to differentiate permissions between the application developer and the report user. When set to false, the user will not be able to see and edit connection strings in the designer. WebReport changes Added support for MemoryCache. By default, at the moment, the current WebReportCache is used. You can enable MemoryCache when registering FastReport services: ``` services.AddFastReport(options => { options.CacheOptions.UseLegacyWebReportCache = false; }); ``` Unlike the built-in cache in WebReport, MemoryCache unloads WebReport instances more aggressively after a certain time CacheOptions.CacheDuration of WebReport instance inactivity, which can help in cases where the old cache for some reason does not clear memory. Added the ability to fix the toolbar on the screen. Now you can configure the toolbar to always stay in place, even when scrolling through the page. This is convenient when working with large reports - the toolbar will always be visible. To pin the toolbar on the screen, you need to set the following property: ``` webReport.Toolbar.Sticky = true; ``` Now the toolbar will always be in view. Also, the ability to customize the export settings window has been added. Now it can be made fixed on the screen and displayed in the foreground. To do this, you need to set the following property: ``` webReport.Toolbar.Exports.PinnedSettingsPosition = true; ``` Validation for entering a range of pages has been added to the export settings window. Now, in case of incorrect input, the field will look like this. FastReport.Core.Skia improvements Improved the performance of the FastReport.Core.Skia package. Export errors have been fixed, examples are listed below. Fixed the rendering of objects with CanShrink = true: Fixed the background rendering of objects with transparent backgrounds: Added a standard font that depends on the operating system. Now, if the font from the report is not detected in the system, the export will not produce an error, but will render the report with the standard font. For other fixes, please refer to the full list of changes. Updated design of FastReport Cloud file manager Updated the design of the file manager window for more convenient and intuitive use of the service. Changes have been made to the layout of interface elements and color scheme, which will improve the overall visual perception of users. Full list of changes [Engine] + added property Config.ConnectionStringVisible, which indicates whether the connection strings of data sources will be displayed in the designer; - fixed a bug with extraction of procedures in connection that cannot contain procedures; - fixed a bug where the first column of the page was always displayed in the leftmost position; - fixed a bug when GaugeObject.Value property was set equal GaugeObject.Minimum, if new value was more than GaugeObject.Maximum. Now it will be set equal GaugeObject.Maximum; [Designer] + added the ability to open report from FastReport Cloud using recent files list; + added a context menu to the page panel elements; + a context menu for creating new pages and dialog forms has been added for the panel with report pages; + added new Visual Studio style icons for the Ribbon interface; + added "Sync" button in the "Report Tree" window; + added Filter button in the Properties window; + added HiDPI icons for Ribbon-interface; + added support of DBNull and Guid types for parameters; * now the name of the attached file when exporting to mail, can be set from the code when creating the export form; * report validator now runs from "Report|Validate report" menu. "Messages" window is used to display validation messages; * changed interface of QR code editor; - fixed a bug on right clicking Data Sources menu item; - fixed a bug when checkbox "Select all" was not visible in Data wizard; - fixed a bug causing System.NullReferenceException when deleting dialog form; - fixed the absence of the Api key when re-opening the Account->Server window if it was entered in the standard server item; - fixed incorrect web address when trying to preview webview for custom server; - fixed the problem of collapsing panels and incorrect change of the language of tabs and bars when changing the localization in the Ribbon interface; - fixed issue with adding tables that were not selected in the connection wizard; - fixed a bug causing System.NullReferenceException when creating connection to stored procedure; - fixed exception when manually entering an invalid parameter type; - fixed a bug where it was impossible to set an object to a transparent color; - fixed reopening of the query wizard; [Preview] + added a message about sending a report to the mail in the status bar; [Exports] + added word wrapping in cells when exporting to Excel 2007; - fixed a bug that made MSChart text blurred after HTML export; - fixed incorrect margins when exporting the report to HTML; - fixed an error that made the transparent background become white with Skia; - fixed a bug with an extra empty page when exporting if there are bands with the Exportable property equal false; - fixed a bug when padding top was not taken into account when exporting to layered HTML; - fixed an error that made the text go beyond the table when the page was zoomed out in HTML export; [WebReport] + added Blazor WebAssembly support; + added support for DI in WebReport.Core/Blazor. To use, call services.AddFastReport(); + added support for Microsoft.Extensions.Caching.Memory.MemoryCache instead of the standard WebReportLegacyCache. To use, when registering a DI container, use services.AddFastReport(options => options.CacheOptions.UseLegacyWebReportCache = false); + implemented the ItemCheck event in CheckedListBox; + added an option to enable the toolbar to display regardless of the screen position in WebReport using WebReport.Toolbar.Sticky property; + added asynchronous version of method WebReport.Designer.SaveMethod - WebReport.Designer.SaveMethodAsync; + added validation of page range in WebReport export settings window; + added WebReport.Toolbar.Exports.PinnedSettingsPosition property. If enabled, the container of export settings will be fixed on the screen and displayed in the foreground; - fixed a bug when selection mode in ListBox was multiple, but it was able to select only one item; - fixed a bug of non-refreshing dialog when CheckedBox was the initiator of the event. In this case, add at least one dependent object of the CheckedBox to the DetailControl property; - fixed a bug when in .NET Framework MVC application the report with dialog form on clicking "OK" would not hide dialog form and not show loading of the report; - fixed an error that caused extra pages to appear when printing; - fixed incorrect work of report 'Interactive Report' on WebReport.Core; - fixed rare NullReferenceException in WebReportLegacyCache; [Online Designer] - fixed a bug where First Page Source, Other Page Source, Last Page Source and Duplex properties was not saved when changing ReportPage; - fixed an error that made the report preview not refresh before pressing "Refresh" button; [.NET Core] + the script compiler will now display errors depending on the selected locale set with FastReport.Utils.Res.LoadLocale() or FastReport.Utils.Config.CompilerSettings.CultureInfo; - fixed an issue where text with CanShrink = True was incorrectly rendered after export with Skia; - fixed a bug with incorrect indent width between characters with TextRenderType = HtmlTags in Skia; - fixed a bug that caused the watermark with transparency to have a gray background when exporting with Skia; - fixed an error that caused incorrect calculation of table row height; [CoreWin] - fixed error when trying to add new data connection; [Mono] + added zoom control in preview and designer windows; - fixed problem of scaling PreviewControl; [Demos] + added demo-app ASP.NET Core (Razor pages) under .NET 6.0; * updated demo applications for FastReport Core; [Extras] - fixed a situation in which the host during logout could not match the one during authorization; - fixed a bug when updating an expired session in the Account window, a browser opens and requests re-authorization. ### Update of Cloud Services to 2025.2 Version URL: https://www.fast-report.com/news/release-service-2025.2 Summary: In version 2025.2 the ability to use custom fonts has been added, functionality for Tasks, data sources, and preview service has been improved, the installation wizard has been redesigned. In version 2025.2 the ability to use custom fonts has been added, functionality for Tasks, data sources, and preview service has been improved, the installation wizard has been redesigned. In version 2025.2 of FastReport Cloud and Corporate Server , the ability to use custom fonts has been added, functionality for Tasks, data sources, and preview service has been improved, the installation wizard has been redesigned, and a new edition of Corporate Server — FastReport Publisher — has been introduced. Font Service Users can now upload their own fonts in *.ttf and *.otf formats and use them for template design in the Online Designer , in the preview window, and in exports to various formats. Fonts are stored in the user's workspace. New fonts can be added or existing ones can be configured on the "Workspace Information" page or via the API (method descriptions are available at the link https://fastreport.cloud/api/swagger/ in the Fonts section). Once a font is added, it can be used within the Online Designer. In the preview window, it will appear as follows. When exporting to various formats, it will also work correctly. However, please keep in mind some details. For the font to be displayed in the generated document, you need to have that font installed on the device from which the document is being viewed or embed the font in the document itself. This functionality is supported, for example, in PDF export. Task Filtering by Task Type Added Two new parameters have been added to the method for retrieving the list of Tasks /api/tasks/v1/Tasks : taskType useProjection The taskType parameter allows the user to specify the type of Tasks to be returned. The useProjection (true/false) parameter indicates whether all information about the task will be returned or only the minimum necessary information. These parameters will help when you need to find all tasks of the specified types, for example, email tasks and FTP tasks. Ability to Search for Files Saved as a Result of Task Execution Added The models of export and prepared reports have been updated to include the fields taskId and taskMessageId . After the execution of transformers, the generated report is saved in the Reports or Exports folder, depending on the type of Task being performed.  Additionally, the taskId field of this document includes the identifier of the transformer Task (for example, the task of exporting from a template) that created the file. To find an export or report by taskId use the following methods: /api/rp/v1/Exports/File/Task/{taskId} /api/rp/v1/Reports/File/Task/{taskId} The taskMessageId field contains a unique identifier that is generated with each execution of a Task. Below are the methods used to search for documents created after the specified task execution. /api/rp/v1/Exports/File/TaskMessage/{taskMessageId} /api/rp/v1/Reports/File/TaskMessage/{taskMessageId} Additionally, running a "Task without saving" (/api/tasks/v1/Tasks/run) returns taskMessageId , which can be used to find the generated documents in Exports or Prepared Reports. Custom Query Names in Data Sources Now Unique With the release of 2025.2, when creating custom SQL queries, table names will be unique. Duplicate names entered will be automatically supplemented with characters to ensure uniqueness. This will help avoid issues when working with the Online Designer. Parameter Input in the Preview Window If you open the preview window for a template with parameters, you will see a sidebar where you can set the input for these parameters. After changing a parameter, the report will be restructured. The parameters are also saved in the URL. This means that parameters can be saved in a link and shared with a colleague. Alternatively, you can generate these parameters programmatically and display the current report. New Demo Application in Java A new demonstration application in Java has been added, which uses the REST API to work with FastReport Cloud or Corporate Server. Try out our application right now on GitHub . Saving Sort Orders in the User Panel The feature to save table sort selections on the user panel pages has been implemented. Now, when the page is reopened, the previously selected sort order will be applied, for example, by date or document size. Additional Changes for FastReport Corporate Server   Page with License Limitation Description in the Admin Panel An admin panel page has been added where you can view the current limitations of the Corporate Server. Improved Corporate Server Installation Wizard The Corporate Server installer has been significantly reworked. The design and application stability have been enhanced. FastReport Publisher A new lightweight edition of the Corporate Server — Publisher — has been introduced. It is designed for companies with a small number of users that do not require the reporting server to be run in a cluster. The Publisher is the most accessible solution for deploying a full-fledged reporting system. Additionally, the Publisher provides seamless functionality expansion whenever needed. You can find more details about the Publisher on the product page or in articles on the website. Full List of Changes [Backend] + Added task ID and task message ID to export and report;   + Added Google Fonts caching;   + Added report parameters to temporary files;   + Added a new system for fonts;   + Added task type filter for retrieval method;   + Added company name to configuration;   * Custom query names for data sources are now unique;   * More options for searching tasks added;   * Error messages in the report script are now localized;   * Demo and missing white-label headers are now different;   - Fixed subscription owner's permissions retrieval;   - Fixed file (or folder) moving to the same folder where it was located;   - Fixed issue with MongoDB connection;   - Incorrect Authorization header will now result in a 401 response instead of using an anonymous user;   [Common] + Added parameter input in static preview;   + Added change log to the product page;   + Added a link to Online Designer documentation in Corporate Server documentation;   * Documentation removed from Corporate Server loading script;   * Updated documentation for VM types in tasks;   - Fixed bug with disappearing transports on the tasks page;   [Demos] + Added new Java REST demo;   [Frontend] + Added sorting saving to local storage;   + Added links to the report store;   + Added error handling for data sources that do not support parameters;   + Added license limitation page to the admin panel;   * Tasks page changed, task controller fixed;   * You can no longer click "create task" if it is not in your subscription plan;   * SQL query step hidden when editing a data source that is incompatible with SQL;   - Added padding in the sidebar, added title to task launch buttons, changed access rights display to a column;   - Fixed context menu on document pages;   - Fixed double request when creating a folder;   - Fixed error regarding empty name parameter in notifications;   - Fixed loading indicator in static preview;   - Fixed issue with a popup window inside another popup when accepting an invitation in the Corporate Server;   [Installer] + Added Installer localization;   * New Corporate Server installer design;   [SDK] + Added TasksClient in CSharp SDK. ### Update of Cloud Services to Version 2025.1 URL: https://www.fast-report.com/news/fastreport-cloud-2025.1 Summary: In version 2025.1 has significantly improved work with data sources, tasks, and report templates. We also added API methods for retrieving user rights and new demo applications In version 2025.1 has significantly improved work with data sources, tasks, and report templates. We also added API methods for retrieving user rights and new demo applications For FastReport Cloud and FastReport Corporate Server , version 2025.1 has significantly improved work with data sources, tasks, and report templates. We also added API methods for retrieving user rights and new demo applications, and, of course, fixed numerous bugs. Changes for FastReport Cloud and Corporate Server Custom SQL Tables Added to Data Sources The ability to add custom tables as SQL queries to data sources has been added. To do this, create or edit a data source on the corresponding page, click “Next,” and enter the SQL query. If the query contains parameters starting with the “@” symbol, a data source parameter will be created, allowing you to configure its data type and default value. After adding your own table and saving the data source, it will become available for use in Online Designer. Stored Procedures Creation Included in the Data Source Structure Starting from the current version, stored procedures are available for use when creating data sources for layout templates. Data Source and Task Names Have Become Unique As with files, when creating data sources and tasks, they will be automatically renamed to avoid name duplication. Template Engine for File Names Added  In the name of the template or report file, you can use the variables ${Date} and ${Time} . Then, in the final exports, the file name will contain the date or time of export (UTC) instead of these variables. For example, when exporting sales_report_${Date}.frx to PDF, the final file will be named sales_report_2024-07-08.pdf. The order of the day, month, and year depends on the localization chosen during export or the default localization.   These variables can also be specified in the output file name when creating tasks.   Report Parameters Are Now Available for Retrieval and Editing Via API The following API methods have been added: ``` - GET /api/rp/v1/Templates/File/{id} - now this method returns a list of report parameters if they are set. ``` ``` - POST /api/rp/v1/Templates/File/{id}/parameters - with this method, you can set or edit report parameters. ``` Report parameters also remain available for editing in Online Designer and when downloading report templates.   Added API Methods For Retrieving the Current User’s Permissions on Files, Groups, Tasks, and Data Sources Previously, there was only one method for retrieving user permissions, which makes the following request:   ``` /api/manage/v1/Subscriptions/{subId}/mypermissions ``` With this update, we have added 10 more requests:   ``` /api/data/v1/DataSources/{id}/mypermissions/api/rp/v1/Exports/Folder/{folderId}/mypermissions/api/rp/v1/Exports/File/{id}/mypermissions/api/manage/v1/Groups/{id}/mypermissions/api/rp/v1/Reports/Folder/{folderId}/mypermissions/api/rp/v1/Reports/File/{id}/mypermissions/api/tasks/v1/Tasks/{id}/mypermissions/api/rp/v1/Templates/Folder/{folderId}/mypermissions/api/rp/v1/Templates/File/{id}/mypermissions ``` With them, you can find out what permissions the user has and only perform corresponding actions if these permissions are available. Added Current Product Version Display  Now, at the bottom of each page in the user panel, you can see the current product version.   Case Insensitivity in Sorting   Previously, when sorting documents by name, those whose names started with an uppercase letter were shown first. Now, the sorting works independently of letter case in file names. New Demo Applications Added New console and Android applications in Kotlin and Angular have been added to GitHub. In addition, you can deploy demo applications in Java, PHP, Cpp, Haskell, JavaScript, Go, and Python in your projects. Try the demo Additional Changes for FastReport Corporate Server   Added the Ability to Download Files and Folders from The Admin Panel  To download a template, report, export, or folder in the admin panel, simply click the corresponding button on the row displaying the item.   A Graph of Active Users and Workspaces Added to The Admin Panel With this, you can evaluate user activity for each month. To view the graph, go to the ‘Audit’ page and click the ‘Show Statistics‘ button at the bottom of the page.   Added Parameters for Scheduling Tasks in The Admin Panel  On the ‘Tasks’ page of the admin panel, a ‘Details’ button has appeared, which opens a page with a detailed description of the task. Full list of changes --- [Backend] + added a log for invalid license keys;   + added tests for upload size limits;   + added custom tables to data sources;   + added a template engine for file names;   + enabled the creation of stored procedures in the data source structure;   + added a new parameter to the license key;   + added a method for retrieving the current user’s rights on files;   + added retrieval of mypermissions for groups, tasks, and data sources;   * changed sorting for backend;   * changed data source names to be unique;   * changed the maximum number of users in the Corporate Server without a license key (5);   * added parsing of template parameters from metadata;   * changed case sensitivity in sorting;   * changed task names to be unique;   - fixed file uploads with identical names;   - fixed the path for the destination folder;   - fixed report parameters;   - fixed duplication of the jti claim in the JWT token;   - fixed task execution with files in the request body;   - fixed rights checking for moving to the trash;   - fixed an error returning an incorrect ID when creating nested tasks;   - fixed a bug where the UsersPerWorkspace parameter in the configuration was not considered if there were no user limits in the license key;   - fixed a bug where an anonymous user received errors in the controllers;   - fixed a bug where the administrator received a 403 error when retrieving the data structure;   - fixed delayed task execution in the scheduler;   - fixed the incorrect creation time for data sources;   - fixed an error when opening compressed templates in Online Designer. [Common] + added an article on Webhook;   + added the ability to download folders and files to the admin panel;   + added a graph of active users and subscriptions in the admin panel;   + added documentation for custom queries in data sources;   + added current product version display;   + added documentation for export parameters;   + added a Name in the docker-compose installer;   * improved the task scheduler;   * changed the name in the docker-compose installer; it is now always the same by default;   - fixed the documentation;   [Demos] + added console and Android demos in Kotlin;   + added Angular demo. [Frontend] + added task scheduling parameters to the admin panel;   + added notifications for failed folder exports;   + added an interface for creating custom SQL queries;   + added a check for the user’s subscription limit;   + added localization for export parameters in the admin panel;   + added error texts in notifications within the admin panel;   + added a ‘Refresh’ button in the context menu on document pages;   + added localization for audit notifications;   * shortened links in the admin panel to delete the scrollbar;   * changed input for users and subscriptions on the audit page;   * changed sorting for the admin panel;   * changed notifications for deleting API keys;   * removed mutations from injection in Online Designer;   * the ‘Plus’ button on the document page will no longer appear if the current user does not have permission to create files in the folder;   * improved localization in the admin panel;   * all online libraries became local;   * displayed date and time have been converted to local time zones;   * new .fpx icon;   * connection testing on the ‘Data Sources’ page has become optional;   - fixed export and download buttons;   - fixed history on export and report information pages;   - fixed an error when creating a data source from the online designer;   - fixed the display of the user deletion button in the admin panel in corporate server mode;   - fixed a white stripe appearing after clicking on the checkbox and the disappearing title on hover;   - fixed localization of workspaces in the admin panel;   - fixed validation of the owner ID in the admin panel;   - added a default avatar for all user icons;   - fixed localization for starting a task;   - fixed an error regarding payment necessity on the expired subscription detail page;   - fixed notifications for downloading files without permissions;   - fixed the search field and the output file name field;   - fixed the ‘Select All’ button on the API keys page;   - fixed a bug with an incorrect default subscription when updating a user in the admin panel;   - fixed a bug where pages did not refresh after deletion in the admin panel. ### Update of Delphi and Lazarus Products To 2025.2 Version URL: https://www.fast-report.com/news/fastreport-vcl-2025.2 Summary: With version 2025.2 appeared: setting up watermarks, updating server components, a new mechanism for dialog pages of a WEB report, an object for RFID tags, changes in the reporting engine, support for themes. With version 2025.2 appeared: setting up watermarks, updating server components, a new mechanism for dialog pages of a WEB report, an object for RFID tags, changes in the reporting engine, support for themes. Get ready for the highly anticipated update for the entire line of Delphi and Lazarus products! With version 2025.2, you’ll enjoy exciting new features, including an easy-to-use tool for configuring watermarks, an updated set of server components, a brand-new dialog page mechanism for web reports, and the innovative TfrxDeviceCommand report object for RFID tags. We've also made significant enhancements to the reporting engine, improved export and transport options, added theme support, and much more! Upgrade your product today and unlock a world of new possibilities with us! New Features in FastReport VCL User-Friendly Watermark Customization Tool   A customizable watermark feature has been added for report pages. Watermarks are often used for document protection or to indicate the type of document. We have introduced an easy-to-use tool that allows you to configure watermarks for each page of the report effortlessly. Any page in the report can have multiple watermarks, enabling individual customization for print, display, or export. Watermarks can utilize both images and text, with a wide range of customizable parameters (text rotation, style). Watermarks can be set up both in the report designer and in the preview mode. Update of Server Components   With the release of 2025.2, all available export filters from FastReport VCL are now also available in server components. Take advantage of all these formats in your web application. New Mechanism for WEB Report Dialog Pages   The completely revamped mechanism allows for the use of container objects such as PageControl and groups, as well as extending the functionality of available controls on the dialog page for web dialogs. In this update, we have expanded support for new components for dialog pages. Specifically, we have added dialog page controls that were not previously available in WEB. List of new dialog form controls: Date picker — date picker DBComboBox — drop-down list linked to a data source List Box — selection list CheckListBox — selection list (with checkboxes) MaskEdit (without mask) —Input field Password edit —input field for password PageControl —creating pages with tabs GroupControl — grouping panel Panel — panel You can now also apply a custom HTTP header for your projects. New TfrxDeviceCommand Report Object  This non-visual object is designed to send commands to devices (exports) that can process these commands. In the current version, the object contains a settings class for RFID tags. RFID tags transmit non-visual data to the ZPL export to write this data to the chip using specialized equipment. The RFID tag class has its own editor and set of properties for precise adjustment of the information being written. You can read more in our article. Read the article The TfrxPDFView report object now allows you to configure the range of pages to be output. You can set values using expressions in the TfrxPDFView.PagesRange  property. Thus, you have access to filtering the output pages for a PDF document. Changes in the Report Engine Combining Object Output Techniques New changes to the report engine allow you to combine different object output techniques, giving you the freedom to create complex reports with a variety of options. The operation of the bottom alignment mechanism (baBottom) of a growing band has been changed when one of the band's objects is split into several parts (pages). In the old implementation, an object with the baBottom property is displayed on the very first part of the data break. The new mechanism for operating such a report corrects objects with baBottom, placing them on the last part of the data (at the end of the band). Please note that this behavior of the report engine is considered correct and should be taken into account when developing reports. Support for smMaxHeight Stretching for a Static Table (AllowSplit rows only) The smMaxHeight stretching in a table works differently than in objects. The desired height is set for the entire table on the band. Then it is distributed among the rows with the AllowSplit=True property set and AutoSize=False  disabled. Rows with the MaxHeight value are also taken into account. This approach allows you to choose which rows of the table can be stretched to fill the empty space, and which cannot. New TfrxRichView Report Object Splitting Behavior The RichText object allows you to use tables, images, and other objects that cannot be split for a specific size. Such objects could sometimes create entire non-splittable blocks of content that extended beyond the page. In the current version, TfrxRichView splitting has been reworked and works selectively depending on the situation. Finding the smallest splittable part . If an object contains a part that cannot fit on a new page and is non-splittable (an object or table row is larger than the height of the entire sheet). Then the smallest "non-splittable" part is now found for such a part and is displayed as is. Splitting does not stop. If there are other parts, they will also be split and output. The main difference from the old mechanism is the search for the smallest value for the non-splittable part and the continuation of the build. Previously, all content fell into the "non-splittable" part and the separation stopped there, and some of the text could be lost. Finding the largest splittable part . If a part is encountered that cannot fit on a new page, but it is splittable, such as the same table, then a search for the largest splittable part will be performed and the output will continue. Report Designer Added Theming Support (Runtime Themes) The report designer and its components have been adapted to support themes, both system and custom. Now the report designer will always be in the same style as your application! In Rad Studio 12.3, work with monitors with high display scaling was improved. This change is aimed at improving the quality of visualization and usability of the interface in the development environment when working on monitors with high resolution and scaling settings. In this update, the dialog editor in the report designer has been redesigned. Now this is a fixed workspace, just like the report page. The position of the dialog can be changed through the object inspector. Improved Code completion in the report code editing window. For your convenience, a pop-up menu has been added for the watch list window. We also redesigned the "Designer Options" window for the best support for small screen resolutions. Exports and Transports Support for user-defined characters has been implemented in PDF and SVG exports (EUDC) . Also improved alignment of RTL text with ligatures. Added support for ZUGFeRD 2.3 with the following profiles: “MINIMUM”,” BASIC WL”, ”BASIC”, ”EN 16931”, ”EXTENDED”, ”XRECHNUNG”. An example with the inclusion of data for this format can be found in InvoiceDemo, which comes with the product. In the new version, the mechanisms for exporting to XLSX and DOCX formats have been improved. This has enhanced the quality of the generated documents and expanded their customization options. The e-mail (SMTP) transport has been improved with native support for TLS\STARTTLS and support for XOAUTH authorization. Use secure channels to send your reports. FastReport Lazarus In addition to the fundamental changes that have been included in the VCL and Lazarus versions, FastReport for Lazarus has received support for high-resolution monitors (HiDPI). FastCube VCL and FMX In the VCL version of FastCube, all TTreeView controls have been replaced with TfrTreeView. All versions received filter indication in the list of available fields. The FMX version received the ability to save Custom Filter and Custom Group, as well as a number of improvements and fixes. FastQueryBuilder Added support for high-resolution monitors (HiDPI). FastScript In this update, we have implemented Android support. This innovation works only when compiling with strings that are indexed starting from one. You can use all the power of the script engine in your mobile Android applications. Added support for classes for working with XML and JSON. You can read more about how to work with these formats using the example of loading data into a report in this article. Read the article FastReport VCL Controls For the TfrShellTreeView control, it became possible to create custom nodes and shortcuts to other nodes. You can read about how to configure TfrShellTreeView and add custom nodes in this article. Read the article Installer You can now install our products with Android support. Also, support for installing packages on the 64-bit version of the IDE Embarcadero RAD Studio 12.3 has been added. Complete List of Changes: 2025.2 version ======================== VCL.Core [Localization] - Fixed sorting in LocalizationEditor; VCL.Controls [Engine] + Added the ability to create a custom structure of root Shell Node and regular Node; - Fixed HiDPI support in smartMemo; - Fixed the behavior in which the control is not scaled when Parent is assigned when csFreeNotification is set in ComponentState; - Fixed some shortcomings in the rendering of TfrTreeView and TfrShellTreeView; [UI] - Fixed custom color rendering and disabled state for tfrTreeView; Lazarus.Controls [Engine] + Added the ability to create a custom structure of root Shell Node and regular Node; - Fixed HiDPI support in smartMemo; [UI] - Fixed custom color rendering and disabled state for tfrTreeView; - Implemented HiDPI support for Lazarus; - Fixed some shortcomings in the rendering of TfrTreeView and TfrShellTreeView; VCL.FastCube [UI] + Added filter indication to the list of available fields; + Added the ability to save Custom Filter and Custom Group; • TreeView replaced with TfrTreeView; - Fixed localization of the FastCube toolbar; FMX.FastCube [UI] + Added filter indication to the list of available fields; + Added removal of ActivePopup in TfcxSliceGrid.FullUpdate; • TreeView replaced with TfrTreeView; - Fixed localization of the FastCube toolbar; - Fixed incorrect operation of the TfcxRangesEditor form; - Fixed the problem of positioning and visibility of the "OK", "Cancel" buttons; - Fixed FastCube FMX error in the selection rules editor; - Fixed the operation of incremental search in drop-down lists; [Engine] + Added the ability to save Custom Filter and Custom Group; - Fixed an error when clicking in the Top-N filters list area after zeroing TfcxSliceGrid.Slice := nil; Lazarus.FastCube [UI] + Filtering indication added to the list of available fields; * TreeView replaced with TfrTreeView; - Localization of the FastCube toolbar fixed; VCL.FastQueryBuilder [UI] + First version of HiDPI added; Lazarus.FastQueryBuilder [UI] + First version of HiDPI added; VCL.FastScript [Engine] + Support for XML and JSON added to FastScript; * Improvement of TfsTree by replacing TTreeView with TfrTreeView; - Fixed error in TfsScript.Destroy that could lead to a crash; FMX.FastScript [Engine] +Added support for Android; - Error fixed in TfsScript.Destroy that could lead to a crash; Lazarus.FastScript [Engine] + Added support for XML and JSON to FastScript; * Improvement of TfsTree by replacing TTreeView with TfrTreeView; - Fixed error in TfsScript.Destroy that could lead to a crash; - Fixed fs_ibx package for compilation in Lazarus; VCL.FastReport [Preview] + Fixed collapsing when Application.MainFormOnTaskbar = True; [Engine] + Added the ability to configure watermarks for report pages; * Modified the RichView splitting mechanism, added minimum non-breakable part definition; - Fixed HTMLView with Page.EndlessHeight; - Fixed "Class not found" error when using the UseFileCache property with empty pages in the report; - Fixed frxDecompressStream function; - Fixed error with incorrect value in CopyName macros; - Fixed date and time export to XLSX; - Fixed splitting of the RichView component with an empty line at the end; - Fixed SVG boundaries updating; - Fixed loading order of 'hmtx' table in TTF fonts; - Fixed error where a renamed dataset did not change the default username; - Fixed error where the print dialog reset settings when moved to a secondary screen; - Fixed size of the signature for non-visual components; - Fixed HiDPI support for smartMemo; - Fixed behavior of the band with additional height; - Fixed memory access error when using external DBX connection; - Fixed error when printing a nested report with multiple columns on the page; - Fixed missing line break in CellData.Text; - Fixed Memo AutoWidth error with macros like TotalPages; - Fixed error where some table events were triggered twice; - Fixed baBottom when the object breaks across multiple pages and added support for smMaxHeight for static tables (only AllowSplit rows); - Fixed rounding height error in band breaks; - Fixed left coordinate of the subreport when moving to a new page; - Fixed AnyDAC packages in FastReport product so they automatically install on RAD Studio XE3 and older IDEs; - Fixed error when macros are updated at design time; - Fixed duplex selection mode; - Fixed baBottom and smMaxHeight behavior in the page footer; - Fix that clears the ParentForm singleton when the parent form is closed not from the report component; [Exports] + Improved export of RTL text to PDF; + Added export of external symbols; + Added support for ZUGfERD 2.3 in PDF export; - Removed compiler warning; - Fixed export of long HTMLView; - Fixed generation of PDF/A metadata; - Fixed PDF using the ZUGFeRD standard; - Fixed incorrect input focus transition via Tab in export dialogs; - Fixed numerical format in XLS export filter; - Fixed character size in SVG and PDF exports; - Removed floating anchor for the docx table, replaced with an empty line; [Client-server] + Added new dialog form controls: Date picker, DBComboBox, ListBox, CheckListBox, MaskEdit (without mask), Password edit, PageControl, GroupControl, Panel; + Added the ability to use a custom HTTP header in client-server components; * Redesigned the dialog generation engine, supporting nested controls and the ability to extend with custom controls; * Updated exports for client-server components; - Fixed an error when working with parameters and dialogs; [Designer] + Improved rendering and functionality of designer elements in VCL themes; + Added context menu for watch list windows in the report designer; * Redesigned the "Design -> Options" window for small screen resolutions; * Redesigned the dialog editor in the report designer; - Fixed error in RichEditor with older versions of msftedit.dll; - Fixed dialog scaling (TfrxDialogPage); - Fixed TfrxLabel behavior when AutoSize = True; - Fixed TfrxDesigner.DefaultFont functionality with HiDPI; - Fixed TfrxDialogPage behavior on a secondary screen; - Fixed barcode editing behavior in the report designer via the object inspector; - Fixed code completion behavior in nested procedures and functions in scripts, as well as in scripts with string concatenation expressions; - Fixed tooltip behavior in the code window; - Fixed menu style for the report designer in RAD 12.2 at design time; [Other] + Added the ability to override the search form; * Updated Romanian resources; - Fixed compilation of InvoiceDemo; - Fixed example of CustomScrollsDemo; [Report object] + Added support for single-page TIFF in TfrxPictureView; + Added object for RFID Tags (TfrxDeviceCommand); + Implemented a list of displayed pages in a PDF document (Range) in TfrxPDFView; - Fixed compatibility with HTML Viewer; - Fixed barcode rendering when ((Rotation > 0) and (WideBarRatio > 2)); - Fixed default font size for the top label of barcodes with HiDPI; - Fixed behavior of the HTMLView component when colgroup width overrides td tag width settings; - Fixed report generation with RFID; - Fixed incorrect clipping in RichView; - Fixed label for two-dimensional barcodes; - Fixed label for two-dimensional barcodes; - Fixed setting "Swiss QRCode" for QRCode barcode; FMX.FastReport [Engine] - Fixed "Class not found" error when using the UseFileCache property with empty pages in the report; - Fixed rotating text transfer when exporting to PDF; - Fixed date and time export to XLSX; [Exports] - Removed compiler warning; - Fixed WordWrap in PDF export with simple text visualization; [Designer] - Fixed group header editor; Lazarus.FastReport [Engine] + Added the ability to configure watermarks for report pages; - Fixed HTMLView with Page.EndlessHeight; - Fixed "Class not found" error when using the UseFileCache property with empty pages in the report; - Fixed frxDecompressStream function; - Fixed error with incorrect value in CopyName macros; - Fixed date and time export to XLSX; - Fixed loading order of 'hmtx' table in TTF fonts; - Fixed error where a renamed dataset did not change the default username; - Fixed error that caused the print dialog to reset settings when moved to a secondary screen; - Fixed error when creating TfrxComboEdit for Lazarus; - Fixed size of the signature for non-visual components; - Fixed HiDPI support for smartMemo; - Fixed behavior of the band with additional height; - Fixed memory leak when exporting PDF in Linux; - Fixed error when macros are updated at design time; - Fixed duplex selection mode; - Fixed baBottom and smMaxHeight behavior in the page footer; - Fix that clears the ParentForm singleton when the parent form is closed not from the report component; [Exports] + Improved export of RTL text to PDF; + Added export of external symbols; - Removed compiler warning; - Fixed export of long HTMLView; - Fixed generation of PDF/A metadata; - Fixed PDF using the ZUGFerd standard; - Fixed PDF export with HiDPI; - Fixed export dialogs with HiDPI; - Fixed image inversion in ZPL export; [Client-server] + Added new dialog form controls: Date picker, DBComboBox, ListBox, CheckListBox, MaskEdit (without mask), Password edit, PageControl, GroupControl, Panel; + Added the ability to use a custom HTTP header in client-server components; * Redesigned the dialog generation engine, supporting nested controls and the ability to extend with custom controls; * Updated exports for client-server components; - Fixed an error when working with parameters and dialogs; [Designer] - Fixed error in RichEditor with older versions of msftedit.dll; - Fixed dialog scaling (TfrxDialogPage); - Fixed TfrxLabel behavior when AutoSize = True; - Improved rendering and functionality of designer elements in VCL themes; [Other] + Added the ability to override the search form; [Report object] + Added object for RFID Tags (TfrxDeviceCommand); - Fixed behavior of the HTMLView component when the colgroup width overrides the settings for the "td" tag; - Fixed label for two-dimensional barcodes; - Fixed compatibility with HTML Viewer; - Fixed creation of composite barcodes; [Preview] - Fixed preview with HiDPI. ### Update of Delphi and Lazarus Products to Version 2025.1 URL: https://www.fast-report.com/news/fastreport-vcl-2025.1 Summary: Version 2025.1 introduces a new application to demonstrate the capabilities of FastReport VCL, expands the component library, and improves the report designer and export filters. Version 2025.1 introduces a new application to demonstrate the capabilities of FastReport VCL, expands the component library, and improves the report designer and export filters. Our products are constantly evolving, with new features continuously added and the quality of the code improving. This update includes enhancements and fixes for the entire line of Delphi and Lazarus products. Version 2025.1 introduces a new application to demonstrate the capabilities of FastReport VCL, expands the component library, and improves the report designer and export filters. New App for Demonstrating FastReport VCL Capabilities We have updated our main demo application for FastReport VCL to ensure that the product not only delights you with its rich functionality but also with its appearance. Expansion of the Component Library for Delphi and Lazarus We introduce the new visual component TfrShellTreeView for developing applications in Delphi or Lazarus. This is a fully functional file system navigation component that works on Windows and Linux (Lazarus). Key Features: •    Native rendering (icons and themes from the operating system) •    Subscription to file system changes and automatic updates •    Fast rendering (utilizes a virtual tree) •    Customization and overriding options allow you to extend the component to suit your needs. Improvements in the FastReport VCL Designer The FastReport VCL designer offers extensive functionality for designing your reports. In version 2025.1, we have added the ability to customize the highlighting of expressions, which you can find in the designer settings. A search feature has been introduced in built-in editors such as Memo and SQL. Improved working with hiDPI modes in Embarcadero RAD Studio 12 and fixed issues affecting the user experience of creating templates. A new interactive editor for the "Table" object has been added. Edit the table in a familiar way, just like in Microsoft Word. FastReport VCL Reporting Engine A new feature in the reporting engine allows you to create chains of Subreports with printing on the parent (Subreport.PrintOnParent). This approach enables printing structures similar to tree-like structures and stretching elements located on the parent band. This method is based on the height of the structure printed in the Subreport. Export Filters The ability to edit the CellularText object in interactive PDF forms has been added. You can now use CellularText as an element of an interactive form. In table export filters, a new feature has been added to select the quality of objects exported as images. This setting allows you to set the scale for all images in table export filters. Fixes and quality improvements have been made to export filters: PDF, DOCX, PPTX, XLSX, SVG. Preview The ability to copy the contents of the RichView object in the preview has been added, including group selection of objects via Shift + Right Mouse Button. FastReport FMX A new export to PPTX has been added for Windows, macOS, and Linux platforms. Delphi and Lazarus Version 2025.1 also supports Embarcadero RAD Studio 12.2 (including the new Windows 64 Modern platform for C++ Builder) and Lazarus 3.6. Version 2025.1  ---------------   [Designer] + Added expression highlighting settings in the report designer; + Added basic search in editors with Memo; * Improved mouse functionality in SimpleMemo; - Improved scrolling in the Memo editor; - Fixed the issue when opening the report designer; - Fixed a potential AV error after deleting a StyleSheet element in the report designer; - Fixed name duplication when dragging from DataTree; - Fixed stretching of the object toolbar when the height is insufficient in the designer; - Fixed calling the text editor through the object inspector; - Fixed an issue with the Auto Update Fields option enabled; - Fixed navigation issues in the Report Tree of the designer; - Fixed SmartMemo (code editor) for HiDPI;   [Engine] + Added TfrShellTreeView control for shell management in VCL and Lazarus with Linux support; + Added nested handling for Subreport.PrintOnParent in the reporting engine; + Added support for the Win64x compiler during development; + Implemented native rendering of controls for VCL and Lazarus in Linux; + Added WideString type in FastScript; - Fixed compatibility with C++ Builder and JVCL; - Fixed updating DBX parameters when extracting field definitions; - Fixed an issue when using a multi-column page along with PrintOnPreviousPage and KeepTogether options; - Fixed a problem in automatically generated headers for C++ Builder; - Fixed the HTML editor; - Fixed RTL output with tags in TfrxHTMLView; - Changed data field updates to clear automatically defined fields when DataSet is modified; - Fixed incorrect rendering of SliceGrid when loading a scheme at high DPI; - Fixed icon caching during scaling for HiDPI; - Fixed an issue when changing the DBDataSet.DataSet property did not clear field definitions; - Fixed TfrxComboBoxView and TfrxListBoxView; - Fixed the field type definition for ftFixedChar; - Fixed memory leak when displaying SVG; - Fixed an issue where DataLink did not clear previous data; - Fixed the error 'Resource FCXBUTTONS not found' in FMX RS12 Builder when calling the formula editor; - Fixed the state of the old XML format flag after clearing; - Fixed initialization of the interactive parameters structure; - Fixed warning in frxGetCertificate.   [Exports] + Added the ability to edit the CellularText object in interactive PDF forms; + Added the FromName field in TfrxMailExport when using Indy SMTP; - Fixed EMF export to SVG; - Fixed font substitution in PDF export; - Fixed line break issue when exporting to .rtf format from Lazarus on Linux; - Fixed export of katakana, hiragana, and geometric symbols in PDF export; - Fixed line selection and bottom field line during DOCX export; - Fixed EMF export to PDF; - Fixed hyperlinks in RTF export; - Eliminated GDI object leaks; - Fixed customizable PDF signature; - Fixed alignment issues in TfrxMemoView and reduced sizes of images with alpha channels in PDF export; - Fixed date formatting in XLSX export; - Fixed compiler warnings; - Fixed XLS export for empty pages; - Fixed date format in XLSX export; - Fixed "Unexpected variant error" in XLS export;   [Lazarus] - Fixed ODF export when AllowHTMLTags is enabled; - Fixed RTF export when AllowHTMLTags is enabled; - Fixed TfrxDateEditControl in Linux under Lazarus; - Removed unnecessary ScrollBar rendering in the designer; - Fixed selection reset in the Linux Lazarus Rich editor; - Fixed infinite loading when using Linux Lazarus Rich;   [Other] + Added VarIsNull function; - Fixed issue with displaying the Data Highlighting dialog in FastCube; - Fixed converters for QuickReport, ReportBuilder, and Rave Reports;   [Preview] + Added the ability to copy RichView content in preview; - Fixed issues with active preview tabs when exporting all open preview tabs; - Fixed toolbar issues in HiDPI mode in version 10.4, when some toolbar buttons were disabled; - Fixed AV when calling preview in XE2; - Fixed display of double tooltips in the preview window;   [Report object] + Added property TfrxFIBDatabase.LibraryName; * Added Tab key handling in TfrxRichView editor; - Fixed serialization of TfrxPictureView.Stretched property; - Fixed barcode positioning after changing BarType when Align is set to [baCenter, baRight]; - Fixed Swiss preset in QR barcode;   [Resources] * Updated Polish resources; * Updated German resources for FastCube; - Fixed FCXBUTTONS resources for applications with run-time packages;   [FastReport FMX] - Added export to PPTX for Windows, macOS, and Linux platforms; - Fixed export dialog display in macOS; - Export dialogs have been separated from export filter modules (ability to override export dialogs with custom ones). ### Update of FastCube 2 beta URL: https://www.fast-report.com/news/update-fastcube2-beta Summary: Update of FastCube 2 beta Update of FastCube 2 beta 1. Improved integration with FastReport: reports now use grid highlights and style. Fixed cell autosize options: adjust width, adjust width with restrictions and adjust height. 2. Added FireDac support. 3. Extended scripting abilities :  a. «Calc all cells» option –to build calculated measure for empty cells (which does not have records in source dataset),  b. calculate totals with script,  c. “FormulaDetail” aggregate - calculate measure values on source data (not on other measures). 4. Copy to clipboard now copies headers . ### Update of FastReport Online Designer 2025.2 URL: https://www.fast-report.com/news/release-fastreport-online-designer-2025.2 Summary: We are pleased to introduce the new version of Online Designer 2025.2, which includes support for VCL reports, the ability to create new reports when working with .NET WebReport, a new bands menu. We are pleased to introduce the new version of Online Designer 2025.2, which includes support for VCL reports, the ability to create new reports when working with .NET WebReport, a new bands menu. Exciting changes in our product! We are pleased to introduce the new version of Online Designer 2025.2, which includes support for VCL reports in the .fr3 format, the addition of parameters when creating SQL queries, the ability to create new reports when working with .NET WebReport, a new bands menu, and much more. New Features [Beta] Support for .fr3 Reports   With the 2025.2 release, an experimental feature for working with .fr3 format reports has been introduced. This format is used in reports for FastReport VCL . Now, you can build a designer for WebReport VCL, which allows using Online Designer for projects based on another reporting platform without the need to adapt existing .fr3 reports.   Available: All types of horizontal bands are supported A limited set of components is available (Text object, Image, Table) Fill styles for components are supported Component borders are supported Font settings can be edited Component properties can be edited   Limitations: Vertical bands are not available Creating data sources is not available There may be differences in property structure and logic of operation. However, report preview and basic editing are already operational. In future versions, we plan to significantly expand this set of features.  To build Online Designer with support for the FastReport VCL reporting core (in .fr3 format), you can follow these instructions: 1.    Open the Designer Builder (FastReport Online Designer Builder). 2.    Go to the build page. 3.    Select “Reporting Core” from the build menu. This menu allows you to specify which core (.NET or VCL) the designer will be built for. 4.    Choose the “VCL” option. This will activate the designer’s build with support for .fr3 format reports. Components related to FastReport .NET will not be included in the build. 5.    Click the “Build” button. This will start the process of generating the build with the selected configuration. Wait for the build to complete. This may take some time depending on the options you have chosen. After the build is finished, you will receive a link to download it. Please note that this version is in beta status, and there may be limitations in functionality. Style Editor Implemented The Online Designer now features a style editor that allows for centralized management of the appearance of report components. You can now create your own styles and customize fill colors, fonts, borders, and other formatting parameters just once. Then, you can apply them to multiple elements without the need to adjust each component manually! Create a style, adjust it to your requirements, and simply select it for the desired report components. This simplifies the formatting process and ensures a consistent visual style. Ability to Create Parameters When Writing SQL Queries Added Now, when creating a custom SQL query in the data source, you can use parameters that make the queries more flexible and adaptable to various scenarios. In the SQL query creation window, there is now an option to add parameters that can then be used directly in the query text by referencing them with the @ symbol. For example: ``` SELECT * FROM Orders WHERE Category = @cateroryParam ``` Parameters specified in the interface will be automatically substituted when executing the query. This allows for the creation of more versatile reports where data can be filtered based on external conditions or values entered by the user. Ability to Create a New Report Added The Online Designer now includes the ability to create a new report when working with WebReport .NET. You can now start creating a report from scratch directly from the interface without the need to upload a file in advance. A new menu item called “File” has also been implemented, providing convenient access to the main actions related to the report. This menu allows you to: Create a new report (if supported by your server); Save the current report; Change the interface language; View information about the version and build of the designer. The new menu simplifies navigation and makes working with reports more flexible and intuitive. Improvements New Bands Menu Implemented In version 2025.2, the band panel has been redesigned with an updated interface and improved structure. The new panel was developed with a focus on responsiveness and ease of use on various devices, including tablets and mobile screens. Ability to Change the Order of Conditions in the “Text Highlighting” Window Added The “Text Highlighting” window now has the ability to change the order of conditions that govern text formatting. This is especially useful in cases where multiple rules apply to the same element, and their order affects the display outcome. This mechanism allows for precise control over the visual logic of the report and helps achieve the desired formatting in various scenarios. Ability to Use Views and Procedures in Data Sources Added The new version of the designer introduces support for views and stored procedures in the list of available data sources. Previously, when connecting to a database, the designer only displayed tables, and views were not available for selection. Now, views returned from the server are correctly displayed and can be used alongside regular tables. After creating a data source, you can use stored procedures and views just like tables. Please note that the support for views and procedures depends on the capabilities of your database and the connection settings. Ability to Disable Popup Messages Added The behavior of popup notifications in the Online Designer can now be configured through settings received from the server when the application starts. This allows for centralized control over the display of messages related to events, errors, or user actions. In the configuration, it is sufficient to specify the notifications parameter and select one of the operating modes: "default" — displays built-in notifications in the upper right corner of the interface (default setting); "html5" — uses system HTML5 notifications (if permission is granted in the browser); false — completely disables all popup notifications. Example configuration: { notifications: "html5" } — activates system notifications. { notifications: false } — completely hides all popup messages. Full List of Changes + Support for reports in .fr3 format; + Implemented the Style editor; + Added the ability to create parameters when writing SQL Query; + Added the ability to use views and procedures in data sources; + Implemented new bands menu; + Added the ability to resize the expression editor; + Added the ability to disable popup messages; + Added the ability to change the order of conditions in the “Text Highlighting” window; - Fixed an error in the advanced matrix when calculating span (colSpan, rowSpan) in cells; - Fixed the display of the “MSChart Editor” window; - Fixed the behavior of the ruler when clicked frequently; - Fixed fields in the properties panel; - Fixed the Container object; - Improved the appearance of the “Watermark” window; - Fixed an issue with saving ConnectionString; - Fixed an issue with incorrect positioning during drag and drop in the expression editing window; - Fixed the display of the “Fill” window; - Fixed an issue with incorrect restoration of position values when using Ctrl+Z; - Fixed an issue with saving format properties. ### Updated export engine in FastReport VCL URL: https://www.fast-report.com/blogs/updated-export-engine-vcl Summary: Fast Report VCL pleased us with an updated export engine. This affected the export of compound objects, such as charts, maps, RichText. Earlier these objects were exported as a picture, but now a vector representation of objects and text is used. Fast Report VCL pleased us with an updated export engine. This affected the export of compound objects, such as charts, maps, RichText. Earlier these objects were exported as a picture, but now a vector representation of objects and text is used. Fast Report VCL pleased us with an updated export engine. This affected the export of compound objects, such as charts, maps, RichText. Earlier these objects were exported as a picture, but now a vector representation of objects and text is used. This means the scaling of objects does not affect the quality. Fast Report VCL pleased us with an updated export engine. This affected the export of compound objects, such as charts, maps, RichText. Earlier these objects were exported as a picture, but now a vector representation of objects and text is used. This means the scaling of objects does not affect the quality. It is better to consider this with examples. Since there was no Map object in the 5th version of FR VCL, let's look at the example of a Chart object. I will present screenshots of the export of the one and the same report in the 5th and 6th versions. Diagrams’ representation in the 5th and 6th versions differs in color filling. In the previous version, the diagram was painted with a lurid vivid colors. I agree, it contrasts, but looks "childish". In the 6th version, quiet colors are used for filling, and it looks "more mature". Let's look at exporting to a PDF report format with a chart in version 5. To show the disadvantages of using a picture to display compound objects, I zoomed in: Even with a slight zooming, the picture quality deteriorates noticeably. In addition, there is no way to select and copy the inscription. Now look at the PDF export of the same report in FR VCL 6: And even at high magnification ... The chart looks perfect. Note that on the previous screenshot, I showed the highlighted chart title. Any text in a diagram, map or RichText can now be selected and copied to the clipboard. The PDF file size for FR VCL 5 is 447KB, and for FR VCL 6 is 307KB. That is, updates have benefited not only the quality of exports, but also the size of the resulting file. Since we are considering PDF export, take a look at its settings for the 5th ...  and the 6th version: The Outline option is available. At the bottom of the form appeared drop-down list with options for saving the report: As you can see, in addition to saving to the local disk (File option), you can save the report to a remote FTP server or to one of the cloud stores. Updated export is applied for three formats: PDF, HTML5 and SVG. Tags: VCL, Export, FastReport ### Updated Export menu FastReport.Net report URL: https://www.fast-report.com/blogs/updated-export-menu-net In the version of FastReport.Net 2018.3.14 appeared useful refinement that does not relate to the functionality of generator. However, it significantly improves usability report designer, or rather the report preview mode. Finishing touched menu exports. Because developers regularly delight us with new export formats, their recruit until 31. Let's take a look how it looked until recently: In such a huge list is not just quickly find export, not to mention the size of the menu that on smaller screen resolutions are simply not fit entirely. There is only one way out-group exports by destination. Here is what we have now: Very compact. Just some relief. Briefly go through the menu. Prepared report formats and Adobe Acrobat stand apart. For them there is no pair to create the drop-down list. All formats of Microsoft Office and Open Office in the same group. XML group contains export formats such as: Web group contains other markup languages used in the Web: In the Image group - export formats in image. Export Image file formats support: JPG, BMP, PNG, GIF , TIFF, Windows metafile. Export to SVG stands out because it has a lot of their own settings.  Group Database contains formats commonly used to store data: Print Group gathered all export formats that are relevant to printing. And the Other group includes other export formats for which a separate section is inappropriate: Group Cloud contains exports to external storage. Usually it is cloud services. Here you need to understand that it is not enough simply to have an account in one of cloud services, you want to create an application in the cloud-based service through which you will save the report to the store. More details can be found in the documentation of FastReport.Net. The last group contains Messengers only one export to XMPP for now, also known as the Jabber. The fact that exports in Messenger placed in a separate section, gives us hope for the addition of new export formats to the most popular instant messengers. What is the export of this? FastReport.Net loads report to the cloud FastReport Cloud. And then sends a link to the report in the messenger. In conclusion, I would like to commend the work of FatReport.Net team that she does not forget about usability. I look forward to further work in this direction. Tags: .NET, .NET, FastReport, FastReport ### Updated FAQ URL: https://www.fast-report.com/news/update-faq-fastreport-vcl4 Summary: Updated FAQ Updated FAQ Added FAQ sections for  Fast Report 4 VCL  and for  Fast Report Studio . ### Updating .NET products to 2024.1 version URL: https://www.fast-report.com/news/fastreport-net-2024.1 Summary: In this release, we focused on implementing the long-awaited features that greatly simplify the process of developing reports. In this release, we focused on implementing the long-awaited features that greatly simplify the process of developing reports. In this release, we focused on long-awaited features that greatly simplify developing report templates. The following are now available to you: custom line styles, changing the shape of the "Picture" object, setting up hotkeys, support for the ODBC connector, and much more. New opportunities Improved work with the Table object Working with the report designer has become easier and more convenient. There are new capabilities for working with the "Table" object. 1. Quickly add columns and rows. If you point to a row boundary to the left of the table or a column boundary at the top, a conditional display will appear showing where a new row or column will be added. There is also a button that, when clicked, will add a new row or column to the table. The table must be active (selected). Otherwise, new controls will not appear. 2. Change the height of rows and width of columns. Now, you can change the column width or row height accordingly by dragging the column or row border using the mouse. 3. Drop-down menu "Insert". When you right-click a cell in the context menu, you will see a drop-down list that allows you to insert a new column or row next to the cell. 4. Hotkeys. Copy cell text and paste text into a cell using the hotkeys Ctrl+C and Ctrl+V. Read more about the new table capabilities in the article. Merging text objects Now, there is a mechanism for merging text objects with the same text. For this purpose, a new MergeMode property has been added to the "Text" object, which allows you to configure the merge mode. The new property works very similar to the Duplicates property in Merge mode, but there are important differences: Duplicates works only with one object located in the “Data” band. For example, the Data1 band has a text object named Text1, and the Duplicates property is set to Merge. When building a report, at the first iteration of Data1, when the first record is displayed in Text1, the text "10" will be displayed. On the second iteration of Data1 and the output of the second record, the same text will be output in Text1. As a result, two instances of Text1 will be connected, and the text "10" will be displayed only once. MergeMode, unlike Duplicates, can merge instances of different text objects, and do this both vertically and horizontally. For example, when building a report, the text "10" will be displayed in Text1 and Text2, located next to and to the right. In this case, Text1's MergeMode property is equal to Horizontal. In this case, the text objects will be connected and the text "10" will be displayed once. Read more about the new property in the article at this link. Custom line styles For the LineObject, ShapeObject, PolyLineObject, and PolygonObject objects, a new property has been added—DashPattern, which allows you to create your line styles. Previously, the line style of these objects was set using the Border.LineStyle property. Only six styles were available: Solid, Dash, Dot, DashDot, DashDotDot and Double. With the new property, you can specify a collection of values that will sequentially specify the length of strokes and spaces. For example, with values 5, 4, 3, and 2, we set a pattern in which a stroke of length 5, a space of length 4, a stroke of length 3, and a space of length 2 will be displayed. Then, the values will be repeated in a circle, starting from 5. The unit of measurement here is the Border.Width. If there is at least one value in the DashPattern collection, then this new mechanism will work. And the Border.LineStyle property will be ignored. If the DashPattern collection is empty, the Border.LineStyle property mechanism will still work. Below, you can see some examples: Instructions for setting up lines are available at the following link. Change the shape of the Picture object It is now possible to change the shape of the "Picture" object. PictureObject now has a new Shape property that allows you to specify the following shapes: rectangle (default), round rectangle, ellipse, triangle, and diamond. You can find out more in the article. Setting up hotkey combinations It is now possible to customize hotkey combinations at your discretion. You can configure commands for actions such as "Open file," "Save file," "Prepare report," and much more. To do this, a new button has been added to the "Interface" tab in the designer settings. Pressing it opens a window for setting up hotkey combinations. Here is a table with actions and their assigned keyboard shortcuts. You can change the combination by double-clicking on the desired line. You can also navigate the table using the Up and Down keys, and make changes by pressing the Enter key. You can also return all combinations to their default values. You can find more information about setting up keys in this article. .NET 8 support Added  .NET 8 support  for FastReport .NET, FastReport.Core, FastReport.Core.Skia, and FastReport.WPF. This platform improves application performance and adds many new features to your projects. Refusal of support for .NET Standard 2.0 in FastReport.Web To cover more and more technologies that are constantly being added to the .NET world, we have decided to abandon the legacy .NET Standard 2.0 compatibility layer in our Web integration library FastReport.Web (WebReport Core/Skia). The minimum supported version of TargetFramework for this product will now be .NET Core 3.1 and higher (including .NET 5, 6, 7, and 8). FastReport.Core and FastReport.Core.Skia will still support .NET Standard 2.0 without changes. Added ODBC connector support for FastReport.Core Our users have been asking us for a long time to add the ability to connect to databases via the ODBC protocol for our cross-platform products. This feature was present only in FastReport .NET and FastReport WPF previously. With this update, it is also available in FastReport.Core and FastReport.Core.Skia. To use it, add the FastReport.Data.Odbc plugin to your project and register it with this code: ``` FastReport.Utils.RegisteredObjects.AddConnection(typeof(OdbcDataConnection)); ``` Changes in WebReport Email Export to WebReport Now, WebReport has a function for sending reports by email. To enable this feature, you need to configure the SMTP server parameters when registering FastReport services. Just add the code: ``` services.AddFastReport(options => options.EmailExportOptions = new FastReport.Web.EmailExportOptions { Address = "SomeAddress@example.com", EnableSSL = true, Host = "Host", MessageTemplate = "Message template here", Name = "John", Password = "password", Port = 25, Username = "Username" }); ``` After this, activate the option WebReport.Toolbar.Exports.ShowEmailExport and users will be able to send reports by email: When you click the "Send by mail" button, the user will be asked to configure the message through a convenient modal window: Printing in Blazor WebAssembly WebReport now allows you to print reports in Blazor WebAssembly. This feature is enabled by default, but if you need to disable it, just use the following code: ``` webReport.Toolbar.ShowPrint = false; ``` Your reports can now be printed directly from Blazor WebAssembly: Full list of changes --- [Engine] + added merging of text objects; + added the ability to change the shape of PictureObject; + added the ability to create custom line styles; * now working with fonts is done without blocking; - fixed text going beyond the boundaries of the TextObject when TextRenderer = HTMLParagraph; - fixed creation of fonts from PrivateFontCollection; - fixed incorrect text color in RichObject; - fixed a break between RichObject and image; - fixed a bug when the focus was lost from the DateTimePicker object if it had the DetailedControl property specified; - fixed a bug in barcodes (display on HiDPI, export to PDF); - fixed indentation in HTMLTextRenderer; - fixed incorrect RichObject breaks; [Designer] + added the “Show progress window” property to the designer settings; + added the ability to configure hotkey combinations; * updated checks for links; links with spaces are now processed correctly; - fixed the appearance of extra lines when scaling a RoundRectangle of small size; - fixed slash encoding in Barcode 93 Extended; - fixed deleting a link when merging dictionaries; - fixed a bug with the choice of date or time formatting in the Hungarian localization; [Preview] - fixed incorrect size of the page border when the page height or width is infinite; [Exports] + implemented saving of each image in a separate thread; + added missing links to event handlers in exports to Excel 2007, Word 2007, and RTF; + added a new property for scaling barcodes when exporting to ZPL; + added selection of group by which the report will be divided into sheets in Excel 2007; + added the ability to disable grouping of sheets when exporting to Excel 2007; + added the use of wrap mode for texture fill when exporting to SVG; * when exporting to cloud storage, the window automatically closes after receiving the authorization code; - corrected private font collections; - fixed error in parsing the GSUB table; - fixed incorrect export of DashDot, DashDotDot, and Double object border styles to PDF; - fixed a bug when the numbers in the Gauge were displayed blurry during HTML export; - fixed calculation of the ContentMD5 header in S3 export; - fixed incorrect positioning of text when exporting to ZPL; - fixed incorrect export of GaugeObject to PowerPoint 2007; - fixed incorrect export of RadialGauge with filling in layered export in Word 2007; - fixed incorrect export of RadialGauge with filling in non-layered HTML; - fixed display in "Clamp" transfer mode for texture fill when exporting to SVG; - fixed the change in text size when using HTML tags in Excel 2007 export; - fixed the incorrect behavior of HTML tags with tabs when exporting to Excel 2007; - fixed the problem of reducing the quality of the watermark when exporting to PDF; - fixed a bug with incorrect indents when exporting to tables in Word 2007; - fixed image positioning in CheckBox when exporting to Word 2007; [WebReport] - support for .NET Standard 2.0 has been removed in FastReport.Web; - fixed an error when exporting in the Blazor application; - fixed ignoring Margin when printing with PrintHtml in WebReport; [.NET Core] - fixed a bug when the text width was incorrectly calculated when exporting to PDF; [Demos] - fixed a bug in displaying the navigation menu after minimizing Demo New; [Extras] + added Variant conversion to CLR types in MySqlDataConnection; + added FastReport.Data.Odbc plugin; + added support for FastReport.WPF for FastReport.Data connector plugins; * changed the behavior of the message about duplicate names in a request; - fixed the automatic creation of parameters in a request. ### Updating .NET products to 2024.2 version URL: https://www.fast-report.com/news/fastreport-net-2024.2 Summary: From version 2024.2 you have access to a new report generator with Avalonia UI, improvements in exports, support for HTML Plugin for Core.Skia. From version 2024.2 you have access to a new report generator with Avalonia UI, improvements in exports, support for HTML Plugin for Core.Skia. We are pleased to present you the long-awaited update for the entire FastReport .NET component line. In this release, you can expect a new report generator with Avalonia UI support, improvements in data exports, HTML Plugin support for FastReport.Core.Skia, and, of course, the discontinuation of support for .NET Standard 2.0 - 3.1 and .NET 5. New FastReport Avalonia component The FastReport .NET component lineup has introduced a new addition — FastReport Avalonia . This is a versatile library that enables report creation when developing cross-platform applications using Avalonia UI. This component allows for the development of applications with a unified user interface for macOS, Linux, and Windows. FastReport Avalonia is compatible with x64, x86, and arm64 processor architectures. It supports Avalonia UI, .NET 6 and above. FastReport Avalonia is part of the unified FastReport ecosystem in C#. Reports created in other products will work in FastReport Avalonia and vice versa. The product includes the report development core, designer, and viewer with a familiar interface. The report designer looks like this: And this is how the viewer looks like: For more information about the new component, please read the articles. New opportunities ReportPage object's PageCreate event The ReportPage has a StartPage event, which is triggered before the page is rendered. This event is called once for each template page in the report. Now, there is a new event called PageCreate, which is triggered when a page is created in the prepared report. Unlike StartPage, it is called more frequently, for each prepared page that corresponds to a template page. Both events can have their handlers assigned, allowing you to perform actions in addition to the standard ones. Read more about PageCreate in the article. Export improvements in Word 2007 Word export has undergone significant changes. Its performance has been improved, resulting in faster operation. New options have been added, such as "Keep Line Height" and "Use Headers and Footers of Word Pages". Additionally, we have fixed various bugs that had a significant impact on the functionality of the export. Export of hyperlinks and bookmarks to SVG With this update, hyperlinks and bookmarks of report objects are also exported to SVG format images. PostgreSQL functions and views When connecting to Postgres databases, you have the ability to use function and view data in your reports. To do this, use the FastReport.Data.Postgres plugin. HTML Plugin support for FastReport.Core.Skia FastReport.Core.Skia has now support for HTML Plugin. Now you can easily embed HTML content in your reports, enhancing their creation and presentation. To use this functionality, install the FastReport.Plugins.HtmlObject package using NuGet. Changes in Blazor WebAssembly Webcil support for .NET 8 Starting with .NET 8, by default, all libraries necessary for operation are packaged in the Webcil format (.wasm) instead of the usual.dll . This is a more secure and web-friendly format ( see more ). However, to compile the report script we must use these libraries. Previously, we advised our users to disable packaging in .wasm. Starting from the current version, FastReport.Blazor.Wasm can work with Webcil resources and use them to compile a report script without preliminary settings, everything happens automatically. Automatic addition of required SkiaSharp resources Previously, one of the requirements for using FastReport.Blazor.Wasm was that users had to manually add the necessary SkiaSharp and HarfBuzzSharp resources to their Blazor WebAssembly projects. The main issue was that these resources varied depending on the .NET version and the use of multithreading in WASM. Users had to manually select which libraries they needed, which caused a lot of complexity. Starting from the current version, FastReport.Blazor.Wasm can determine the resources needed depending on the environment, and apply them to your application automatically. However, if you still need to select the required resource manually, then you can disable automatic behavior by adding to your .csproj project the following code: ``` False ``` Removal of support for .NET Core 2.0, 2.1, 2.2, 3.0, 3.1, .NET 5 To cover an increasing number of technologies continually being added to the .NET world, we have decided to drop support for the outdated .NET Standard 2.0 - 3.1 and .NET 5 compatibility layers in our libraries. The minimum supported version is now .NET 6, and the minimum supported framework is .NET Framework 4.6.2. Read more about the changes in the news. Full list of changes [Engine] + added OnCreatePage event for the ReportPage object; * now, when converting RTF, insignificant spaces after tabs are discarded; - added exception handling if the contents of the RichObject are incorrect; - removed top and bottom padding when splitting TextObject between pages; - fixed vertical indents in RichObject; - fixed the display of a row following a row with a column union; - fixed an exception when preparing a report with a TableObject containing MSChartObject; - fixed loss of spaces in the RTF parser; - fixed display of the bottom border line when using GrowToBottom; - fixed support for the Portuguese language in the RTF parser; - fixed a bug when the Report.IsPrepared parameter returned an incorrect value when preparing a report asynchronously; - fixed translation of RichObject to TableObject; - fixed error when printing with different pages selected; - fixed IndexOutOfRangeException when executing Graphics.Path.AddBeziers; - fixed vulnerability with the ability to call JS code from a hyperlink; - fixed default tab setting when converting RTF; [Designer] + added interaction with FastReport Cloud in the Community edition; + added the Contains (string , string) function, which determines whether a string contains a substring; * changed the text of the warning message about duplicate parameter names in the query wizard; *replaced the error with a warning form about parameters with the same names in the SQL query; *changes in SwissQR: the processing of the "Amount" field has been changed; the "Currency" field is now a text field; added processing of data from the database in the fields of information about the Recipient, Payer and in the "Link" field; - fixed Datamatrix brush color; - fixed errors in the PictureObject editor; - fixed a bug in the format editor; - fixed a bug when resizing the dialog form; - fixed the drawing of a rotated ITF14 barcode; - fixed a bug with the operation of the "select all" keyboard shortcut; -fixed a bug in resetting the format when changing an expression; - fixed errors with the separation of source data into lines, both separator options (\r\n and \n) are now supported; - now during the QR code generation process, extra \r\n characters at the end of the line are removed; - fixed NullRreferenceException when editing the SelectCommand of the data source table; - fixed text scrolling in AdvMatrix; - fixed context menu of the RFIDLabel object; - fixed the band title in the classic band display mode; - fixed a problem when using the hh:mm time format; - fixed a bug leading to System.NullReferenceException when connecting to JSON; - fixed a bug when resizing objects while holding down the Shift key; - fixed an exception that occurred when using DontEditCode; - fixed incorrect behavior of lines when changing the Height property for a horizontal line or the Width property for a vertical line if the Diagonal property is set to False; [Preview] - fixed a bug with the search dialog in the preview; - fixed rendering of report objects outside the page; - fixed incorrect display of superscript or subscript text for RichObject if such text is at the beginning of the line; - fixed display of vertical paddings in preview when using the LineHeight property; [Exports] + added the option "Use Headers and Footers of Word Pages" when exporting Word; + increased speed of export to docx; + added the "Keep Line Height" option to export to Word 2007; + added export of hyperlinks and bookmarks to SVG; - fixed error in exporting a rotated svg image to pdf; - fixed a bug when images with a transparent background were incorrectly exported to PDF of the PdfA_1a standard in FastReport.Skia; - fixed font reset in an empty cell after exporting a report to Word; - fixed a bug with incorrect export to a JSON file; - fixed a problem with exporting to Word 2007 when using a watermark and the "Page Title" band with a system variable; - fixed a bug in svg export (hangs if text contains incorrect cr/lf sequences); - fixed incorrect calculation of row height in a table when exporting to Excel; - fixed error in exporting vector graphics to PDF; - fixed error in SVG export (table with merged cells); - fixed opening of exported reports in Word 2007; - fixed incorrect black background when exporting RichObject with image to layered HTML-export; - fixed the value of the paddingNonSeparatePages variable in ImageExport (OpenSource) to eliminate unnecessary padding; [WebReport] + added support for the Webcil format in FastReport.Blazor.Wasm; + added dialog form title to WebReport; + added a detailed description of the report compilation error in the WebReport preview; * the logic of standard images in WebReport has been reworked. Now images are loaded directly into the report, rather than being loaded by a large number of requests from the server; - fixed a problem with editing tables in a document when exporting a report to Word 2007 via WebReport; [Extras] + added support of FastReport.Plugins.HtmlObject for FastReport.Core.Skia + added support for views and functions in the PostgreSQL connector (Extras/Core/FastReport.Data/FastReport.Data.Postgres); + added a new filter for selecting file extensions when connecting to SQLite, combining .db and .db3, with the first filter selected by default; - fixed import of plugins for FastReport .NET with TargetFramework net6.0 and higher; - fixed the issue of object alignment in a report that contains an HTMLObject plugin; [Mono] * changed the tooltip text in RichObject in Mono; - fixed maximum text length on code pages in the designer. ### Updating .NET products to version 2025.1 URL: https://www.fast-report.com/news/fastreport-net-2025.1 Summary: In this release, we have focused on implementing long-awaited features that greatly simplify the process of developing templates for reports. In this release, we have focused on implementing long-awaited features that greatly simplify the process of developing templates for reports. In this release, we have focused on implementing long-awaited features that greatly simplify the process of developing templates for reports. Now you can add a report page with a link, asynchronous report preparation with undo support, text rotation with TextRenderType.HtmlParagraph, text search in code editors, export to images for WebReport and much more. New Opportunities Adding a report page with a link In previous releases it was possible to add a page of another report to a report. This option can be found in the  "File->Open Page..".  By default, a copy of the page is added to the report. You can now enable the "Add as link" option, which will add a link to the page to the report rather than a copy of the page. This means that when you change a page in the original report, the changes will be reflected in all reports to which the page is added as a link. And vice versa, if a page is changed in one of the reports that has a link to it, it will be changed in the original report as well. Asynchronous report preparation Added the report.PrepareAsync() method, enabling asynchronous report preparation in addition to the existing synchronous report.Prepare() method. This method also supports CancellationToken , allowing users to cancel the report preparation process if needed, improving control and performance for large reports in non-blocking environments. This functionality may be further enhanced in the future, with new methods providing additional asynchronous access. IfNull function ``` object IfNull(object expression, object defaultValue) ``` There is a new function allows to avoid  System.NullReferenceException when evaluating expressions. The function has two parameters: the first is the expression to be evaluated, the second is the default value. If the expression can be evaluated, the function returns its result. If not, it returns the default value. Rotate text with TextRenderType.HtmlParagraph Added support for rotating text with TextRenderType.HtmlParagraph. Previously, text rotation was only available with other text renderer types. You can see examples of text rotation below. In addition, such texts are now correctly exported to PDF. Text search in FastReport WPF and FastReport Mono code editors Now you can search for text not only in FastReport .NET code editor, but also in FastReport WPF and FastReport Mono editors. An example of searching for text in FastReport WPF code: And in the FastReport Mono code editor: Changes in WebReport Localization support for Blazor WASM WebReport Introduced localization support for the WebReport interface in FastReport Blazor WebAssembly. Previously, localization was managed through file-based methods, which were incompatible with the WASM environment. A new method, webReport.SetLocalization(Stream) allows loading localization from a Stream, making it compatible with Blazor WASM applications. Image Export to WebReport Added export of the report to images. To display it in the list of exports, add the following code: ``` WebReport.Toolbar.Exports.ShowImageExport = true; ``` If necessary, you must enable the WebReport option to configure the export to images  WebReport.Toolbar.Exports.EnableSettings . After enabling it, you can click on the "gear" and change the settings in the modal window that appears. Full list of changes [Engine] + added PicturesInParagraph property to RichObject; + added method for asynchronous report preparation PrepareAsync(); + added converting of strings to dbtype compatible; + added print scale; + added decimal conversion to words in ToWords functions; + added locale identifier for Spanish is 22538 (Spanish - Latin America) and 3082 (Spanish - Spain (Modern Sort)); + a new IfNull function has been added for working with expressions. It returns the result of the calculated expression if it is not null, otherwise the specified default value; + implemented calculation of horizontal position of pictures in RichObject; + added the ability to send a request in the virtual-host-style; + added support for text rotation with TextRenderType = HtmlParagraph; + added the ability to use header bands for the "PrintOn" property of the Totals; * upgraded Oracle.ManagedDataAccess.Core in FastReport.Data.OracleODPCore; * methods GetConnection, OpenConnection and Dispose marked as virtual; * added null check for incoming value for Hyperlink.Value property; * static verification methods TryParse has been introduced into classes of QRCodes; - fixed text break issues; - fixed page visibility change after PageStart event; - fixed conversion to parameter type; - fixed checking of the report script for stop-words if it contained in the variable name; - fixed visibility of the bottom border of a text object with enabled GrowToBottom; - fixed border doubling when the grouped DataBand has the GrowToBottom option; - removed rendering of child clipPath tags in SVGPictureObject; - fixed a bug in FinishReport event; - removed invalid ability to add SubreportObject to ContainerObject; - fixed changing the CommandType of the request if it was set in GetAdapter; [Designer] + added ability to open page as link from another report; + added italic, bold, underline and strikethrough font styles to the span tag; + added a search in the TreeView by the character entered from the keyboard; + add a search function in the code editors in WPF and Mono; * added a check for duplicates of downloaded fonts; * replaced default property values in the constructors of CurrencyFormat, NumberFormat, and PercentFormat classes from fixed values to values from CultureInfo.CurrentCulture; - fixed incorrect position of Amiri, Cambria Math, DejaVu Math TeX Gyre fonts in the font selection drop-down list; - fixed a bug leading to System.NullReferenceException when saving borders via Border Editor; - fixed incorrect display of SVG-images in the designer; - fixed the display of variables declared in one line on the Code tab in the tooltips; - fixed page margins length in "ExtraDesignWidth" mode; - fixed the length of the Guides in the designer for long reports; - fixed a bug where the selected font was not displayed in the drop-down list; - fixed incorrect application of data formats; - fixed an error leading to System.NullReferenceException when deleting a band with a Subreport object; [Preview] + added properties Outline.Expand and Outline.Width in PreviewControl; - fixed index out of range when previewing empty SvgObject; - fixed closing of PreviewSearchForm after clicking the "Next" button; [Exports] + added the ability to combine all report pages into one when exporting to Excel; + added an option to use a custom format instead of general in Excel-export; + added strikethrough text formatting to Word-export; + added the MemoryOptimized option for Word-export, which enables the use of FileStream instead of MemoryStream; + added support for rotating text with TextRenderType = HtmlParagraph when exporting to PDF; * format display adjustments - format 'D' and 'MMMM yyyy' are displayed as dates (format 'MM yyyy' if possible), numeric format with negative pattern '-n' is displayed in standard Excel numeric format; * changed the export of the PictureObject border as an image in Word; * optimized memory consumption when exporting to PDF; * changed layout of table export to fixed; - fixed the issue with HTML tags rendering in HTML export; - fixed the export of negative PDF property values; - fixed the color of cell borders in the browser after exporting to Excel; - fixed border style of cell in Word and PowerPoint; - fixed export of pictures in header and footer to Word; - fixed bug with deleting temporary file; - fixed calculation of line-height when exporting to HTML; - fixed incorrect export of borders with double line style to PDF; - fixed a bug with transparency in HTML-Export; - fixed an issue where the <p> tag was incorrectly displayed during HTML-export; - fixed default value of "UseHeaderAndFooter" option in Word export; - fixed incorrect location of images in tabular export to Word; - fixed the row height of objects sets after TableObject when exporting to Excel; - fixed NullReferenceException when exporting font to PDF with alternative lookup of substitution; [WebReport] + added the ability to display the report name instead of parameters in the tab; + added  SetLocalization method for loading WebReport localization from a Stream; + added ability to export report to image format in WebReport; - fixed inheritance of "box-sizing" from custom application styles in WebReport; - fixed IndexOutOfRange exception when previewing a WebReport; - fixed a bug that caused the WebReport.Debug property to not display error information in the report when enabled; - fixed a bug where a NullReferenceException exception could occur when clicking a tab in WebReport; - fixed reset AdditionalFilter in WebReport; - fixed WebReport printing with pages in landscape orientation; [Online Designer] + added a method for updating the table; - fixed previewing of empty SVG object in Online Designer; [.NET Core] + added methods for MS SQL stored procedures in FastReport Core; [Common] + added a new method for setting an parameter expression via code; + added a timestamp when signing installs; [Extras] + added ability of connection to stored procedures in Oracle; * updated the Firebird.Client version to 10.0.0; * updated vulnerable packages Npgsql(Postgres) and System.Data.SqlClient; * changed the text of the error message when pressing the "Advanced" button in the connection to Linter; - fixed a bug with missing menu in the designer of forms for the Report object; - fixed a bug with "character varying" type of Postgres; [Demos] - fixed demo-report Barcode.frx. ### Updating .NET products to version 2025.2 URL: https://www.fast-report.com/news/release-fastreport-net-2025.2 Summary: In version 2025.2 appeared: .NET 9, the FastScript library.NET, an import plugin from Word, a connector to Apache Ignite, improvements to the designer and exports, new features in WebReport. In version 2025.2 appeared: .NET 9, the FastScript library.NET, an import plugin from Word, a connector to Apache Ignite, improvements to the designer and exports, new features in WebReport. Meet the new release 2025.2  for supply options FastReport .NET : WinForms , WPF , Avalonia , Mono , WEB , Ultimate . Support is waiting for you in this update .NET 9, a library for executing scripts in C#, a plugin for importing documents from Word, a connector to Apache Ignite, improvements to the designer and exports, as well as new features in WebReport. Don't miss the opportunity to update FastReport .NET and expand your capabilities! Import of Word documents The  FastReport .NET Ultimate component set now includes a plug-in that allows you to import Microsoft Word (.docx) documents. When you open such a file, it is converted into a FastReport .NET report template (.frx). Due to the large differences in formats, it is not always possible to completely match two documents. However, this plugin allows you to significantly reduce the time required to create a template based on an existing docx file. At the moment our plugin does not support: background highlighting of part of a line, Shapes, as well as nested vector graphics Vector Markup Language (VML) and OLE objects. You can read about the peculiarities of import and how to connect the plugin in the article. Read the article .NET 9 Support This platform improves application performance and adds many new features for your projects. There is more support in this update  .NET 9 for: FastReport .NET, FastReport.Core, FastReport.Core.Skia, FastReport.WPF, FastReport.Avalonia, FastReport.Web, FastReport.Web.Skia, FastReport.Blazor.Wasm. We have done away with binary serialization. BinaryFormatter caused a number of security issues and Microsoft in .NET 9 dropped its use. Our team has also removed the BinaryFormatter class from the source code. You can read more about it at this link. Learn more Report Designer Improvements Also in this version, several useful features have been introduced to simplify work with reports. In the Object Inspector, you can now quickly copy data from the list of object properties using the  Ctrl + C  hotkeys. This will help you easily transfer object properties between different parts of the document or even between different reports. In addition, it is now possible to copy totals and parameters while preserving the nesting hierarchy. This means that when copying complex data structures, their original organization will be preserved, avoiding  Connection to Apache Ignite With this update, a new plugin has been added that greatly simplifies the process of working with Apache Ignite databases when creating reports. This plugin allows you to directly connect reports to the specified databases, providing convenient access to the necessary data for analysis and visualization.  The Apache Ignite connector is implemented based on the .NET Thin Client Ignite.NET. It provides the ability to connect to Apache Ignite clusters, work with caches (including SQL tables) and process various types of data. In addition, the connector supports connecting to one or more Apache Ignite nodes. Node addresses are specified in  host:port format and separated by commas. Connection is possible with or without authentication (if authenticationEnabled is used in the configuration). The connector supports working with caches created as key-value and SQL tables. For caches with QueryEntity metadata, operations of getting the list of fields and their data types are supported. Read more in the article. Read the article Improvements of the preview window In OutlineControl we have added handy buttons with icons for minimizing and maximizing. These buttons were there before, but without icons. In addition, properties have been added that allow you to change the width and height of the scrollbars in the preview window. Export Improvements Added export of number, currency, date, time and percent formats to OpenOffice Calc (.ods).  This update also introduces a new paragraph export mode for OpenOffice Writer (.odt) format files. This makes it easier to edit generated documents and makes them more visually understandable to humans. The new export mode does not replace but complements the existing mode and extends its capabilities.   In addition, an “Autosize width” option for MS Excel export has been added. Will only work with certain values of text object properties: AutoWidth and AutoShrink properties are enabled; HorzAling property value is any except Justify. Changes in WebReport Search across the entire report Added text search for the entire report, similar to the desktop version of the Viewer, if a word is found on another page, the viewer will automatically switch to it. Search is available in WebReport with FastReport.Core, in WebReport for Blazor Server and WebReport for Blazor Wasm. You can control the display of the search button by using the property:  ``` WebReport.Toolbar.ShowSearchButton = false; ``` The highlighting color of the words found can be changed using the property: WebReport.Toolbar.SearchHighlight = Color.Red; Improvements in caching configuration for WebReport With the release of the new version, WebReport now has additional options for caching configuration. First, you can now set individual caching parameters for each specific instance of WebReport. Previously, only general settings applied to all reports were available, which could be inconvenient, especially if you needed to keep certain reports in memory longer. With the webReport.CacheOptions property, you can customize the cache retention time for a specific report. Secondly, there is more flexibility in setting the report cache retention time thanks to the  AbsoluteExpirationDuration and AbsoluteExpiration  options. Previously, only the CacheDuration  option was used, which was based on a sliding principle: if the report was used for a given amount of time, the timer would reset and the report would remain in memory. This could result in a report never being removed from the cache. The new parameters allow you to specify the exact time when a report should be permanently deleted from the cache, regardless of its usage. In this case, CacheDuration and the new parameters AbsoluteExpiration and AbsoluteExpirationDuration can be used together. ``` // Global settings for all WebReports services.AddFastReport(options => { options.CacheOptions.CacheDuration = TimeSpan.FromMinutes(10); options.CacheOptions.AbsoluteExpirationDuration = TimeSpan.FromMinutes(20); });   // Individual WebReport settings, which take precedence webReport.CacheOptions = new WebReportCacheOptions() { CacheDuration = // ..., AbsoluteExpiration = DateTime.Now.AddMinutes(30), // or AbsoluteExpirationDuration = // ... }; ``` Updated demo web application on ASP .NET Core We have updated our demo application to ASP.NET Core, so that the product pleases you not only with its functionality, but also with its appearance. The updated application is available at the link. Online demo Updated Online Designer Demo In addition, we have updated the  Online Designer  demo application, where you can view more examples of our reports, export them, and try the updated online designer on them. The updated application is available at the link. Try the demo Support of FastScript .NET Added ability to use FastScript .NET to run report scripts. FastScript .NET is a library for running C# scripts. It does not depend on CodeDOM/Roslyn and can be used in environments where code generation is restrictedя (Native AOT, iOS, WASM).  FastScript .NET is included in the following supply options FastReport .NET : WinForms , WPF , Avalonia , Mono , WEB , Ultimate . To use FastScript .NET in the FastReport .NET: in your application, add the  FastReport.Plugins.FastScript  nuget package; run the following code before the first use of the  Report  class: ``` FastReport.Code.CodeProvider.DefaultProvider = typeof(FastReport.Code.FastScript.FastScriptCodeProvider); ``` Now, all the reports will utilise FastScript .NET to calculate expressions and run the report script. FastScript .NET does not support VB.NET script language. The dynamic type is not supported too, some of "Advanced Matrix" functions will not work. Detailed documentation on how to work with FastScript .NET is available at this link. Online documentation Full list of changes [Engine] + added new scripting engine - FastScript .NET; + added support for vertical tabulation; + added import of DOCX files to FRX report template; + added support of encoding for Chinese (simplified) language when converting RTF; + added the ability to disable integration with FastReport Cloud ; + added GS1 Datamatrix barcode; + added the conversion of SkBitmap to a Bitmap and Image in FastReport.SkiaDrawing; - fixed error with RichObject (zh-tw codepage); - fixed a bug with simultaneous compilation of a report script when preparing reports in multiple threads; - fixed a bug when printing an empty matrix; - fixed bug when passing null value to a MS SQL query parameter; - fixed errors when compiling libraries under .NET 9; - fixed a bug leading to infinite loop when child band of "Page Header" or "Column Header" has "StartNewPage" property turned on; - fixed a bug leading to System.ArgumentException when connecting to MySQL; - fixed calculation of PrintableExpression of page; - fixed a bug leading to System.NullReferenceException in the Report.GetParameterValue method; [Designer] + added a possibility to copy data from the list of properties of an object using the keyboard shortcut Ctrl + C; + added the ability to copy totals and parameters, preserving their hierarchy; * in the window for opening the report page, it is still possible to select only a *.frx file; * in the Mono designer settings, the tab "Code page" with inaccessible settings was hidden; * changed the logic of style processing for .rtf files when opened in the designer; - fixed a bug where the image of PictureObject disappeared after canceling changes in the designer when editing a prepared page; - fixed a bug with the search filter in the data tree that reset the current search state; - removed the "New Dialog" context menu item in the Community version, which when selected resulted in an unhandled exception; - fixed a bug when running preview from a designer; - fixed System.InvalidOperationException when deleting a data source column when that column no longer exists in the database; - fixed reading the GS1 DataMatrix barcode as a DataMatrix; - fixed a bug with selecting layout of band columns in "Data Band Column Editor" window; - fixed deleting objects and categories from the sidebar in the designer; - fixed a bug with displaying icons that appeared in version AvaloniaUI 11.1; - fixed deleting objects and categories from the sidebar in the designer; - fixed a bug when adding IsNull function via "Text editor" added an extra comma; [Preview] + added a button to send a report by email when using MAPI in a preview in WPF; + added collapse and expand buttons with icons in OutlineControl; + added the ability to change the width and height of the scroll bar through the code; - fixed disabling the button to save the prepared report in the preview; - fixed disabling the "Storage" tab in the report saving menu in the preview; - fixed bug with "Advanced Matrix" when filters are missing; - fixed a bug where the print form did not appear in the preview when pressing Ctrl + P; - fixed a bug with incorrect paper size for printers without "Auto paper size" option, when clicking "Settings" and then "Advanced" buttons in "Print" window; [Exports] + added export of "Author" property in export to PDF/A; + added support for HTML non-breaking space tag when exporting to Excel; + added export of number, currency, date, time, and percentage formats to OpenOffice Calc (.ods); + added "Shrink to fit" option for export to MS Excel; + added paragraph export mode in OpenOffice Writer export (.odt files) * now, when exporting Pages with ExportAlias property to Excel, suffix "-n" will not be added to sheet name if it's possible; - fixed a bug where the font name was exported without quotes to HTML; - fixed a bug in FR.Core with some user fonts; - fixed a bug in HTML-export when the barcode border was not displayed; - fixed the error of opening files when exporting a report with special characters to ODT and ODS formats; - fixed incorrect display and export of some unicode symbols in Skia/Avalonia; - fixed export of TableObject fills to PDF; - fixed export of TableObject and page fills to HTML; - added export of height for the merged cells in Excel export; [WebReport] + added WebReport search; + added WebReport WASM search; + added .NET 9 support for FastReport.Blazor.Wasm; + added the ability to create a connection to a stored procedures in WebReport; + added the ability to configure caching for a single WebReport using the WebReport.CacheOptions property; - fixed an issue that made it impossible to change the DataConnection after it was created in OnlineDesigner; - fixed converting of TextObject to SVG when preview in Blazor; - fixed support for the Size of the CommandParameter; - fixed rendering of page toggle buttons in Blazor when they are disabled; - fixed a bug when the value of the RouteBasePath parameter was not taken into account when setting up WebReport; [.NET Core] + added a filter for connection tables; + added a JsonConnectionType class for use in the JsonDataConnection.GetConnectionType method and GetConnectionType() and GetParameterType() methods; - fixed a bug with encoding when connecting of CSV data file for report in .NET Core; [Common] * changed width of "About..." window; [Extras] + added connection to Apache Ignite; [Demos] + added UsedPackages.version file for WPF packs; - fixed Avalonia and WPF name in demo. ### Updating .NET-based products to 2023.3 version URL: https://www.fast-report.com/news/fastreport-net-2023.3 Summary: We are pleased to present you with the long-awaited update, in which we have given special attention to user experience and the software code quality We are pleased to present you with the long-awaited update, in which we have given special attention to user experience and the software code quality We are pleased to present you with the long-awaited update, in which we have given special attention to user experience and the software code quality. In this release, we tried to listen to the requests of our users. Starting from version 2023.3, we added the following: a new object—RFID tag, support for WebP images, asynchronous report viewing, the toolbar in the context menu, and much more. The changes are available for the following products: - FastReport .NET , - FastReport WPF , - FastReport Mono , - FastReport Desktop , - FastCube .NET . New features New RFIDLabel object The new version includes a new object—an RFID tag. It enables the identification of goods and closely resembles a barcode, but unlike the barcode, it uses radio signals. This allows for scanning a large number of items in short time intervals. The tag contains 4 data banks: a reserved bank for storing access and destruction passwords, an electronic product code bank, a tag identifier bank, and a user data bank. In the FastReport .NET product lineup, the RFID tag is represented as a report object. The tag can be customized using a user-friendly editor, accessed by double-clicking. RFID tags can be created by some Zebra printers, therefore, in addition to the tag object itself, we implemented their export to ZPL. For correct export, the RFID tag must be in a single copy on the page. Read more in the article . Support for WebP images There is now a plug-in that supports images in the WebP format. Now you can upload them into a PictureObject using the editor in the report designer and from code. FastReport.Skia supports WebP images without a plugin, but they are converted to PNG format when uploaded. You can find details about the format and instructions for using the plugin in this article. Preview in the designer window and asynchronous report viewing Now, you can launch a report preview in the designer window when using the designer in your application. Previously, the preview always started in a separate window. To do this, add the following line in your code: ``` Config.DesignerSettings.EmbeddedPreview = true; ``` It will look like this: In some cases, such a mode can be more convenient. We have also introduced asynchronous methods for report preparation and viewing: Report.PrepareAsync() and Report.ShowAsync(). They can be used when handling large reports. In that case, you can use the preview window while the report is being prepared. This way, the user will not have the impression that the application is frozen or unresponsive. The toolbar in the context menu The context menu has been improved when right-clicking on an object. A toolbar appeared at the top, which contains frequently used items, such as edit, cut, copy, paste, etc. The menu used to look like this: The new menu has become more compact and ergonomic: Export to S3 We have added the ability to upload prepared and exported reports to the Simple Storage Service (S3 for short). The new export is located in the "Storage" tab of the prepared report saving menu. During the first export, you will need to enter registration data in the authorization window. You can get the necessary keys in your S3 account settings. You can find more details in the service documentation. After successful authorization, you will see an export window. Here you can select the bucket to save, type, and file name. If you select a file type other than "Ready Report", then the settings for the corresponding export will become available. Read more in the article. Ability to customize barcode font settings The "Font" property is now available for "Barcode" objects. It allows you to set the font parameters used when displaying barcode texts. The default font is Arial, the same font used in previous versions. Now you can choose a different font, change its size, style, etc. As a result, you can create, for example, such barcodes: However, you should be careful with font settings. Not all scanners may be able to read such barcodes. "Convert general format to text" option when exporting to Excel 2007 Excel 2007 has several data formats, including two that are very similar: general and text. General is the default. In most cases, numbers in this format appear as entered. But if the cell width is not enough to display the entire number, then it is rounded. The text format always displays data as entered. FastReport .NET also has several formats, for example, general, numeric, date, and many others. The appropriate format is selected during export, the numeric is converted to numeric, and the date remains a date. The general format in FastReport .NET is also used by default. It displays the data exactly as it was entered. The general format is System.String. In turn, there is no separate text format in FastReport .NET. Excel 2007 export has a new option that allows you to convert the FastReport .NET general format to Excel text format (general is exported as general by default). Reports created in previous FastReport .NET versions will be exported in the same way in the new version since this option is disabled by default. Support for partial report compilation FastReport.Core, FastReport.Core.Skia and FastReport.CoreWin now enable partial compilation of a report to speed up its preparation if the report script has not been changed in the report and there are no objects that do not support partial compilation. You can enable it with the following command: ``` FastReport.Utils.Config.CompilerSettings.ReflectionEmitCompiler = true; ``` Enabling Reflection.Emit Compiler does not cause any performance degradation. If the new compiler cannot be used in the new report, it will simply use the standard procedure without harming the report. New WebReport features Improvements in WASM Previously, you could only view reports opened in the browser using our FastReport.Blazor.Wasm library. This update added support for exports. Now users can export the resulting reports to various formats, just as is in regular WebReport. Also, Reflection.Emit compilation accelerated the loading and preparation of reports without a script in WebAssembly. Toolbar personalization Now you can create elements, such as buttons, dropdowns, and input fields, and add them to the toolbar. These elements can have various options, including images, titles, and styles. You can also implement logic using JavaScript and C#. An example of adding custom elements to the toolbar: ``` var button = new ToolbarButton() { Title = "MyCustomButton", OnClickAction = new ElementClickAction() { OnClickAction = async (webreport) => { webreport.LocalizationFile = "MyLocalizationFile"; } }, };   var select = new ToolbarSelect() { Title = "MyCustomSelect", Items = new List { new ToolbarSelectItem() { Title = "MySelectItem", OnClickAction = new ElementScript() { Script = "console.log('My item is working')" } } } };   var input = new ToolbarInput() { InputType = "number", OnChangeAction = new ElementChangeAction() { OnChangeAction = async (webreport, inputValue) => { webreport.Report.Prepare(); webReport.Toolbar.Height = int.Parse(inputValue); } }   };   webReport.Toolbar.InsertToolbarElement(button); webReport.Toolbar.InsertToolbarElement(select); webReport.Toolbar.InsertToolbarElement(input); ``` As a result, these customized elements will appear in your toolbar after changes: Full changelog [Engine] + added new RFIDLabel object; + added GS1 automatic formatting for GS1-128 barcode; + added loading tables in cells of other tables when converting RDL templates; + added Config.CompilerSettings.ReflectionEmitCompiler property, which, when enabled, speeds up report preparation if the script has not been changed (works only in .NET Core/.NET); + added the ability to configure barcode font using the new "Font" property; * improved work with private font collections; * demo version—5-page limit removed; the text is randomly replaced with "Demo version"; - fixed an infinite loop when calculating a parameter expression equal to this parameter; - fixed the problem of reading the DataMatrix barcode by a mobile scanner; - fixed a bug when line strikethroughs were incorrectly displayed during manual transfers; - fixed the calculation of the shift of translated RichObject objects; - fixed conversion of empty Variant to other types; - fixed deletion of a column after which the column data remained in the report; - fixed the work of the VisibleExpression property for matrix and table rows and columns; - fixed deletion of fonts that are no longer present from the font_hash dictionary; - fixed a bug with unsorted tab stops in RichObject; - fixed a bug with parsing GSUB table leading to exception; - fixed loss of stream stop when exporting to PDF with the "Text in curves" option, resulting in System.StackOverflowException; - fixed a bug with loading object borders when converting RDL templates; - fixed deletion of the first three characters in the GS1-128 barcode; - fixed coding table for Code93 Extended barcode; - fixed text encoding in DataMatrix barcode; - fixed text rendering bug during word break due to lack of space; - fixed RightToLeft text conversion when the ConvertRichText option is enabled; - fixed line break in HtmlTextRenderer; - fixed a bug when page columns were printed over band columns; - fixed white highlighting of empty lines between text paragraphs and some paragraphs in RichObject when using fill; - fixed selection of text parts with white color in RichObject with ConvertRichText = true; - fixed ignoring ConnectionString if ConnectionStringExpression returned null; - fixed indents of translated text objects from RichObject; - fixed positioning of objects when translating RichObject; - fixed import of tables from JasperReports; - fixed System.NullReferenceException when clearing TableObject; - fixed horizontal image alignment in RichObject when ConvertRichText = true; - fixed System.NotImplementedException when the TextObject tab stop is negative; - fixed null conversion if the expression contains a function; - fixed System.ArgumentException when JSON data source host has an empty CharacterSet; - fixed positioning of TableObject when translating RichObject; [Designer] + added ability to take column names from the first row in Excel connection; + added categories for "Barcode" objects; + added Config.DesignerSettings.EmbeddedPreview property for report preview in the designer window; + added the "Other" category for dialog controls in the "Objects" panel; + added the ability to display the translated object in the Online Designer; + added the procedure selection page in the form of the data connection wizard; + added the toolbar to the context menu; + added the ability to use expressions in the "Payment amount" field in the SberbankQr editor; + added parsing of parameters from SQL query; + added a warning when the names of the request parameters match; + added a check for the existence of a file when it is changed in a CSV connection via the CsvFile property; * changes in the "Query Builder" interface; * updated "Data Connection Wizard." Improved interface, fixed bugs, and increased speed; * change in the rendering of tooltips with coordinates/sizes in the designer; - fixed the problem of connecting to CSV via URL; - fixed a bug in the "Save as ..." operation for a file opened from the cloud; - fixed the "Map" object in NET 6.0 (empty polygon labels); - fixed error with reading values from the designer configuration file; - fixed a bug when a new report page was created after double right-clicking on the "Code" tab; - fixed an error after closing the preview window with empty values of numerical parameters; - fixed a bug when the designer did not respond during the authorization process; - fixed bugs in the Gauge object editors; - fixed System.NullReferenceException when merging dictionaries that include parameter connections; - fixed text highlighting in RichObject when using property ConvertRichText = true; - fixed a bug with the order of formats when there are several expressions in a text object; - fixed a scaling error in the designer settings window on the "Plugins" tab; - fixed incorrect scaling of the data source selection form in Visual Studio; - fixed incomplete display of pages with infinite width in the preview page adding; - fixed a bug with password-protected report loading; - fixed problems with scaling some controls; - fixed a bug when fields are selected for unselected tables during connection editing; - fixed a bug when all tables were selected during connection editing, even though only some of them were actually selected; - fixed a System.IO.FileFormatException when using an incorrect XML report on the FRX page; - fixed incorrect work of font settings in MSChartObject when the scale is more than 100%; - fixed a bug when connecting a CSV database via URI; - fixed a bug when running a report with MSChartObject and SparklineObject on a DataBand with the CanBreak property enabled; - fixed problems with displaying SVG in the designer; - fixed a bug with the font size in the "Report Tree" window; - fixed the behavior of the "About" window when changing scaling; - fixed ignored MSChartObject rendering if Title is missing; [Preview] - fixed text object horizontal alignment when AutoWidth = true; - fixed problems with displaying SVG in preview; [Exports] + added export to S3; + added export of page borders during image export; + added "Use page breaks" option in the form of HTML export; + added option to enable or disable adding bookmarks to each page when exporting to Word 2007; + added creating a new sheet when the number of lines approaches the maximum allowed on one Excel 2007 sheet; + added the "Convert general format to text" option in Excel 2007 export; + expansion of font names; + improved font packaging subsystem for PDF export; * speeded up export to PDF; * optimized export of interactive forms to PDF; - fixed a bug when LineHeight was ignored when exporting using Skia; - fixed multi-threaded export to PDF and private font collections; - fixed loading of fonts with traditional Chinese characters; - fixed kerning of right-to-left fonts when exporting to PDF; - fixed a bug where fonts smaller than 10 were displayed incorrectly with the ConvertRichText property enabled when exporting to RTF; - fixed kerning errors in PDF export; - fixed a bug in PDF export in "Text in curves" mode at high monitor resolution; - fixed a bug when a dark frame was drawn for some objects in PDF export; - fixed export of font families registered in FastReport.Utils.FRPrivateFontCollection; - fixed display of HTML , and tags when exporting to RTF; - fixed a bug where the export of a report with pictures for Skia ended with an error; - fixed export of footer objects to RTF and DOCX; - now single-byte spaces do not disappear from the string after export to Excel 2007; - added extra text breaks when exporting to CSV; - fixed a bug with extra separators when exporting to CSV; - fixed a bug when fonts were damaged during multi-threaded export to PDF; - fixed a bug when hyphen characters were not processed when exporting to HTML; - fixed incorrect work of hyperlinks in RichObject when exporting to PDF; - fixed row height multiplier in RTF export; - fixed double saving of report in Google Drive; - fixed API call for saving reports in OneDrive; - fixed problems with displaying SVG when exporting to PDF; - fixed errors in the export tree; - fixed export of text with HTML tags to Word 2007; [WebReport] + added report shadow in WebReport; + added support for report export to Wasm; * changed Toolbar behavior for one-page reports; * changed the behavior of printing a report from a browser in WebReport. Now a print page closes automatically; - fixed a bug when click events in WebReport did not work; - fixed incorrect export to Word 2007 in web reports; - fixed a bug where some report objects (for example, RichObject) might not be displayed in the Web designer; - fixed a bug where a single-page report did not export if settings were used; - fixed a bug when the report was not updated when the parameter was changed; [.NET Core] - fixed a bug when the InvariantGlobalization option was enabled; [Demos] * changed the script in the "Sort Group By Total" template for the correct work of the report and display of totals when using the "Can grow" and "Can shrink" properties of the "Group Footer" band; [Extras] + added export of page borders when exporting with PDFSimpleExport; + added the ability to connect to MariaDB using the MySqlConnection plugin; + added .db format to the file filter for connecting SQLite; + added a plugin with support for images in WebP format; * RPTImportPlugin updated to .NET Framework 4.7.2; - fixed a bug resulting in System.IO.FileLoadException when connecting to ClickHouse and MongoDB; - fixed the data source selection form, which did not open in the foreground. ### Updating Delphi and Lazarus products to 2023.3 version URL: https://www.fast-report.com/news/fastreport-vcl-2023.3 Summary: With version 2023.3, NextCloud transport was added, the report engine was changed, and support for new types of electronic signatures appeared. With version 2023.3, NextCloud transport was added, the report engine was changed, and support for new types of electronic signatures appeared. We are pleased to announce the release of a new version of Delphi and Lazarus products. In this update, we paid special attention to ergonomic design and component performance. With 2023.3 version, we have added a new NextCloud transport, changed the operation of the report engine, added support for new electronic signatures, and much more. Changes (different for each product) are available for the following products: FastReport VCL , FastScript , FastConverter .FP3 , FastQueryBuilder , FastReport FMX , FastReport Viewer , FastCube VCL , FastCube FMX . New demo reporting center For convenience, we have combined all demos into a single demo center. It is available with the new FastReport product installer. Changed the operating mode of the report engine The new mode allows you to automatically select the font size to match the size of the “Text” object and its content (ContentScaleOptions property). Selecting the size to match the static dimensions of the object allows you to reduce the text if there are physical limitations when printing. You can find an example of use in the article at the following link . Dynamic font sizing allows you to control the font scale that is applied to dynamically resizing or stretching objects. The report engine reduces the contents of such objects to fit the band on the current page. New resource localization editor With this update, you can edit language resources to suit your needs directly from the IDE. Thanks to the new editor, this has become as fast, simple, and convenient as possible. Full language switching at run-time. Now all language resources are updated immediately without the need to restart the report designer. Added new NextCloud transport  You can save and load reports from your corporate storage directly from the designer, as well as from code. Read in the article how to set up a connection. New types of electronic signatures When exporting to PDF format or working with random files, you can sign documents using the following electronic signatures: CADES_T and CADES_X_LONG_TYPE_1. We have also added partial font embedding in PDF export. It allows you to reduce the size of the PDF export. FastCube for Lazarus has added support for integration with the Chart component for the FastReport integration package. Full list of 2023.3 changes --------------- [Designer] - Fixed drop-down InPlace editor in the DPIAware application. [Engine] + Added the ability to automatically select the font size to match the size of the “Text” object and its content (ContentScaleOptions property); + Added language resource editor; + Added frThreadSynchronizeProc variable to override the default synchronization procedure in FastReport; + Added implementation for UP/DOWN/MOVE mouse events for report script objects; + Added support for signatures CADES_T and CADES_X_LONG_TYPE_1; + Added TfrxHtmlView.LoadFromString method to RTTI. + Added compatibility of old behavior in TfrWideStrins; + Added correction of the height of the last line of text to the tmDescent value (required for some fonts); * Improved language switching in the report designer; * Changed the TfsScript.OnSetVarValue event; * Changed the order of finalizing datasets; - Fixed work of TfrLocalizationController in FastReport FMX; - Fixed printer font scaling in FastReport FMX for RAD 11.3; - Fixed a bug where the frxIBO package did not compile in some IDEs; - Fixed a bug when the dclfqbFIB package was not compiled; - Fixed the name of the groups in the component palette; - Fixed a problem with data when editing a chart in a report for integration with FastCube; - Fixed behavior of HideIfSingleDataRecord with delayed expressions; - Fixed chart rendering in Lazarus; - Fixed TfsCustomHelper in debug mode; - Fixed out-of-range issue in FastCube; - Fixed a bug with case-insensitive keys in resources; - Fixed post-processing of expressions for paReportFinished/paGroupFinished when the ReportSummary/GroupFooter band is visible or invisible; - Fixed Job method TfrLocalizationController.ShowLocalizationEditor; - Fixed a problem with a blank page when duplex printing is forced in the printer settings, and single-sided printing is set for the report page; - Fixed inability to compile the project for FMX versions below Tokyo; - Fixed FastCube compilation for C++ Builder FMX; - Fixed behavior of the TfrxHTMLView.DefBackground method when the value is clNone; - Fixed a bug in FastScript when adding nested components via AddComponent; - Fixed an error in determining the SVG format with a BOM header; - Fixed several GDI descriptor leaks; - Fixed TeeChart package names in FastCube package templates; - Fixed inheritance of styles in the report template. [Exports] + Added the ability to partially embed fonts; + Added LineSpacing support for PPTX export; - Fixed PDF export with CJK fonts; - Fixed a bug with multi-page HTML export when the image cache was cleared for each page; - Fixed work of PDF form fields with owner password; - Fixed substitution of font names; - Fixed application closing with PDF export; - Fixed export of time format in XLSX export; - Fixed SMTP in TfrxMailExport. [Lazarus] + Added a new integration package with LazChart; - Fixed PDF export dialog for Lazarus; - Fixed visual errors in the report designer for Lazarus; - Fixed the designer reopening with TfrxLazSqliteQuery; - Fixed Unicode output from the database for Lazarus; - Fixed barcodes in Linux. [Other] + Added support for FibPlus, IB Objects, and BDE in the installer; - Fixed description of the FastCube FPC package; - Fixed a bug with using an OLE object in FastScript code; - Fixed FastCube FMX packages; - Fixed chart templates for FastReport Demo for compatibility with TeeChart 2023.38. [Preview] + Added TfrxPreviewTabs.CurrentTab property; - Fixed the HighlightRuleEditor form in FastCube; - Added the “Search” item to the preview context menu. [Report object] + Added TTeeFont and TteeShadow classes to RTTI for diagrams; * Changed the DefaultDatabase class from TFDConnection to TFDCustomconnection; - Fixed rotation of 2D barcodes; - Fixed list of modules in FireDAC; [Resources] * Updated Serbian resources; * Updated Arabic resources; * Updated Bulgarian resources; - Fixed string resource numbers. [Transport] + Added NextCloud transport. ### Updating Delphi and Lazarus products to 2024.2 version URL: https://www.fast-report.com/news/fastreport-vcl-2024.2 Summary: This update to 2024.2 version includes improvements and fixes for our entire line of Delphi and Lazarus products. This update to 2024.2 version includes improvements and fixes for our entire line of Delphi and Lazarus products. This update includes improvements and fixes for our entire line of Delphi and Lazarus products. One of the main features of this update is the new package with visual components TfrTreeView. The new TfrTreeView allows you to quickly create your custom equivalents of TreeView, expanding the functionality of your application. Compared to the standard TreeView, our component has fast and convenient navigation, collapsing and expanding the tree of thousands of elements. This enhances the responsiveness of your application's interface for end users. And, of course, TfrTreeView is supported in both VCL and Lazarus! FastReport VCL You can experience the responsiveness of the interface in the FastReport VCL report designer when working with a large amount of data or objects, thanks to the use of the new TfrTreeView component. Support for GeoJSON and TopoJSON formats has been added to the map object. Use maps in whichever format is most convenient for you. Improved handling of digital signatures in PDF and other files. Our product allows for maximum flexibility in configuring digital signatures. You have access to the following settings: Signing method: FastReport, CryptoAPI, CryptoPRO Signature type: CAdES-BES, СAdES-T, CAdES-X Type 1. Time Stamping Authority servers. Certificate stores. Signature hash: md5, sha1, sha256. A mode of infinite width has been added for the dynamic table object. The size of the table grows depending on the data being output. In the preview window, you can see a page that fits all the table columns. Meanwhile, in normal mode, columns that do not fit on the sheet will be moved to the next page. Reports with detailed pages retain the states of the transmitted variables for each tab, allowing for individual reconstruction of each tab when updating parameters. A new property for linear barcodes, DigitsAutoFillMode, has been added. dafmLeftOnly fills missing barcode digits with zeros from the left side. dafmRightChecksum always adds a zero checksum when there is a shortage of digits required by the barcode standard. In this update, we have enhanced and addressed numerous issues with the HTML5, SVG, PDF, XLSX, and DOCX export filters. HTML5, SVG, and PDF exports are now closer to full WYSIWYG. The quality of DOCX and XLSX exports has been improved for table exports. An alternative path on Linux has seen overall improvements in operation under WINE on Linux. FastQueryBuilder Lazarus support has been added to FastQueryBuilder—now you can connect and use it in your Lazarus projects. FastCube The errors found were fixed and integration with the common code base was improved. FastReport FMX Added two new export DOCX and XLSX filters—export reports to the format you need. Starting with release, we will no longer support development environments released before Embarcadero RAD Studio 10.4 for the FireMonkey platform.  2024.2.0 version --------------- [Designer] + fixed SQL editor; - fixed autocompletion in memo syntax; - fixed a bug when Unicode characters could disappear when saving script code in .pas file from the report designer; - fixed TfrxRichView editor for 64 bits; - fixed scrollbars for TfrxSimpleSyntaxMemo; - fixed display of tooltips on the frxEditFieldDefs form; [Engine] + added support for infinite width for dynamic tables; + added support for GeoJSON / TopoJSON to the map object; + added new control TfrTreeView; + fixed a bug of compatibility with old aliases; + detailed reports save the states of the passed variables for each tab when using the DetailPage hyperlink; * added the ability to change the signature hash algorithm; * improved signatures for pdf and other files, improved consistency of signatures; - fixed an error in the position of the data set in the TfrxCustomLayer of the map object; - fixed update of field definitions after SQL changes; - fixed bugs when working with WINE; - fixed TfrxCustomQuery.SQLChangeHandler when destroying a complex report; - fixed a bug that could lead to a crash when exporting to BIFF8 (RS12, 64-bit); - fixed AV in FastCube when dragging a field from the filter zone to the Y axis and back; - improved synchronization with the old list of aliases and the new collection of field definitions; - fixed inherited parameters in the request; - removed duplicate Left / Top properties in serialization for components that are not internal DB components; - fixed type conversion for a field collection property in an inherited report; - fixed a bug in FastCube FMX when right-clicking on the drop-down list of measurements; - fixed a bug when using a dynamic table with manual construction on a page with several columns; - fixed behavior of alClient for diagonal TfrxLineView; [Exports] - fixed a bug when exporting in RTF format when the left position is reset to the coordinate of the left page margin; - fixed interactive Combobox in preview and pdf export; - fixed incorrect position of images when exporting xlsx; - fixed system colors in the xlsx export filter; - fixed scaling factor for images and text when exporting to docx; - fixed a bug that could lead to a crash in XLSX export; - fixed errors in HTMLDiv and SVG exports; - fixed array unlocking in XLS OLE export; - fixed pdf export errors; - fixed memo export with APAC fonts to SVG and HTML5 - fixed PDF/A export and vector export with PS_USERSTYLE; - fixed memo export with HAlign = haRight; [Lazarus] + added support for Lazarus in FastQueryBuilder; + fixed a list of paper without printers in Linux Lazarus; - fixed errors in exporting some objects in PNG mode in Lazarus; [Other] + the SmartMemo object with basic syntax highlighting has been moved into a separate package; + added RTL support to SmartMemo; - fixed certificate dialog; - fixed caret for SmartMemo in Lazarus GTK2; [Report object] + added a new linear barcode property DigitsAutoFillMode (dafmLeftOnly—fills missing barcode digits with zeros on the left side, dafmRightChecksum—always adds a zero checksum if there are not enough digits required by the barcode according to the standard); - fixed RTTI for TfrxHTMLView; - fixed incorrect clipping boundaries for the TfrxPDFView object in the preview; - fixed FireDAC DriverID; [Resources] * updated Portuguese resources. ### Updating Delphi and Lazarus products to version 2024.1 URL: https://www.fast-report.com/news/fastreport-vcl-2024.1 Summary: This update includes improvements and fixes for all Delphi and Lazarus products with Embarcadero RAD Studio 12 support. This update includes improvements and fixes for all Delphi and Lazarus products with Embarcadero RAD Studio 12 support. This update includes improvements and fixes across our entire line of Delphi and Lazarus products. All products have received updates and support from Embarcadero RAD Studio 12. Report designer improvements The new "Text" object editor features highlighting of expression elements and tags, allowing for quick identification of expressions within regular text. With interactive bracket highlighting, you will no longer forget to close the bracket of an expression. Furthermore, the editor allows for word wrap during text editing. Note! This functionality is available in the Enterprise version and higher. Expression highlighting is available not only in the editor but for "Text" objects when editing a report template. New data field editor Data presentation is important. The redesigned Data Field Editor allows you to fine-tune the field definitions in the report designer. In the editor, you can update, reset, add, delete, and customize field properties. Properties allow you to assign objects that the designer creates automatically when dragging fields from the data tree, simultaneously linking them to the fields. Configure the report designer for efficient data handling. The new mode for updating the list of fields in the designer allows you to disable the auto-updating of fields and active data connections. Customize field definitions and use them in the report designer without being tied to a heavy database. Please note the change in the serialization scheme of built-in data sources! The internal properties of such objects are now fully serialized to XML in the report template. Such properties may not be readable on older versions of FastReport after they are converted to a new version. FastQueryBuilder FastQueryBuilder integration has become optional and is enabled when the appropriate components and packages are added. Enabling or disabling FastQueryBuilder no longer requires package recompilation. Transports We have added a new transport to S3 (AWS)—save and download reports from your enterprise storage. Read this article to learn how to set up a connection. Starting with release 2024.1, we will no longer support development environments released before Embarcadero RAD Studio 10.4 for the FireMonkey platform. Supported environments for the VCL platform remain unchanged. See the full list of changes Version 2024.1 --------------- [Engine] + Added support for Embarcadero RAD Studio 12; + Added the ability to optionally use FastQueryBuilder in FastReport; - Fixed the behavior of the virtual data set; - Fixed a bug in FastCube with RAD Studio 12 under x64; - Fixed HIDPI problems in RAD Studio 10.4; - Fixed incorrect font scaling in barcodes at HiDPI; - Fixed incorrect sizes of export filter dialog forms when changing DPI; - Fixed an error after editing a measure in FastCube FMX; - Fixed changing the selected line when switching the filter in the Localization Editor; - Fixed a bug in FastCube when calling the editor script function when double-clicking on a calculation field; [Designer] + Added a new Memo object editor with syntax highlighting (starting from the Enterprise version); + Added highlighting of expressions and syntax in the Memo object in the report designer workspace; + Added a new field definition editor (replacing the old alias editor); + Added the ability to specify the type of drag object when dragging data from the data tree; + Added the ability to disable auto-updating of the list of fields in the report designer; - Fixed a bug with the “Gradient” object style property in the Object Inspector; [Export] *Сhanged the use of Indy TLS in the email export filter; - Fixed positions of ligatures in languages written from right to left in the PDF export filter; [Lazarus] - Fixed a bug in the frxSQLEditorForm form; - Fixed syntax note error in Lazarus; - Fixed FastCube cross-editor in FastReport integration components; [Other] - Fixed the error “module FMX.ConverterFR3toFRFMX.pas does not exist in LibRSXX\FMX”; - Fixed the error “frx package does not contain the frxFileSignature module”; [Report object] - Fixed IBO package for RAD Studio 12; [Transports] + Added S3 transport; + Added support for AWS in S3-Transport; - Fixed default file extension when saving to clouds from preview; - Fixed opening reports from cloud storage. ### Updating HTMLObject as a plugin for FastReport .NET URL: https://www.fast-report.com/blogs/plugin-html-object-net Summary: Detailed instructions for using the new HTMLObject plugin, which uses splitting DOM HTML into FastReport report objects. Detailed instructions for using the new HTMLObject plugin, which uses splitting DOM HTML into FastReport report objects. Detailed instructions for using the new HTMLObject plugin, which uses splitting DOM HTML into FastReport report objects. Our company regularly receives requests for changes in products. This time, we have improved the display of content in a report, which is stored in HTML markup format due to certain circumstances. FastReport has a built-in object for visualizing content in HTML markup format—HTMLObject. It is still being improved, but it already solves many user problems. The previous implementation of HTMLObject could not be divided into FastReport report objects and was displayed only in HTML export. Therefore, we released a separate plugin for FastReport .NET Ultimate that uses the division of the HTML DOM into FastReport report objects. Each HTML markup object is translated into FastReport objects with a specified style, with the calculation of the required sizes, and with the possible page break. To use the plugin, you need to add the FastReport.Plugins.HtmlObject package to your project. Then register it using the following line of code: FastReport.Plugins.Html.HtmlObjectAssemblyInitializer.Init() After that, the necessary libraries will be automatically added to the project, based on the product used (FastReport .NET, FastReport.Core, FastReport.WPF, FastReport.Core.Skia). It's important to note that only a subset of HTML 4 tags and styles are supported. Scripts are not supported. Supported tags: