EPLPrinter Emulator SDK for .NET

Convert, Preview & Render EPL
commands to PNG, JPG & PDF!


  Download   Buy

Key Features

  Convert raw EPL to PNG, JPG, PCX, GRF, EPL, PCL & PDF
  Preview EPL commands without wasting real labels!
  High Quality & Accuracy EPL Rendering
  EPL Parsing from Strings, IO Streams & Files
  Full Barcodes Support
  Print EPL on ZPL printers & any other printer

Zebra and EPL are registered trademarks of ZIH Corp.
EPLPrinter Emulator SDK for .NET
is not made by or endorsed by Zebra.

Convert, Preview & Render EPL commands to PNG, JPG & PDF with C# & VB.NET

EPLPrinter Emulator SDK for .NET allows you to Convert, Preview and Render raw EPL (Zebra/Eltron Programming Language) commands to well known image and document formats like PNG, JPG, PDF, PCX, Zebra GRF ASCII hex, Zebra EPL Binary Graphic, Honeywell-Intermec FingerPrint Binary Graphic, EPSON ESC/POS NV Binary Graphic & HP PCL by writing C# or VB.NET code. It targets .NET Standard 2.0, so it runs on .NET Framework 4.6.1+, .NET Core 2.0+ and modern .NET, as well as Mono, Xamarin and UWP, on Windows, Linux and macOS.

The output can also be printed to any printer: convert EPL to ZPL (GRF) to keep legacy EPL applications working on ZPL-only Zebra printers, or to FingerPrint, ESC/POS, PCL, PNG or PDF for any other printer.

EPL Virtual Printer EPL Viewer EPL Parser EPL Converter EPL Emulator EPL2PNG EPL2JPG EPL2PCX EPL2GRF EPL2PDF EPL2Image EPL2EPL EPL2FingerPrint EPL2ESCPOS EPL2PCL EPL2ZPL


Quick Start: Convert EPL to PDF in C#

  1. Download the SDK and reference Neodynamic.SDK.EPLPrinter in your project.
  2. Create an EPLPrinter (the virtual printer) and set its DPI and label size. The DPI must match the one the EPL was designed for.
  3. Choose the RenderOutputFormat and call ProcessCommands().

Convert an EPL label to PDF

using System.Text;
using Neodynamic.SDK.EPLPrinter;

string epl = "\nN\nq609\nQ203,26\nB26,26,0,UA0,2,2,152,B,\"603679025109\"\nA253,26,0,3,1,1,N,\"SKU 6205518 MFG 6354\"\nA253,56,0,3,1,1,N,\"2XIST TROPICAL BEACH\"\nP1,1\n";

using (var printer = new EPLPrinter("LICENSE OWNER", "LICENSE KEY"))
{
    printer.Dpi = 203;                          // must match the EPL design
    printer.AntiAlias = true;
    printer.LabelWidth  = 3 * printer.Dpi;      // q609 = 3 in at 203 dpi
    printer.LabelHeight = 1 * printer.Dpi;      // Q203 = 1 in
    printer.RenderOutputFormat = RenderOutputFormat.PDF;

    var output = printer.ProcessCommands(epl, Encoding.UTF8);

    if (output != null && output.Count > 0)
        File.WriteAllBytes("label.pdf", output[0]);
}

Change RenderOutputFormat.PDF to PNG, JPG, PCX or GRF to get other formats. VB.NET samples are in the documentation.

Convert multiple labels to PNG images

// P3 = print 3 labels
string epl = "\nN\nq609\nQ203,26\nB26,26,0,UA0,2,2,152,B,\"603679025109\"\nA253,26,0,3,1,1,N,\"SKU 6205518 MFG 6354\"\nA253,56,0,3,1,1,N,\"2XIST TROPICAL BEACH\"\nP3\n";

using (var printer = new EPLPrinter("LICENSE OWNER", "LICENSE KEY"))
{
    printer.Dpi = 203;
    printer.LabelWidth  = 3 * printer.Dpi;
    printer.LabelHeight = 1 * printer.Dpi;
    printer.RenderOutputFormat = RenderOutputFormat.PNG;

    var output = printer.ProcessCommands(epl, Encoding.UTF8);

    // one byte[] per label for image formats
    for (int i = 0; i < output.Count; i++)
        File.WriteAllBytes($"label-{i + 1}.png", output[i]);
}

With PDF output, multiple labels become one PDF with one page per label. Try it without installing anything in the online EPL viewer demo.


Replacing old EPL printers (like the Zebra/Eltron LP/TLP 2844 series) with ZPL-only models, or need EPL labels on a printer that does not speak EPL? EPLPrinter Emulator SDK renders the EPL to the language the target printer understands and sends it directly to the printer, so the application that generates the EPL does not need to change:

Target printerRender EPL toPrint method
Zebra ZPL printersGRF (ZPL graphic)PrintRawCommands()
with EnablePrinting = true
Zebra/Eltron EPL printers (as graphic)EPL or PCX
Honeywell-Intermec FingerPrint printersFP
EPSON ESC/POS receipt printersNV
HP PCL laser printersPCL
Any printer with a driver on WindowsPNG or JPGPrintImage()
Any CUPS printer on Linux & macOSPDFPrintPDF()

Print an EPL label on a ZPL printer over the network

using Neodynamic.SDK.EPLPrinter;
using Neodynamic.SDK.EPLPrinter.Printing;

using (var printer = new EPLPrinter("LICENSE OWNER", "LICENSE KEY"))
{
    printer.Dpi = 203;
    printer.LabelWidth  = 3 * printer.Dpi;
    printer.LabelHeight = 1 * printer.Dpi;
    printer.RenderOutputFormat = RenderOutputFormat.GRF;   // EPL -> ZPL
    printer.EnablePrinting = true;

    var output = printer.ProcessCommands(epl, Encoding.UTF8);

    using (var pj = new WindowsPrintJob())   // UnixPrintJob on Linux/macOS
    {
        pj.PrinterSettings = new PrinterSettings();
        pj.PrinterSettings.Dpi = 203;
        pj.PrinterSettings.Communication.CommunicationType = CommunicationType.Network;
        pj.PrinterSettings.Communication.NetworkIPAddress = IPAddress.Parse("192.168.1.50");
        pj.PrinterSettings.Communication.NetworkPort = 9100;

        pj.PrintRawCommands(output);
    }
}

Printer connectivity

  • USB or any printer installed through a printer driver
  • IP / Ethernet network by IP address or host name (e.g. port 9100)
  • Serial port (RS-232): Windows only
  • Parallel port (Centronics / LPT): Windows only

Printing classes ship in two assemblies: Neodynamic.SDK.EPLPrinter.WindowsPrinting.dll (WindowsPrintJob) and Neodynamic.SDK.EPLPrinter.UnixPrinting.dll (UnixPrintJob) for Linux & macOS.


Features at a Glance

 Convert EPL to Images & Docs

Use EPLPrinter Emulator SDK to easily convert EPL commands to PNG, JPG, PDF, PCX, Zebra GRF ASCII hex, Zebra EPL Binary Graphic, Honeywell-Intermec FingerPrint Binary Graphic, HP PCL Binary Graphic & EPSON ESC/POS NV Binary Graphic formats by writing simple C# or VB.NET code.

 Preview EPL Commands

Need to test EPL commands and don't have a real Zebra/Eltron printer device? No problem! Use EPLPrinter Emulator SDK to preview EPL commands without wasting any single label!

 High Accuracy EPL Render

EPLPrinter Emulator SDK renders EPL commands generating high quality output by reproducing built-in and resident EPL fonts for texts and barcodes with high accuracy.

 Virtual EPL Printer

EPLPrinter Emulator SDK works like a Virtual EPL Printer device. You setup the virtual printer with basic settings like the DPI resolution and default Label Size to finally pass to it the EPL commands to be processed.

 EPL Parsing & Processing

EPLPrinter Emulator SDK can parse EPL commands from a .NET string, .NET Stream or physical file. It can detect UTF-8 encoding automatically. Most of the EPL Formatting and Control Commands are supported.

 On-Premise Licensing

EPLPrinter Emulator SDK is licensed for Private On-Premise environments giving you full control on the infrastructure where our product will run on.

 Barcode Symbologies Support

EPLPrinter Emulator SDK can generate most of the linear (1D), postal, composite, stacked and 2D barcodes shipped with real Zebra printer devices.

 Colored Label Simulation

EPLPrinter Emulator SDK can be configured to convert EPL to PNG, JPG & PDF formats simulating a color ribbon (for label items) and a background color label. Black & White 1bpp is also supported through PCX format.

 Custom EPL Output Rotation

Besides EPL rotation command, EPLPrinter Emulator SDK can be configured to rotate EPL outputs to 90, 180 & 270 clockwise degrees.

 Custom Background Image

EPLPrinter Emulator SDK allows you to render EPL commands on a specified Background Image (in PNG or JPG formats) which can be set from a system file path, URL, Base64 string or a binary buffer (Byte Array).

 Custom Watermark Stamp

You can specify to the EPLPrinter Emulator SDK a custom watermark or stamp image to be rendered on top of the label output!

 Virtual Printer Storage

EPLPrinter Emulator SDK allows you to manage from code the virtual printer storage where graphics can be easily added, edited, updated and removed.

 Real-Time Clock Support

EPLPrinter Emulator SDK supports Real-Time Clock settings through the related EPL commands (TS set clock, TD date and TT time recall) or by setting them from code through the RTC properties, so date/time fields render as on a real printer.

 Web API for Docker!

We also offer the EPLPrinter Web API for Docker as a Linux image so it can be used with Any Development Platform and Programming Languages (.NET, Java, PHP, Javascript, Python, Ruby, etc.)

 Rendered EPL Elements Tracing

EPLPrinter Emulator SDK can return the list of rendered EPL elements based on the processed commands providing the following info: EPL Command Name, Content, X, Y, Width & Height allowing post-rendering processing tasks like custom content replacement.

EPL Rendered Elements Sample 1
EPL Rendered Elements Sample 2

EPL Commands Support

EPLPrinter Emulator SDK rendering engine supports most of the EPL formatting and control commands. The following table lists the supported commands. Not listed or unsupported commands will be skipped in the parsing stage.

IMPORTANT NOTE
Barcode symbols, particularly 2D-type like QR Code, Data Matrix, Aztec Code, Maxicode..., might look different to the one printed by a real printer because EPLPrinter Emulator SDK leverages on its own barcode encoder. However, this does not mean that the rendered barcodes will not be readable at all.
Status EPL Command Notes
A - ASCII TextLatin resident fonts 1, 2, 3, 4, 5, 6, and 7
B - Linear Bar CodeCode 39, Code 93, Code 128, UCC Serial Shipping Container, Codabar, EAN 8-13, German Post Code, Interleaved 2 of 5, Postnet, Planet, UCC/EAN 128, UPC A-E, Plessey, MSI
b - 2D Bar CodeAztec, Data Matrix, MaxiCode, PDF417, and QR Code
C - Counter
FE - End Form Store
FK - Delete Form
FR - Retrieve Form
FS - Store Form
GG - Print Graphics
GK - Delete Graphics
GM - Store Graphics
GW - Direct Graphic Write
LE - Line Draw Exclusive OR
LO - Line Draw Black
LS - Line Draw Diagonal
LW - Line Draw White
N - Clear Image Buffer
P - Print
q - Set Label Width
Q - Set Form Length
R - Set Reference Point
TD - Date Recall & Format Layout
TS - Set Real Time Clock
TT - Time Recall & Format Layout
V - Define Variable
X - Box Draw
Z - Print Direction
^@ - Reset Printer
? - Download Variables


System Requirements

EPLPrinter Emulator SDK is a .NET Standard 2.0 library, so it runs on any platform that supports .NET Standard 2.0 or later:

  • .NET Framework 4.6.1+
  • .NET Core 2.0+ and modern .NET (.NET 5 and later)
  • Mono 5.4+, Xamarin.iOS 10.14+, Xamarin.Android 8.0+, Xamarin.Mac 3.8+
  • Universal Windows Platform (UWP) 10.0.16299+

Dependencies: SkiaSharp 1.68.3+, System.Text.Encoding.CodePages 4.5.0+ and Newtonsoft.Json 13.0.1+. Development with Visual Studio 2017+ (or any IDE that supports .NET Standard 2.0).



Which EPL Edition Do I Need?

The same EPL rendering engine is available in four editions:

EditionBest forHow you use itPlatforms
EPLPrinter Emulator SDK for .NET.NET apps (C#, VB.NET)In-process library: convert, preview and print from codeWindows, Linux, macOS (.NET Standard 2.0)
EPLPrinter Web API for DockerAny language, servers and cloudREST API in a Docker containerLinux container (amd64 & arm64)
Virtual EPL Printer DriverDesktop users and apps that print to a Zebra printerInstalled printer: save EPL as PDF/PNG or print it on any other printerWindows, macOS
EPLServerBackground integration and legacy appsLocal service: HTTP POST + raw TCP; save to disk or forward to a webhookWindows x64, Linux x64 & ARM64, macOS (Apple Silicon & Intel)

EPLPrinter Emulator SDK FAQ

Do I need a Zebra or Eltron printer to preview or convert EPL?
No. EPLPrinter Emulator SDK works like a virtual EPL printer inside your .NET app. You pass it the raw EPL commands and it returns PDF, PNG, JPG or other formats, so you can preview labels without a physical printer and without wasting labels.
Which output formats are supported?
PNG, JPG, PDF and PCX, plus printer formats: Zebra GRF ASCII hex (ZPL), Zebra EPL binary graphic, Honeywell-Intermec FingerPrint binary graphic, EPSON ESC/POS NV binary graphic and HP PCL.
Can I print EPL labels on a ZPL-only Zebra printer?
Yes. See printing. Render the EPL commands to GRF, a ZPL graphic format, with EnablePrinting set to true and send it to the printer with PrintRawCommands. This lets legacy applications that generate EPL keep working when the old EPL printers are replaced by ZPL printers, without rewriting the label code.
Can I print EPL labels on non-Zebra printers?
Yes. Render to Honeywell FingerPrint, EPSON ESC/POS NV or HP PCL and print with PrintRawCommands, or render to PNG/JPG and print to any driver-installed printer on Windows, or to PDF and print to any CUPS printer on Linux and macOS.
What happens when the EPL generates more than one label?
For example P3 prints three labels. For PDF you get a single document with one page per label. For PNG, JPG, PCX, GRF, EPL, FingerPrint, PCL and NV you get one byte array per label.
Why does my rendered label look scaled or cut off?
The DPI set on the virtual printer must match the DPI the EPL was designed for (for example 203 or 300 dpi), and the label size should match the q (label width) and Q (form length) commands. For example q609 at 203 dpi is a 3 inch wide label.
Will barcodes look exactly like on a real printer?
Linear barcodes and resident fonts are reproduced with high accuracy. 2D symbols such as QR Code, Data Matrix, Aztec, MaxiCode or PDF417 are generated by the SDK's own encoder, so they can look slightly different from a real printer while still being readable.
Which .NET versions are supported?
EPLPrinter Emulator SDK targets .NET Standard 2.0, so it works on .NET Framework 4.6.1+, .NET Core 2.0+, modern .NET (.NET 5 and later), Mono 5.4+, Xamarin and UWP 10.0.16299+. See system requirements.
Does it run on Linux and macOS?
Yes. Rendering works on Windows, Linux and macOS. For printing, use WindowsPrintJob on Windows and UnixPrintJob on Linux and macOS; serial and parallel port printers are supported on Windows only.
How is this different from an online EPL viewer?
EPLPrinter Emulator SDK runs on-premise inside your own application, so labels with customer or shipping data never leave your infrastructure and there is no dependency on an external web service.
Can I use it from Java, Python, PHP or Node.js?
The SDK is for .NET (C# and VB.NET). For any other language, use the EPLPrinter Web API for Docker, a Linux container that exposes the same rendering engine over HTTP.