ThermalLabel SDK 16 for .NET Standard

Create, Preview & Print Barcode Labels to Zebra, EPSON & Honeywell printers with C# & VB.NET

  Download   Buy

Key Features

  Zebra-compatible Thermal Printers ZPL® or EPL®
  EPSON Thermal Printers ESC/POS®
  Honeywell-Intermec Thermal Printers Fingerprint / Direct Protocol®
  Windows, Linux & macOS • NuGet • .NET Standard 2.0+
  Linear & 2D Barcodes, Unicode Text, Images, RFID
  Preview & Export to PDF, PNG, JPG, SVG, PCX & HTML
  Data Binding, Counters, Masking & XML/JSON Templates

Create, Preview & Print Barcode Thermal Labels with C# & VB.NET

ThermalLabel SDK for .NET is a .NET Standard Class Library (DLL) that lets you to create advanced barcode labels and print them to Zebra ZPL/EPL, EPSON ESC/POS & Honeywell-Intermec Fingerprint / Direct Protocol Thermal Printers by writing just pure .NET code in VB.NET or C# for projects targeting .NET Framework 4.6.1+, .NET Core and .NET 5 or later (ASP.NET Core, console, services, WinForms, WPF) on Windows, Linux & macOS. It is distributed as a NuGet package.

ThermalLabel SDK can be used for designing and printing from simple to complex labels layout supporting Texts, Barcodes, Graphics and Images, RFID Tags, and Shapes like circles, ellipses, rectangles, and lines. It provides an unified object model which will allow you to create one label design and print it to either Zebra, EPSON & Honeywell-Intermec printers getting the same output printing!  General purpose printers (non thermal printers) are also supported by printing in graphics mode as well as Color label design.

 Web API for Docker!

We also offer the ThermalLabel Web API for Docker as a Linux image (amd64 & arm64) so it can be used with Any Development Platform and Programming Languages (.NET, Java, PHP, Javascript, Python, Ruby, etc.). It uses the same label engine and the same JSON/XML templates as the SDK.

Quick Start: Create & Print a Zebra Label in C#

1. Install the NuGet packages (the printing packages are optional; export to PDF, images and raw commands only needs the main package):

dotnet add package Neodynamic.SDK.ThermalLabel
# optional, to print:
dotnet add package Neodynamic.SDK.ThermalLabel.WindowsPrinting.NetCore   # Windows, .NET Core / .NET 5+
dotnet add package Neodynamic.SDK.ThermalLabel.UnixPrinting              # Linux & macOS

2. Design the label and export it to PDF, so you can check the output without a printer (see ThermalLabel Basics and Export Labels to PDF):

using Neodynamic.SDK.Printing;

// 1. Design a 4in x 3in label with a text and a Code 128 barcode
var tLabel = new ThermalLabel(UnitType.Inch, 4, 3);
tLabel.GapLength = 0.2;

var txtItem = new TextItem(0.2, 0.2, 2.5, 0.5, "Thermal Label Test");
var bcItem = new BarcodeItem(0.2, 1, 2, 1, BarcodeSymbology.Code128, "ABC 12345");
bcItem.BarHeight = 0.75;
bcItem.BarWidth = 0.0104;

tLabel.Items.Add(txtItem);
tLabel.Items.Add(bcItem);

// 2. No printer yet? Export it to PDF (works on Windows, Linux & macOS)
using (var pj = new PrintJob())
{
    pj.ExportToPdf(tLabel, "label.pdf", 300);
}

3. Print it to a Zebra network printer (port 9100). Change ProgrammingLanguage to print the same label to EPL, EPSON ESC/POS or Honeywell Fingerprint / Direct Protocol printers. On Linux & macOS use UnixPrintJob. See Print Jobs.

// Requires Neodynamic.SDK.ThermalLabel.WindowsPrinting(.NetCore)
using (var pj = new WindowsPrintJob())
{
    pj.PrinterSettings = new PrinterSettings();
    pj.PrinterSettings.Communication.CommunicationType = CommunicationType.Network;
    pj.PrinterSettings.Communication.NetworkIPAddress = System.Net.IPAddress.Parse("192.168.1.50");
    pj.PrinterSettings.Communication.NetworkPort = 9100;
    pj.PrinterSettings.ProgrammingLanguage = ProgrammingLanguage.ZPL;
    pj.PrinterSettings.Dpi = 203;

    pj.Copies = 2;
    pj.Print(tLabel);   // sends raw ZPL commands
}

4. Or just get the raw ZPL string and send it yourself (TCP socket, cloud print service, JSPrintManager…):

using (var pj = new PrintJob())
{
    pj.ProgrammingLanguage = ProgrammingLanguage.ZPL;
    pj.ThermalLabel = tLabel;
    string zpl = pj.GetNativePrinterCommands();   // ^XA ... ^XZ
}

5. Bind data & use templates (see Data Binding and XML & JSON Templates):

txtItem.DataField = "Name";
bcItem.DataField = "Sku";

// List<T>, DataTable, CSV, XML or JSON: one label per row
tLabel.DataSource = "json:[{\"Name\":\"Olive Oil\",\"Sku\":\"ABC01\"},{\"Name\":\"Chocolate\",\"Sku\":\"ABC02\"}]";

// Save / load the design as a JSON (or XML) template
string json = tLabel.GetJsonTemplate();
ThermalLabel fromTemplate = ThermalLabel.CreateFromJsonTemplate(json);

VB.NET versions of every sample are in the ThermalLabel SDK help, and complete WinForms, WPF, ASP.NET Core and console projects are on GitHub.


Exclusively Designed for .NET Thermal Printing Scenarios

 .NET Cross Platform Support

ThermalLabel SDK was built as a .NET Standard 2.0 Library which allows it to be used in any project targeting .NET Framework 4.6.1+, .NET Core and .NET 5 or later, including ASP.NET Core, Windows Services, console, WinForms and WPF apps. Printing is available on Windows (WindowsPrintJob) as well as on Linux & macOS (UnixPrintJob, CUPS or network printers).

 Zebra, EPSON & Honeywell-Intermec Compatible

ThermalLabel SDK provides .NET label design and printing for any Zebra-compatible Thermal Printers supporting ZPL® or ZPL II® (Zebra Programming Language) or EPL (Eltron Programming Language), EPSON printers supporting ESC/POS® as well as Honeywell-Intermec printers supporting Fingerprint / Direct Protocol® commands.

 Simple Object Model

ThermalLabel SDK provides a flexible programming object model that allows you to create one label design and print it to either ZPL, EPL & Fingerprint / Direct Protocol printers getting the same output printing! ThermalLabel SDK will let you to create from simple to complex layouts without efforts writing pure .NET code in VB or C#. ThermalLabel SDK generates native ZPL, EPL, ESC/POS, Fingerprint & Direct Protocol commands (and HP PCL). Printing job is fast and you get best performance.

 .NET Data Binding Support

ThermalLabel SDK was designed considering .NET Data Binding scenarios which mean you can bind text and barcode items to .NET data sources. It provides support for most common data types used in data binding scenarios like Arrays, Lists, POCO (Plain Old CLR Object), ADO.NET DataSets & DataTables (Access, SQL Server, XML) as well as CSV files! Learn how Data Binding works

 Counters - Print Range

Counters allow you to index data items by a selected increment or decrement value, making the data items increase or decrease by a specified value each time a label is printed. Learn how to print a range of labels (e.g. "ABC01" to "ABC10") with Counters

 Data Masking & Formatting

Data Masking allows you to serialize data items by specifying a Mask string as well as an increment string. It's useful for batch printing scenarios when serialized items are involved. Learn how to print serialized labels with Data Masking

fx 100+ Dynamic Expressions

Expressions can include a combination of variables, constants, operators, functions, and references to label Items as well as to data fields in a data binding scenario.
Expressions are set to any Item in the label to dynamically set the Item's content based on the expressions result.
ThermalLabel SDK ships with 100+ built-in well-known functions. It also allows setting and adding your own Custom Expression Functions and Variables/Constants.

   Full Color Label Support

In addition to create monochrome labels for thermal printers, ThermalLabel SDK also supports full color label design and generation and can be printed to any general purpose printers i.e. non-thermal ones in graphics mode.

 I18N Support

ThermalLabel SDK and Visual Label Editors also supports I18N text localization through .NET classes or JSON strings allowing developers to customize error messages and informative texts based on the end users cultures and languages.

Label Items: Text, Barcodes, Pictures, Shapes, Repeaters, RFID & Literals

Text items supporting multi-line, content alignment, sizing, Unicode, RTL (Hebrew, Arabic, etc.), HTML Spans with styles, MS RTF, Custom and installed Windows TTF files (see Using Fonts), White Text On Black, rotation, horizontal alignment, counters, and text masking.

Graphic, Image & Picture items supporting image formats like GIF, JPG/JPEG, BMP, and PNG; monochrome conversion features like Threshold and Floyd-Steinberg algorithms and reversing; sources image like files, base64 as well as binary content.

Barcode items supporting 180+ linear, postal, composite & 2D symbologies, printed as printer-resident elements or as graphics (see barcode support).

Shape items supporting Tables/Grids, Lines (horizontal, vertical, and diagonals), Rectangles with rounded corners, Circles and Ellipses.

Repeater items supporting fixed count and data bound items repetition.

RFID items supporting ASCII, HEX as well as EPC Data Structures. (NOTE: Only available for ZPL & Fingerprint / Direct Protocol printers)

Literal items to insert raw printer commands into the generated output.


First-class Barcode Support Out-of-the-box

ThermalLabel SDK supports most popular Linear (1D), Postal, Component Composite & 2D Barcode Symbologies including Code 39, Code 128, GS1-128, GS1 DataBar (RSS-14), EAN 13 & UPC, Postal (USPS, British Royal Mail, Australia Post, DHL, FedEx), Data Matrix (including GS1 & DMRE versions), QR Code (including GS1 version), PDF 417, Aztec Code, UPS MaxiCode, Chinese Han Xin Code, IFA PPN, all EAN/UPC Composite Barcodes (CC-A, CC-B & CC-C), DotCode and many more barcode standards
You won't need to acquire additional third-party barcode generation software! Neodynamic is an expert in the barcode field and we have incorporated our flagship Barcode Professional algorithms within ThermalLabel SDK. Learn how to use the Barcode Item.

GS1-AIM-ISO/IEC Compliance

Our barcode algorithms were written by following the official specifications of each barcode symbology. Our barcode engine within ThermalLabel SDK provides you with exclusive features like auto-checksum, data validation, Bar Width Adjustment (BWA) for linear & 2D symbols, auto-encoding methods for shortest barcode symbol generation.

GS1 Compliance for 2D barcodes at Point of Sale (POS)

Our barcode algorithms are fully 2D capable to meet the GS1's Ambition 2027 requirements. For your reference, the Neodynamic's products are officially listed by GS1 website under Barcode Creation section.

Create Artistic Barcodes

Create customized barcodes by stamping logos or pictures on symbols as well as specifying an image for filling the bars or dots!
Artistic Barcodes with logo & fill patterns

Create Artistic QR Codes with Custom Shape Patterns!

In addition to stamp images on barcode symbols, the ArtModuleShape and ArtFinderShape properties allow you to customize the QR Code modules and finders!

ArtFinderShape Patterns

ArtFinderShape-Rect ArtFinderShape-RoundRect ArtFinderShape-Circle

ArtModuleShape Patterns

ArtModuleShape-Rect ArtModuleShape-Circle ArtModuleShape-Dot ArtModuleShape-Diamond ArtModuleShape-ZebraVertical ArtModuleShape-ZebraHorizontal

QR Code Samples by combining the patterns...

QR-RoundRect-Dot QR-RoundRect-Circle QR-RoundRect-ZebraHorizontal QR-Rect-Diamond QR-Circle-ZebraVertical

XML/JSON-based Label Formats

ThermalLabel SDK handles label designs in a plain & simple XML/JSON-based format. By invoking a simple class method you can get a string representation of the thermal label in XML or JSON formats allowing you to save or store it in any kind of data source be it SQL Server Database, file on disk, memory stream, etc. In the same way, you can restore or open the thermal label definition from a XML or JSON Template by just invoking a simple class method as well.


ThermalLabel Web Editor Add-on

Design labels from Windows, Linux, Mac & Android!

ThermalLabel Web Editor Add-on is a first-class barcode label designer component for web apps which empowers your WebApps by providing an end-user visual label editor! Its backend can be your own ASP.NET Core or ASP.NET (MVC & WebForms) app using this SDK, or the ThermalLabel Web API for Docker for non-.NET stacks.

With the ThermalLabel Web Editor component, you can allow your end-users to create, load, edit and save ThermalLabel objects in the form of XML/JSON template files definition from Windows, Linux, Mac & Android Clients with latest browsers!

Docs: Web Label Editor guide • client-side API (JavaScript) • server-side API (.NET)


Empower your .NET Windows Apps with the ThermalLabel Windows Editor Add-on!

Embeddable Thermal Label Designer

ThermalLabel Editor Add-on is a first-class barcode label designer component for .NET Windows desktop apps (WinForms & WPF, .NET Framework 4.6.1+ & .NET Core 3.1+) which empowers your own apps by providing an end-user visual label editor!

With the ThermalLabel Editor component, you can allow your end-users to create, load, edit and save ThermalLabel objects in the form of XML/JSON template files definition or .NET object within your own .NET apps.

Docs: Windows Label Editor guide • Windows Label Editor API

Develop without having a physical Thermal Printer!

Preview & Export Labels to Images & PDF

ThermalLabel SDK allows you to preview and export/save the output label content to most popular raster image formats (JPEG & PNG), 1bpp monochrome PCX format, vector image format (SVG), Adobe PDF documents and self-contained HTML files. This allows you to work on your .NET developments without the need of having a physical thermal printer for testing! See Export to Image, Export to PDF and Export to HTML.

Easy to Dev & Deploy

Easy as 1, 2, 3! (1) Install the NuGet package, (2) create a ThermalLabel in C# or VB.NET, (3) add items and print or export it (see the Quick Start). Deployment is XCOPY: the ThermalLabel assemblies plus SkiaSharp, SkiaSharp.HarfBuzz and System.Text.Encoding.CodePages.


ASP.NET Client-side Printing Support for Windows Clients

With the new WebPrintJob class and the TLClientPrint utility, now is possible to print barcode thermal labels from your ASP.NET website to client-side printers! We have designed a clean and simple solution leveraging the client machine processing power. It is a cross-browser solution on Windows OS i.e. it works with any browser: Edge, Chrome, Firefox... (TLClientPrint requires Windows 7 SP1+ and .NET Framework 4.6.1+ on the client machine).

Need to print from the browser on Windows, Linux and macOS clients? Generate the printer commands on the server with GetNativePrinterCommands() and send them to the client printer with JSPrintManager.


ClassNuGet packagePlatformWhat it does
PrintJobNeodynamic.SDK.ThermalLabelAnyGenerates raw printer commands (GetNativePrinterCommands()) and exports labels to PDF, PNG, JPEG, SVG, PCX and HTML. Does not talk to printers.
WindowsPrintJob…ThermalLabel.WindowsPrinting (.NET Framework) or …WindowsPrinting.NetCore (.NET Core / .NET 5+)WindowsPrints through USB, network, serial, parallel, HID or the Windows printer driver. Bidirectional (BIDI) communication.
UnixPrintJob…ThermalLabel.UnixPrintingLinux, macOSPrints through CUPS queues or directly to network printers. BIDI over TCP.
WebPrintJob…ThermalLabel.WebPrintingASP.NETPrints from an ASP.NET website to Windows client printers with the TLClientPrint utility.

Print() sends raw commands (ZPL, EPL, ESC/POS, Fingerprint, Direct Protocol) to thermal printers. PrintAsGraphic() renders the label as an image for laser, inkjet or any printer with an OS driver (GDI+ on Windows, PDF via CUPS lpr on Linux & macOS). More in Print Jobs.

System Requirements

  • .NET: any project targeting .NET Standard 2.0+ (.NET Framework 4.6.1+, .NET Core 2.0+, .NET 5 or later). Visual Studio 2017+ or any .NET IDE / CLI.
  • Dependencies: SkiaSharp 1.68.3+, SkiaSharp.HarfBuzz 1.68.3+ and System.Text.Encoding.CodePages 4.4.0+ (installed automatically by NuGet). On Windows, some SkiaSharp versions need the Visual C++ 2015 Redistributable.
  • Operating systems: Windows, Linux and macOS.
  • Printers: Zebra ZPL / ZPL II and EPL, EPSON ESC/POS, Honeywell-Intermec Fingerprint and Direct Protocol thermal printers (or emulation), and any printer with an OS driver in graphic mode.

More details: System Requirements • Deployment • Trial Version • License Registration

Licenses start at USD 499 per developer and include one year of updates and priority support. See all license options.

What our Customers say about ThermalLabel SDK

Advanced User Systems

"We have been using the ThermalLabel SDK for a few years now, and this has allowed us to give our customers the ability to print labels with complex layouts, barcodes and graphics, right from within our application, at the click of a button. We have now integrated the ThermalLabel Editor into our application, and we anticipate our customers will love the ease of use and simplicity to create their own advanced label designs."

Tim Failes
Advanced User Systems Pty Ltd
from Australia

IMB Solutions

"We are very satisified users of ThermalLabel SDK for .NET. We haven't noticed any problems with printing thermal labels on any Zebra printer through it. Additionally - Neodynamic support is superb!"

Roman Baluta
Project Leader
IMB Solutions
from Poland

Veris Industries

"As a developer, I found the ThermalLabel SDK object model to be intuitive and robust. Prompt technical support."

Jeff Meeko
Information Technology
Veris Industries
from USA

POS2020

"I am happy using your ThermalLabel SDK for .NET and I most like is support. Support is nothing but feels like phone. It's so easy to integrate with .net."

Chandresh Patel
POS2020
from USA

Vale Presente

"Neodynamic's ThermalLabel SDK allowed us to ship a product on time because of its simplicity and powerful functionalities. We didn't want to reinvent the wheel, and found really impressed by the quality of what we've got."

Robson Dantas
CTO
Vale Presente
from Brazil

WalkerScott

"The Neodynamic ThermalLabel SDK for .NET made developing a client application extremely efficient and easy. We went from concept to working prototype in less than a week. We would highly recommend Neodynamic products for your barcoding needs."

Jono Walker
WalkerScott
from Australia


Which ThermalLabel Edition Do I Need?

The same label engine and the same XML/JSON label template format are shared by all ThermalLabel products, so a label designed in an editor can be printed with the SDK or converted with the Web API.

ProductBest forHow you use itPlatformsPrice
ThermalLabel SDK for .NET This page.NET apps: desktop, services, console, ASP.NET CoreC# / VB.NET library (NuGet Neodynamic.SDK.ThermalLabel)Windows, Linux, macOS (.NET Standard 2.0+)From USD 499
ThermalLabel Web API for DockerAny language: Python, Node.js, Java, PHP, Go, C#…Self-hosted REST API in a Docker containerLinux container (amd64 & arm64)From USD 499
ThermalLabel Windows EditorEnd-user label designer inside your WinForms or WPF appVisual .NET control. Requires the SDKWindows (.NET Framework 4.6.1+ & .NET Core 3.1+)Add-on
ThermalLabel Web EditorEnd-user label designer inside your web appJavaScript component. Requires the SDK or the Web API for Docker as backendAny modern browser (Windows, Linux, macOS, Android)Add-on, from USD 899

Building with .NET? Use the SDK. Any other language, or a microservice architecture? Use the Web API for Docker. Need your end users to design their own labels? Add the Windows Editor (desktop, SDK only) or the Web Editor (browser, SDK or Docker).



ThermalLabel SDK for .NET FAQ

Which label printers does ThermalLabel SDK support?
Thermal printers that understand Zebra ZPL / ZPL II or EPL, EPSON ESC/POS, and Honeywell-Intermec Fingerprint or Direct Protocol, including printers that emulate those languages. The SDK generates the native printer commands, so one label design prints the same on all of them. Any other printer (laser, inkjet) is supported by printing the label as a graphic.
Does it work with .NET 8, .NET Core, Linux and macOS?
Yes. ThermalLabel SDK is a .NET Standard 2.0 library, so it runs on .NET Framework 4.6.1+, .NET Core and .NET 5 or later on Windows, Linux and macOS. Printing on Windows uses the WindowsPrinting package (WindowsPrinting.NetCore for .NET Core / .NET 5+); on Linux and macOS it uses the UnixPrinting package, which prints through CUPS or directly to network printers.
How do I generate ZPL code from C# without a printer?
Create the label with the ThermalLabel object model, then use a PrintJob object: set ProgrammingLanguage to ZPL, assign the label and call GetNativePrinterCommands() to get the ZPL as a string. The same PrintJob can export the label to PDF, PNG, JPEG, SVG, PCX or HTML, so you can develop and test without a physical printer.
How do I print a label to a Zebra network printer?
Use WindowsPrintJob (or UnixPrintJob on Linux/macOS) with PrinterSettings.Communication.CommunicationType set to Network, the printer IP address and port 9100, ProgrammingLanguage set to ZPL and the printer Dpi, then call Print(label). USB, serial, parallel, HID and Windows printer driver connections are also supported.
Can I print labels to a regular laser or inkjet printer?
Yes. PrintAsGraphic() renders the label as an image and prints it through the operating system driver (GDI+ on Windows, a PDF sent with lpr through CUPS on Linux and macOS). Full color labels and sheets of labels such as Avery-style A4 or Letter sheets are supported.
Can I bind labels to data and print many labels at once?
Yes. Set DataField on text and barcode items and assign ThermalLabel.DataSource to a List of objects, a DataTable or DataSet, a CSV, XML or JSON string or file. One label is generated per data row. Counters, data masking (serial numbers) and 100+ built-in expressions are also available.
Can I save and load label templates?
Yes. Any label can be saved as an XML or JSON template with GetXmlTemplate() or GetJsonTemplate() and loaded again with CreateFromXmlTemplate() or CreateFromJsonTemplate(). Templates can be stored in files or in a database, and they are the same format used by the ThermalLabel visual editors and the ThermalLabel Web API for Docker.
Can my end users design labels visually?
Yes, with the add-ons: ThermalLabel Windows Editor is a WYSIWYG label designer control for WinForms and WPF apps, and ThermalLabel Web Editor is a browser-based label designer for web apps. Both are included in the SDK download package.
Which barcodes are supported?
180+ linear, postal, composite and 2D symbologies, including Code 128, GS1-128, GS1 DataBar, EAN/UPC, Data Matrix (GS1 and DMRE), QR Code (GS1 and artistic QR), PDF417, Aztec, MaxiCode, Han Xin and DotCode. Barcodes can be printed as printer-resident elements or as graphics.
Can it communicate with the printer bidirectionally?
Yes. WindowsPrintJob supports bidirectional (BIDI) communication over USB, network, serial and HID, and UnixPrintJob supports it over the network (TCP), so you can send commands and read the printer responses, for example to query its status.
Can I use ThermalLabel from Python, Java, Node.js or PHP?
Not as a library, because the SDK is .NET only. For other languages use ThermalLabel Web API for Docker, a self-hosted REST API that uses the same label engine and the same JSON/XML templates.
How much does ThermalLabel SDK cost?
A Standard license starts at USD 499 per developer and an Ultimate license at USD 599 per developer, with Team, Corporate and OEM options. Every license includes one year of free updates and priority support.
Is there a free trial?
Yes. The trial is fully functional and does not expire; it only adds a TRIAL legend to the output. You can also request a 30-day evaluation key to test it without the watermark.