FAQ TBarCode DLL / TBarCode Library
How Can I Add a Bearer Bar to ITF-14?
How Can I Add a Bearer Bar to ITF-14?
The bearer bar shape and size depend on the printing surface and the application. The possible sizes for module width, bar code height and bearer bar can be found in the GS1 specification Figure 5.3.6-1.
To maintain a minimum quiet zone of 10 times the module width, the left and right quiet zones must be adjusted in the TBarCode API, taking into account the bearer bar size.
Below we show two cases with different dimensions of the bar code and bearer bar:
Top and Bottom Bearer Bars
ITF-14 can be drawn with a top + bottom bearer bar if you use labels (no printing plates). In this case the bearer bar can be smaller, but must be at least 2 times the module width.
BCSetBCType(m_pbarCode, eBC_ITF14);
// #1 print on label
// 203 dpi ➞ Module Width = 0.5005 mm = 4 Pixel per Module
double const dModuleWidth = 0.5004926F; // use exact value
// 300/600/1200 dpi ➞ Module Width = 0.508 mm
// double const dModuleWidth = 0.508F;
BCSetModWidthN(m_pbarCode, dModuleWidth * 1000); // set in 0.001 mm units
double const dModulesBearerBar = 2.0F; // 2 times the module width
BCSetBearerBarType(m_pbarCode, eBearerBar_TopAndBottom);
BCSetBearerBarWidth(m_pbarCode, static_cast<int> (dModulesBearerBar * dModuleWidth * 1000)); // set in 0.001 mm units
RECTD QZRect = { 10, 0, 10, 0 };
BCSetQuietZone(m_pbarCode, &QZRect, eMUModules);
eCode = BCSetText(m_pbarCode, szText, szText.GetLength());
if (eCode == S_OK)
eCode = BCCreate(m_pbarCode); // create internal bar code structure (MUST)
Rectangular Bearer Bar
For direct carton printing, the bearer bar must be rectangular and of a certain size, in which case the barcode size should also be enlarged.
// #2 print on carton
// for rectangular bearer bar having a width of 4.83 mm
// 203 dpi ➞ Module Width = 1.000 mm = 8 Pixel per Module
double const dModuleWidth = 1.0F;
// 300/600/1200 dpi ➞ Module Width = 1.016 mm
//double const dModuleWidth = 1.016F;
BCSetModWidthN(m_pbarCode, dModuleWidth * 1000); // set in 0.001 mm units
double dBearerBarWidth = 4.83F;
double dModulesBearerBar = ceil(dBearerBarWidth / dModuleWidth);
BCSetBearerBarType(m_pbarCode, eBearerBar_Rectangle);
BCSetBearerBarWidth(m_pbarCode, static_cast<int> (dBearerBarWidth * 1000)); // set in 0.001 mm units
RECTD QZRect = { 10 + dModulesBearerBar, 0, 10 + dModulesBearerBar, 0 };
BCSetQuietZone(m_pbarCode, &QZRect, eMUModules);