Version32

AI for reports.
Under your
control.

List & Label 32 delivers AI where it's actually needed in reporting workflows: the formula wizard, the preview function, and report functions. You can activate each feature explicitly, choose your own model and infrastructure, and work locally. New features include Word export in Cross Platform, token refresh for web components, PDF/UA support, and smaller Excel files.

AI under your control

List & Label 32 doesn't add AI for the sake of it. The new functions are opt-in, separately configurable, and integrated. Thus you can fit them into your architecture, security requirements, and logging processes.

01

Disabled by default

No AI feature runs automatically. You decide whether to enable individual wizards for text functions or image generation in the code.

02

Your model, your infrastructure

Use cloud models like Claude, Gemini, Mistral, or GPT, or run supported open source models locally with Ollama. This also lets you cover scenarios where data must not leave your own system or where you want to avoid ongoing API costs.

03

AI directly in the workflow

AI provides targeted support for each step of the reporting process, delivering assistance right where it's needed. Users don't have to open a separate chat, switch between tools, or maintain additional conversation history.

04

Controlled context instead of full access

The model gets no direct access to your data source, your data model, or your application. It only processes the information explicitly passed to it from the report context.

Two ways to integrate AI
OPTION A Supplied by the developer

You store the key centrally in your application, for example in the configuration or in the secret store. All users use the same AI connection; cost and control stay with you.

OPTION B Supplied by the end customer

Your application accepts the customer's key, for example via a settings dialog, and passes it on to List & Label at runtime. The AI runs via the customer's account and infrastructure.

Important: AI output is only a suggestion. It can be incorrect or incomplete and vary by model. Critical results must therefore be reviewed, just like formulas you write yourself or generated text.
Your application
AI configuration
Opt-in · model · API key · parameters
Cloud LLM
Claude · Gemini · Mistral · GPT
Local LLM
Ollama · On-premises

Formula wizard

Describe formulas instead of looking up syntax

In the formula wizard, users can describe in natural language what the formula is supposed to do. List & Label 32 turns this into a normal formula expression that you can accept, adjust, or discard.

Example
Prompt “Calculate the total of all orders printed (Item.Quantity × Item.UnitPrice) and add 19% sales tax. The calculated total should appear only on the last page. Otherwise, use Null().”
Suggestion If(LastPage(), Sum(Item.Quantity * Item.UnitPrice) * 1.19, Null())
What this means
01 Not a black-box result

The suggestion appears as an editable formula in the wizard.

02 Context is kept temporarily

The wizard can briefly build on the previous task without you having to re-explain everything.

03 Less effort for users

Anyone who understands the report, but doesn't know every designer function, can find the right formula faster.

Preview

Review reports faster

In the preview, report content can be summarized or translated without exporting the report or copying it into another tool.

What's possible
01 Summarize

Long reports are condensed into a short overview. This is especially helpful for monthly evaluations, minutes, or multi-page documents.

02 Translate

Report text can be translated directly from the preview into the recipients' language.

03 Custom prompt

In addition to the predefined actions, you can apply a free-form prompt to the report content. This makes the function flexible enough to accommodate your own use cases, ranging from targeted questions about the report to custom text processing.

04 Available wherever reports are checked

You can use AI processing in the designer's live-data preview and during your application's print preview.

Designer functions

AIText$() and AIImage() in the report layout

Previously, the built-in designer function AI$() lets you implement simple AI prompts in code. With version 32, this is complemented by a clearly separated pair of functions: AIText$() for generated text and AIImage() for images. Both can be used in the layout, like any other designer function, with model selection and configuration in your application. In LLCP, you register both as your own designer function.

The two functions
AIText$( ) AIText$("Summarize this report's revenue trend in a maximum of two sentences. Current revenue: " + Str$(CurrentRevenue) + ", prior-year revenue: " + Str$(PriorYearRevenue))
Example result

→ “Revenue is currently 8.4 % above last year's figure. This continues the positive trend seen over the period.”

AIImage( ) AIImage("Logo for a software company, themes reporting and charts, in green and blue, with the lettering LL.", "1024*1024")
Example result Logo generated by AIImage(): stylized green/blue bar-chart icon with the lettering “List & Label”

→ Generated image, placed like any other picture object.

AI in LL Classic

The following code snippets show how to activate the two functions AIText$() and AIImage$() in the designer and for printing/export in LL classic.

Activation in code
// LL Classic: enable AI – only where you want it
private void CustomAiConfig()
{
    LL.ConfigureAi(ai =>
    {
        // Text functions
        ai.Text.Url    = "http://localhost:11434";
        ai.Text.ApiKey = "YOUR API-KEY";
        ai.Text.Model  = AiTextModel.Ollama("gpt-oss:20b");

        // Image generation – configurable separately
        ai.Image.Model  = AiImageModel.OpenAiGptImage1Mini;
        ai.Image.ApiKey = "YOUR API-KEY";
    });
}
// LL Classic: enable AI – only where you want it
procedure TMainForm.btnDesignClick(Sender: TObject);
begin
  LL.Core.LlSetOptionString(LL_OPTIONSTR_AI_TEXT_URL, 'http://localhost:11434');
  LL.Core.LlSetOptionString(LL_OPTIONSTR_AI_TEXT_MODEL, 'ollama-gpt-oss:20b');
  LL.Core.LlSetOptionString(LL_OPTIONSTR_AI_TEXT_APIKEY, 'YOUR API-KEY');

  // Image generation – configurable separately
  LL.Core.LlSetOptionString(LL_OPTIONSTR_AI_IMAGE_MODEL, 'openai-gpt-image-1-mini');
  LL.Core.LlSetOptionString(LL_OPTIONSTR_AI_IMAGE_APIKEY, 'YOUR API-KEY');

  // Assumes the FireDAC connection/data binding is already configured.
  LL.Design;
end;
// LL Classic: enable AI – only where you want it
LlSetOptionString(hLLJob, LL_OPTIONSTR_AI_TEXT_URL, L"http://localhost:11434");
LlSetOptionString(hLLJob, LL_OPTIONSTR_AI_TEXT_MODEL, L"ollama-gpt-oss:20b");
LlSetOptionString(hLLJob, LL_OPTIONSTR_AI_TEXT_APIKEY, L"YOUR API-KEY");

// Image generation – configurable separately
LlSetOptionString(hLLJob, LL_OPTIONSTR_AI_IMAGE_MODEL, L"openai-gpt-image-2");
LlSetOptionString(hLLJob, LL_OPTIONSTR_AI_IMAGE_APIKEY, L"YOUR API-KEY");
AI in LLCP

For LLCP, the two designer functions mentioned must be registered and implemented in the code. Here is an example for AIText$():

Registration of the functions
// LLCP: AIText$() as its own DesignerFunction –
// you define what it's allowed to do and what it talks to
var aiFunction = new DesignerFunction
{
    FunctionName      = "AIText$",
    MinimalParameters = 1,
    MaximumParameters = 1
};
aiFunction.Parameter1.Type = LlParamType.String;
aiFunction.EvaluateFunction += AiFunction_EvaluateFunction;
LL.DesignerFunctions.Add(aiFunction);
Connected to Ollama, e. g. via Semantic Kernel
// Callback: this is where the actual AI call happens – synchronous,
// because List & Label needs the result right away
private void AiFunction_EvaluateFunction(object sender, EvaluateFunctionEventArgs e)
{
    e.ResultType  = LlParamType.String;
    e.ResultValue = Task.Run(() => AskOllamaAsync(e.Parameter1.ToString())).Result;
}

private async Task<string> AskOllamaAsync(string prompt)
{
    var builder = Kernel.CreateBuilder();
    builder.AddOllamaChatCompletion(modelId: "gpt-oss:20b", endpoint: new Uri("http://localhost:11434"));
    var kernel = builder.Build();

    var fn = kernel.CreateFunctionFromPrompt(prompt);
    var result = await kernel.InvokeAsync(fn);
    return result.ToString();
}
Free choice of model As of 09/2026
Claude Haiku 4.5 Claude Sonnet 5 Claude Opus 5 Gemini 3.7 Flash Gemini 3.1 Pro Mistral Large 3 Mistral Small 4 GPT-5.6 Luna Ollama · local

Image generation: GPT Image 1 mini & GPT Image 2. If needed, you can pass additional model parameters as JSON (ParametersJson).

Cross-Platform

New features in List & Label Cross Platform

Version 32 introduces several key features for switching or operating in parallel, including editable Word files, Precalc(), PDF objects, gauges, multi-column subtables, and protection against infinite loops.

01

Word export (.docx)

Reports can be edited further as real Word documents. Tables are exported as Word tables. This is especially useful for quotes, contract drafts, and minutes that still need further editing after export.

Further updates
02 Precalc()

Values are calculated before the engine knows them at the current position. Examples include the number of records in the table header or scale ranges derived from all rows. The function Precalc() closes a relevant compatibility gap with LL Classic.

03 PDF objects

You can use letterheads, terms and conditions, forms, or DMS documents in the report, either as free-floating object or data-driven per table row. You can also use PDF documents as templates to place dynamic text, barcodes, and similar elements precisely in forms.

04 Gauges

Values and target achievements at a glance: gauges visualize KPIs, utilization, or SLA status clearly on a freely configurable scale. Colors, thresholds, and scale ranges can be adjusted flexibly. If needed, the scale limits can be derived dynamically from data using the Precalc() function.

05 Multi-column subtables

Detail data can now flow horizontally across columns instead of only growing vertically. This keeps serial numbers, variants, or attendee lists compact without having to adjust the data model.

06 Protection against infinite loops

The MaximumIdleIterationsPerObject setting aborts exports when an object makes no progress (default: 1,000). This prevents a problematic layout from permanently blocking workers, containers, or web APIs.

using var LL = new ListLabel();

// Configure early – before design, print, or export:
LL.Configuration.MaximumIdleIterationsPerObject = 100;
Updates since LL31
Excel export Physical printing Checkbox objects Dictionary support Extended RTF rendering DataGraphic objects Extended barcode support Pie chart Donut chart Nested tables Subreports and more

We've added these functions since the release of LL31, and they're already available with the current service pack.

Web components

Keeping web sessions stable

The Web Report Designer (WRD) and the Web Report Viewer (WRV) now have functions that are constantly needed by production web apps: runtime token refresh, per-project export defaults, a sidebar for print options, and table-in-table support.

01

Swap the auth token at runtime

When a JWT expires, you can set a new token on the running element without reloading or remounting it. The open report and UI state are preserved, and onUnauthorized responds to 401 errors. Parallel failures share a single refresh (single-flight). The failed request is retried once.

Framework-independent
designer.onUnauthorized = async () => {
  const response = await fetch("/Authentication/RefreshToken", {
    method: "POST",
    credentials: "same-origin"
  });
  return response.text();  // new token – done
};

// or proactively, before the token expires:
designer.setAccessToken(newToken);

React, Angular, Vue, ASP.NET MVC, plain JS

02

Export options with memory

For the export options in WRD and WRV, you can now set default values for the specific project and export format directly in the backend (OnProvideExportOptions). This reduces repetitive settings. Users can adjust these defaults in the dialog if needed. Sensitive data such as passwords are not stored.

Only set what differs
public override void OnProvideExportOptions(
    ProvideExportOptionsContext context)
{
    context.Defaults[LlExportOption.XlsShowGridlines] = "0";
    context.Defaults[LlExportOption.PdfAuthor] = "ACME Corp.";
}
03

Print options sidebar in the WRV

Project-related print options are visible directly in the WRV. Currently, only the starting position for label projects is supported. This allows users to specify which label to start printing with on sheet 1. Partially used label sheets can be reused, saving costs and material.

04

Table-in-table

In the WRD, a relational table can now be used and configured directly as a cell within a table.

Export

PDF/UA and Excel files without image bloat

There are two export updates: first, accessible PDF documents can now be created according to PDF/UA. Second, reusing identical images produces significantly smaller Excel files.

01

PDF/UA support

The new PDF/UA support lets you create accessible PDF documents. This helps companies better meet digital accessibility requirements and internal compliance rules.

Screen Reader Preview
Screen Reader Preview in List & Label 32: tag tree of an accessible PDF document with an order overview table (Document, Part, Div, Table, TH, TR, TD)
02

Excel export without image bloat

The Excel export identifies and stores identical images only once in the workbook. References to the same image are repeated.

  1. 01 Typical cases are a logo in the page header, a placeholder image in product lists, or recurring icons and status graphics.
  2. 02 Smaller .xlsx files are noticeable when sending emails, uploading to DMS/API connections, or archiving reports, among other things.
  3. 03 No rework needed: the optimization kicks in automatically on export. Existing layouts can stay unchanged.

Email

New email editor for sending workflows

The built-in email editor in List & Label 32 is significantly more user-friendly. The new interface resembles familiar email clients like Outlook, providing end users with an environment that is both familiar and intuitive for composing and sending emails.

Editor interface
New email editor with recipient, subject, and attachment fields plus an HTML formatting toolbar
In the editor
  1. 01 Recipient, subject, message body, and attachments are laid out clearly.
  2. 02 Additional files such as terms and conditions, receipts, or supplementary documents can be sent easily alongside the generated report.
  3. 03 HTML emails can now also be formatted directly in the editor – including font, font size, colors, bold and italic text, and more.

Overview

Which update belongs to which component?

The matrix shows at a glance which features are available in LL Classic, Cross Platform, and web components.

Component / feature LL Classic WRD / WRV LLCP
AI functions
AI in the formula wizard (text-to-formula)
AI in the preview: summarize, translate & custom prompt
Designer functions AIText$() & AIImage()
Cross Platform
Word export (.docx) with real Word tables
Precalc() support
PDF objects (free-floating & in table cells)
Gauges (free-floating & in table cells)
Horizontally filled, multi-column subtables
MaximumIdleIterationsPerObject (infinite-loop protection)
Web components
Runtime auth token refresh + onUnauthorized
Default values for export options
Print options sidebar (label starting position)
Table-in-table
Export
PDF/UA support for accessible PDF documents
Excel export: smaller files through image reuse
Email
New email editor for sending workflows
  New in version 32   Already included in the previous version   Not part of this component

You build the software.
We deliver the reports.

Try List & Label 32 for free! Fully functional with AI features, cross-platform capabilities, and web components. There is no need to rework your architecture, and you have full control over your data, layout, and output.

combit GmbH – Constance
LL32
V32.00010 / 26
combit software logo
phone white    mail icon
Left Menu Icon