ThermalLabel Web API for Docker

On-premise REST API to Generate advanced barcode labels supporting data merging, expressions/formulas, and conversion to printer commands and known file formats


Key Features

  On-premise REST API running Linux Docker container
  Zebra-compatible Thermal Printers ZPL® or EPL®
  Linear & 2D Barcodes, Unicode Text, Images, RFID
  Preview & Export to raster image formats + Adobe PDF
  Data Binding, Counters, Masking & XML/JSON Templates

  Download   Buy

Advanced Barcode Label Generator for Docker

ThermalLabel Web API can be used for designing 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 export/convert it to either raw Zebra, EPSON & Honeywell-Intermec printer commands as well as to image or document formats like JPEG/JPG, PNG, PCX, SVG, HTML, and PDF!

Postman Screenshots

QR Code, Code 128, Label
QR Code Color Label
Avery Multicolumn Barcode Labels
Full Color Label

Features at a Glance

 Zebra, EPSON & Honeywell-Intermec Compatible

ThermalLabel Web API converts label designs or templates to 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® commands.

   Full Color Label

In addition to create monochrome labels for thermal printers, ThermalLabel Web API also supports full color label design and generation and can be converted to JPEG/JPG, PNG, PCX, SVG, HTML, and PDF formats.

fx 100+ Expressions/Formulas

Expressions/Formulas can include a combination of variables, constants, operators, functions, and references to label Items as well as to data fields in a data merging/binding scenario.
Expressions are set to any Item in the label to dynamically set the Item's content based on the expressions result.
ThermalLabel Web API ships with 100+ built-in well-known functions.


 Data Merging/Binding Support

ThermalLabel Web API was designed considering Data Merging/Binding scenarios which mean you can merge/bind text and barcode items to XML & JSON Array data sources.

 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. This feature allows scenarios like generating 10 barcode labels for values ranging from "ABC01" to "ABC10".

 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. This feature allows scenarios like generating a barcode label for a serialized product from "MDL-001/X" to "MDL-010/X" (i.e. the sequence will be MDL-001/X, MDL-002/X, MDL-003/X, ..., MDL-010/X).

Text, Pictures, Shapes & RFID

Text items supporting multi-line, content alignment, sizing, Unicode, RTL (Hebrew, Arabic, etc.), Custom and installed TTF files, White Text On Black, rotation, horizontal alignment, counters, and text masking.

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

Shape items supporting lines (horizontal, vertical, and diagonals), rectangles with rounded corners, circles and ellipses.

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

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

ThermalLabel Web API 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

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.

XML/JSON-based Label Templates

ThermalLabel Web API handles label designs in a plain & simple XML/JSON-based format. These string representation of the thermal label in XML or JSON formats allow you to save or store them in any kind of data source be it Database, file on disk, memory stream, etc. The XML/JSON Label Template can be generated in you preferred programming language or visually through the ThermalLabel Web Editor Add-on.


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 any website which empowers your WebApps by providing an end-user visual label editor!

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!

 Donwload ThermalLabel Web Editor sample project...

IMPORTANT: This label editor is optional and sold separately. You can use the Web API without needing the Web label editor.

Overview

Designed by following some of the REST principles, ThermalLabel Web API for Docker responds to simple HTTP GET & POST requests by specifying the right parameters through a JSON object in the request body, returning the output processing in the raw commands, image or document formats specified through the Accept header.

Help Doc Topics


Download and run ThermalLabel Web API for Docker

ThermalLabel Web API for Docker is available at Docker Hub registry.

  • To pull/download the Docker image, please type the following from a Terminal:

    docker pull neodynamic/thermallabelwebapi:1.0.11
  • To run the Docker image, please type the following from a Terminal:

    docker run -it --rm -p 8080:80 neodynamic/thermallabelwebapi:1.0.11

The Accept Header

The desired output rendering format must be specified through the Accept header. The supported formats are the following:

Accept Description
image/png Returns the first rendered label in PNG format. If the specified params generate more than one label, then you should specify image/png+json or image/png+zip values instead.
image/jpeg Returns the first rendered label in JPEG/JPG format. If the specified params generate more than one label, then you should specify image/jpeg+json or image/jpeg+zip values instead.
image/svg+xml Returns all the rendered labels in SVG format.
application/pdf Returns all the rendered labels as a single PDF document. The PDF file will contain as many pages as rendered labels.
image/vnd.zbrush.pcx Returns the first rendered label in PCX format. If the specified params generate more than one label, then you should specify image/vnd.zbrush.pcx+json or image/vnd.zbrush.pcx+zip values instead.
text/html Returns all the rendered labels in HTML format.
application/vnd.zpl Returns all the rendered labels in Zebra ZPL format.
application/vnd.epl Returns all the rendered labels in Zebra EPL format.
application/vnd.fingerprint Returns all the rendered labels in Honeywell-Intermec Fingerprint format.
application/vnd.escpos Returns all the rendered labels in EPSON ESC/POS format.
image/png+json Returns all the rendered labels as a JSON Array containing each label in Base64 PNG Data URI scheme. The returned JSON Object will have this structure: {labels:["data:image/png;base64,<BASE64-STRING>", "data:image/png;base64,<BASE64-STRING>", ... ]}
image/jpeg+json Returns all the rendered labels as a JSON Array containing each label in Base64 JPEG Data URI scheme. The returned JSON Object will have this structure: {labels:["data:image/jpeg;base64,<BASE64-STRING>", "data:image/jpeg;base64,<BASE64-STRING>", ... ]}
image/svg+xml+json Returns all the rendered labels as a JSON Array containing each label in Base64 SVG Data URI scheme. The returned JSON Object will have this structure: {labels:["data:image/svg+xml;base64,<BASE64-STRING>", "data:image/svg+xml;base64,<BASE64-STRING>", ... ]}
application/pdf+json Returns all the rendered labels as a JSON Array containing a single PDF in Base64 Data URI scheme. The PDF file will contain as many pages as rendered labels. The returned JSON Object will have this structure: {labels:["data:application/pdf;base64,<BASE64-STRING>"]}
image/vnd.zbrush.pcx+json Returns all the rendered labels as a JSON Array containing each label in Base64 PCX Data URI scheme. {labels:["data:image/vnd.zbrush.pcx;base64,<BASE64-STRING>", "data:image/vnd.zbrush.pcx;base64,<BASE64-STRING>", ... ]}
text/html+json Returns all the rendered labels as a JSON Array containing each label in Base64 HTML Data URI scheme. The returned JSON Object will have this structure: {labels:["data:text/html;base64,<BASE64-STRING>", "data:text/html;base64,<BASE64-STRING>", ... ]}
application/vnd.zpl+json Returns all the rendered labels as a JSON Array containing each label in Base64 ZPL Data URI scheme. {labels:["data:application/vnd.zpl;base64,<BASE64-STRING>", "data:application/vnd.zpl;base64,<BASE64-STRING>", ... ]}
application/vnd.epl+json Returns all the rendered labels as a JSON Array containing each label in Base64 EPL Data URI scheme. {labels:["data:application/vnd.epl;base64,<BASE64-STRING>", "data:application/vnd.epl;base64,<BASE64-STRING>", ... ]}
application/vnd.fingerprint+json Returns all the rendered labels as a JSON Array containing each label in Base64 Fingerprint Data URI scheme. {labels:["data:application/vnd.fingerprint;base64,<BASE64-STRING>", "data:application/vnd.fingerprint;base64,<BASE64-STRING>", ... ]}
application/vnd.escpos+json Returns all the rendered labels as a JSON Array containing each label in Base64 ESC/POS Data URI scheme. {labels:["data:application/vnd.escpos;base64,<BASE64-STRING>", "data:application/vnd.escpos;base64,<BASE64-STRING>", ... ]}
image/png+zip Returns all the rendered labels as a ZIP file containing each label in PNG format. Each file name is named to [DataTime-Ticks].png
image/jpeg+zip Returns all the rendered labels as a ZIP file containing each label in JPEG/JPG format. Each file name is named to [DataTime-Ticks].jpg
image/svg+xml+zip Returns all the rendered labels as a ZIP file containing a single SVG. The SVG file will contain as many pages as rendered labels. [DataTime-Ticks].svg
application/pdf+zip Returns all the rendered labels as a ZIP file containing a single PDF. The PDF file will contain as many pages as rendered labels. [DataTime-Ticks].pdf
image/vnd.zbrush.pcx+zip Returns all the rendered labels as a ZIP file containing each label in PCX format. Each file name is named to [DataTime-Ticks].pcx
text/html+zip Returns all the rendered labels as a ZIP file containing a single HTML doc. The HTML file will contain as many pages as rendered labels. [DataTime-Ticks].html
application/vnd.zpl+zip Returns all the rendered labels as a ZIP file containing a single ZPL file. The ZPL file will contain as many pages as rendered labels. [DataTime-Ticks].zpl
application/vnd.epl+zip Returns all the rendered labels as a ZIP file containing a single EPL file. The EPL file will contain as many pages as rendered labels. [DataTime-Ticks].epl
application/vnd.fingerprint+zip Returns all the rendered labels as a ZIP file containing a single Fingerprint file. The Fingerprint file will contain as many pages as rendered labels. [DataTime-Ticks].fingerprint
application/vnd.escpos+zip Returns all the rendered labels as a ZIP file containing a single ESC/POS file. The ESC/POS file will contain as many pages as rendered labels. [DataTime-Ticks].escpos

Web API Doc


How to configure Custom TTF Fonts

Most labels that are designed might contain some texts, and these texts need to be rendered by using a given set of fonts. To make these fonts available for the ThermalLabel Web API for Docker to preview, render and convert the labels to the target format, then a special configuration must be performed.

NOTE: Fonts that are added to the ThermalLabel Web API for Docker remain the exclusive property of their specific owners and require a license from their owners.

The following steps show how to configure the ThermalLabel Web API for Docker to add support for Arial Unicode TTF font for rendering texts in different languages.

Custom Fonts Configuration Steps

  • Be sure you download the Arial Unicode font (in some Windows systems, that font is located at c:\Windows\Fonts\ARIALUNI.TTF). Remember that any added font remain the exclusive property of their specific owners and require a license from their owners.
  • Once you have the ARIALUNI.TTF font file, copy it to the Linux box where the ThermalLabel Web API instance will be running on.
  • In the home dir of your Linux box, create the following directoy: MyThermalLabelSettings
  • Copy the ARIALUNI.TTF to the MyThermalLabelSettings directory
  • Create a plain text file and name it to fonts.json and then write or copy/paste the following content:

    
    [
      {
        "name": "Arial Unicode",
        "fileName": "ARIALUNI.TTF"
      }                                
    ]
                                

    This is a JSON Array for each font you want to upload to the virtual printer storage. Each JSON object representing a given custom font must be specified with the name of the font (which is just for your identification only) and the fileName which points to the physical font file.

  • Finally, to make the custom fonts available in the ThermalLabel Web API instance, we have to mount a volume to the instance in this way:

    docker run -it --rm -p 8080:80 neodynamic/thermallabelwebapi:1.0.11 -v ~/MyThermalLabelSettings:/app/Config

Licensing

On-Premise - Full Deployment Control

ThermalLabel Web API is licensed for Private On-Premise environments giving you full control on the infrastructure where our product will run on. Please refer to Licensing model and prices...

 License Registration

When you buy a commercial license of ThermalLabel Web API for Docker, you are provided with license information (LICENSE_OWNER & LICENSE_KEY for the Web API - EDITOR_LICENSE_OWNER & EDITOR_LICENSE_KEY for the Web Label Editor) to register the product. The license information must be specified to the Docker image as environment variables as folows:

docker run -it --rm -e "LICENSE_OWNER=YOUR-COMPANY-NAME" -e "LICENSE_KEY=YOUR_KEY" -e "EDITOR_LICENSE_OWNER=YOUR-COMPANY-NAME" -e "EDITOR_LICENSE_KEY=YOUR_KEY" -p 8080:80 neodynamic/thermallabelwebapi:1.0.11

 Evaluation Mode

The Trial Version of ThermalLabel Web API for Docker is fully functional and has no expiry date. However, while in TRIAL mode, the output rendering has the following limitations:


  • SVG barcode image formats require a license key, a blank image will be generated in TRIAL mode.
  • A TRIAL stamp will be rendered at the top of the rendering output.

 Want to try ThermalLabel Web API for Docker without TRIAL watermark?

We offer you a 30-day Evaluation License Key which will allow you to test the ThermalLabel Web API for Docker in fully-functional mode for 30 days! When the 30-day Evaluation License Key expires, the ThermalLabel Web API for Docker behavior backs to Trial mode. Request your 30-day Evaluation License Key now...

 Change Log

  • 1.0.11 2021-03-30
    • Fixed! Hyphen ASCII 45 char was not printed when printing Fingerprint commands.

  • 1.0.10 2021-03-25
    • New! Added support for handling Custom Font Files.
    • Fixed! NativePrinterFontB was not rendered correctly.

  • 1.0.9 2021-03-23
    • Fixed! Error `Value does not dall within the expected range` introduced by build 1.0.8

  • 1.0.8 2021-03-22
    • New! Added operationId for API actions.
    • Fixed! TextItem word wrap overflow when using ParagraphScaling sizing option.

  • 1.0.7 2021-03-04
    • New! Added Health Check endpoint /health

  • 1.0.6 2021-03-02
    • Fixed! JSON data source detection.

  • 1.0.5 2021-02-01
    • Fixed! Bug when using NativePrinterFonts and TextAlignment Center & Right options.

  • 1.0.4 2021-01-30
    • Fixed! Some properties names were not correctly serialized.

  • 1.0.3 2021-01-26
    • Fixed! Objects' default properties values were not returned by GET methods.

  • 1.0.2 2021-01-25
    • New! Added CharSpacing property to TextItem. This allows setting the horizontal spacing behavior between text characters.

  • 1.0.1 2021-01-18
    • Fixed! Rendering issues when using expressions in data binding scenarios.

  • 1.0 2020-12-30
    • New! Initial release.