Neodynamic ThermalLabel SDK 8.0+
Microsoft .NET Framework 4.6.1+
Microsoft Visual Studio 2017+
Any Zebra Thermal Printer supporting ZPL (Zebra Programming Language) or EPL (Eltron Programming Language)
ThermalLabel SDK supports .NET Data Binding scenarios allowing you to print thermal labels bound to a data source such as custom .NET objects, XML files, Databases, ADO.NET, etc.
In this guide you will learn how to perform data binding with databases like MS Access or SQL Server to print barcode labels with Zebra ZPL or EPL printers by using ThermalLabel SDK for .NET
The following sample features an MS Access Database file (C:\Temp\DatabaseSample.mdb) containing an Employees table. An ADO.NET DataTable as well as a ThermalLabel objects will be used for data binding scenario printing a set of thermal labels for each employee as shown in the following figure.
IMPORTANT: To test the sample code you must have installed a Zebra ZPL-based or EPL-based thermal printer.
'Define a ThermalLabel object and set unit to inch and label size
Dim tLabel As New ThermalLabel(UnitType.Inch, 3, 2)
tLabel.GapLength = 0.2
'Define a couple of TextItem objects for Employee info
Dim txt1 As New TextItem(0.1, 0.05, 2.8, 0.3, "")
'set data field
txt1.DataField = "Name"
'set font
txt1.Font.Name = "Arial"
txt1.Font.Unit = FontUnit.Point
txt1.Font.Size = 12
'set alignment
txt1.TextAlignment = TextAlignment.Left
Dim txt2 As New TextItem(0.1, 0.35, 2.8, 0.3, "")
'set data field
txt2.DataField = "Address"
'set font
txt2.Font.Name = "Arial Narrow"
txt2.Font.Unit = FontUnit.Point
txt2.Font.Size = 10
'set alignment
txt2.TextAlignment = TextAlignment.Left
Dim txt3 As New TextItem(0.1, 0.65, 1.5, 0.3, "")
'set data field
txt3.DataField = "City"
'set font
txt3.Font.Name = "Arial Narrow"
txt3.Font.Unit = FontUnit.Point
txt3.Font.Size = 10
'set alignment
txt3.TextAlignment = TextAlignment.Left
Dim txt4 As New TextItem(1.6, 0.65, 0.5, 0.3, "")
'set data field
txt4.DataField = "State"
'set font
txt4.Font.Name = "Arial Narrow"
txt4.Font.Unit = FontUnit.Point
txt4.Font.Size = 10
'set alignment
txt4.TextAlignment = TextAlignment.Left
Dim txt5 As New TextItem(2.1, 0.65, 0.7, 0.3, "")
'set data field
txt5.DataField = "PostalCode"
'set font
txt5.Font.Name = "Arial Narrow"
txt5.Font.Unit = FontUnit.Point
txt5.Font.Size = 10
'set alignment
txt5.TextAlignment = TextAlignment.Left
'Define a BarcodeItem object for encoding the postal code in USPS Postnet
Dim bc As New BarcodeItem(0.1, 0.95, 2.8, 0.65, BarcodeSymbology.Postnet, "")
'set data field
bc.DataField = "PostalCode"
'set narrow bar width
bc.BarWidth = 0.02
'do not set a quiet zone
bc.QuietZone = new FrameThickness(0)
'set barcode alignment
bc.BarcodeAlignment = BarcodeAlignment.TopLeft
'hide human readable text
bc.DisplayCode = False
'Add items to ThermalLabel object...
tLabel.Items.Add(txt1)
tLabel.Items.Add(txt2)
tLabel.Items.Add(txt3)
tLabel.Items.Add(txt4)
tLabel.Items.Add(txt5)
tLabel.Items.Add(bc)
'Create data source...
Dim employees As New DataTable()
Using conn As New System.Data.OleDb.OleDbConnection("Provider= Microsoft.JET.OLEDB.4.0; Data Source=C:\temp\DataBaseSample.mdb")
'open db connection...
conn.Open()
'execute db command...
Using cmd As New System.Data.OleDb.OleDbCommand("SELECT TOP 6 * FROM Employees", conn)
Using reader As System.Data.OleDb.OleDbDataReader = cmd.ExecuteReader()
employees.Load(reader)
End Using
End Using
End Using
'set data source...
tLabel.DataSource = employees
'Create a WindowsPrintJob object
Using pj As New WindowsPrintJob()
'Create PrinterSettings object
Dim myPrinter As New PrinterSettings()
myPrinter.Communication.CommunicationType = CommunicationType.USB
myPrinter.Dpi = 203
myPrinter.ProgrammingLanguage = ProgrammingLanguage.ZPL
myPrinter.PrinterName = "Zebra TLP2844-Z"
'Set PrinterSettings to PrintJob
pj.PrinterSettings = myPrinter
'Print ThermalLabel object...
pj.Print(tLabel)
End Using
//Define a ThermalLabel object and set unit to inch and label size
ThermalLabel tLabel = new ThermalLabel(UnitType.Inch, 3, 2);
tLabel.GapLength = 0.2;
//Define a couple of TextItem objects for Employee info
TextItem txt1 = new TextItem(0.1, 0.05, 2.8, 0.3, "");
//set data field
txt1.DataField = "Name";
//set font
txt1.Font.Name = "Arial";
txt1.Font.Unit = FontUnit.Point;
txt1.Font.Size = 12;
//set alignment
txt1.TextAlignment = TextAlignment.Left;
TextItem txt2 = new TextItem(0.1, 0.35, 2.8, 0.3, "");
//set data field
txt2.DataField = "Address";
//set font
txt2.Font.Name = "Arial Narrow";
txt2.Font.Unit = FontUnit.Point;
txt2.Font.Size = 10;
//set alignment
txt2.TextAlignment = TextAlignment.Left;
TextItem txt3 = new TextItem(0.1, 0.65, 1.5, 0.3, "");
//set data field
txt3.DataField = "City";
//set font
txt3.Font.Name = "Arial Narrow";
txt3.Font.Unit = FontUnit.Point;
txt3.Font.Size = 10;
//set alignment
txt3.TextAlignment = TextAlignment.Left;
TextItem txt4 = new TextItem(1.6, 0.65, 0.5, 0.3, "");
//set data field
txt4.DataField = "State";
//set font
txt4.Font.Name = "Arial Narrow";
txt4.Font.Unit = FontUnit.Point;
txt4.Font.Size = 10;
//set alignment
txt4.TextAlignment = TextAlignment.Left;
TextItem txt5 = new TextItem(2.1, 0.65, 0.7, 0.3, "");
//set data field
txt5.DataField = "PostalCode";
//set font
txt5.Font.Name = "Arial Narrow";
txt5.Font.Unit = FontUnit.Point;
txt5.Font.Size = 10;
//set alignment
txt5.TextAlignment = TextAlignment.Left;
//Define a BarcodeItem object for encoding the postal code in USPS Postnet
BarcodeItem bc = new BarcodeItem(0.1, 0.95, 2.8, 0.65, BarcodeSymbology.Postnet, "");
//set data field
bc.DataField = "PostalCode";
//set narrow bar width
bc.BarWidth = 0.02;
//do not set a quiet zone
bc.QuietZone = new FrameThickness(0);
//set barcode alignment
bc.BarcodeAlignment = BarcodeAlignment.TopLeft;
//hide human readable text
bc.DisplayCode = false;
//Add items to ThermalLabel object...
tLabel.Items.Add(txt1);
tLabel.Items.Add(txt2);
tLabel.Items.Add(txt3);
tLabel.Items.Add(txt4);
tLabel.Items.Add(txt5);
tLabel.Items.Add(bc);
//Create data source...
DataTable employees = new DataTable();
using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(@"Provider= Microsoft.JET.OLEDB.4.0; Data Source=C:\temp\DataBaseSample.mdb"))
{
//open db connection...
conn.Open();
//execute db command...
using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("SELECT TOP 6 * FROM Employees", conn))
{
using (System.Data.OleDb.OleDbDataReader reader = cmd.ExecuteReader())
{
employees.Load(reader);
}
}
}
//set data source...
tLabel.DataSource = employees;
//Create a WindowsPrintJob object
using (WindowsPrintJob pj = new WindowsPrintJob())
{
//Create PrinterSettings object
PrinterSettings myPrinter = new PrinterSettings();
myPrinter.Communication.CommunicationType = CommunicationType.USB;
myPrinter.Dpi = 203;
myPrinter.ProgrammingLanguage = ProgrammingLanguage.ZPL;
myPrinter.PrinterName = "Zebra TLP2844-Z";
//Set PrinterSettings to PrintJob
pj.PrinterSettings = myPrinter;
//Print ThermalLabel object...
pj.Print(tLabel);
}
We provide best-in-class customer service and support directly from members of our dev team! If we are available when you contact us, you will get a response in few minutes; otherwise the maximum turnaround is 24hs in most cases.