Часто задаваемые вопросы: TBarCode DLL / TBarCode Library
Как добавить несущую полосу (Bearer Bar) к ITF-14?
Как добавить несущую полосу (Bearer Bar) к ITF-14?
Форма и размер несущей полосы зависят от печатной поверхности и области применения. Возможные размеры для ширины модуля, высоты штрихкода и несущей полосы можно найти в спецификации GS1, рисунок 5.3.6-1.
Чтобы сохранить минимальную зону тишины в 10 раз больше ширины модуля, левую и правую зоны тишины нужно скорректировать в API TBarCode с учётом размера несущей полосы.
Ниже показаны два случая с разными размерами штрихкода и несущей полосы:
Верхние и нижние несущие полосы
ITF-14 можно нарисовать с верхней и нижней несущей полосой, если вы используете этикетки (без печатных пластин). В этом случае несущая полоса может быть меньше, но должна быть не менее чем в 2 раза шире модуля.
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)
Прямоугольная несущая полоса
Для прямой печати на картоне несущая полоса должна быть прямоугольной и определённого размера, при этом размер штрихкода также следует увеличить.
// #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);