Shakir Ali Ответов: 1

Как установить ширину полосы с помощью генератора штрих-кодов zen


Я использую Дзен-штрих-код .dll , чтобы сгенерировать штрих-код , но согласно моей этикетке , если я передаю длину символа более 10 , то полный штрих-код не получает печати и не может сканироваться. Поэтому нужно установить ширину штрих-кода , чтобы подкладка штрих-кода уменьшилась, и я могу напечатать 20 символов на этикетке той же длины.

Что я уже пробовал:

Дзен.Штрих-Код.Code39BarcodeDraw barcode = Zen.Штрих-код.BarcodeDrawFactory.Code39WithoutChecksum;

var barcodeImage1 = штрих-код.Ничья("здесь проходит персонаж", 28);
var barcodeImage2 = штрих-код.Ничья("здесь проходит персонаж", 28);

var resultImage1 = новое растровое изображение(barcodeImage1.Ширина, barcodeImage1.Высота + 20); // 20-это нижняя прокладка, подстраиваемая под ваш текст
var resultImage2 = новое растровое изображение(barcodeImage2.Ширина, barcodeImage2.Высота + 62); // 20-это нижний отступ, подстраиваемый под ваш текст

использование (var graphics1 = графика.FromImage(resultImage1))
использование (var graphics2 = графика.FromImage(resultImage2))
использование (var font = new Font("Consolas", 7))
использование (var brush = new SolidBrush(Color.Черный))
использование (var format = new StringFormat()
{
Выравнивание = StringAlignment.Центр, // также горизонтально центрированный текст, как в вашем примере ожидаемого вывода
LineAlignment = StringAlignment.Far
})
{
графический объект1.Ясно(Цвет.Белый);
эВ.графика.DrawImage(barcodeImage1, 10, 3);
эВ.графика.DrawString(originalNo, шрифт, кисть, resultImage1.Ширина / 2, resultImage1.Высота, формат);

graphics2.Clear(цвет.Белый);
эВ.графика.Функция drawImage(barcodeImage2, 10,48);
эВ.графика.DrawString(InhouseNo, шрифт, кисть, resultImage2.Ширина / 2, resultImage2.Высота, формат);

}

Richard MacCutchan

Если этикетка недостаточно широка, чтобы содержать полный штрих-код, то вы ничего не можете сделать в коде, чтобы изменить его. Вам нужно найти самую маленькую настройку, которая позволяет четко печатать штрих-код, и использовать этикетки, которые достаточно широки, чтобы вместить такое количество данных.

1 Ответов

Рейтинг:
4

OriginalGriff

Проблема, вероятно, заключается в том, что площадь, выделенная для штрих-кода, недостаточна для объема данных, которые вы пытаетесь предоставить: Code39 не является особенно экономичным штрих-кодом, и по мере добавления к нему символов ширина общего штрих-кода продолжает расти. Код-39 Калькулятор Длины Штрих - Кода-Прослеживаемость[^]
Если пространство, которое вы выделили, не растет, то произойдет одно из трех событий:
1) ширина стержня должна быть уменьшена. Это ставит под угрозу читаемость и может легко привести к совершенно бесполезным штрих-кодам.
2) штрих-код становится усеченным, и не все бары печатаются: это делает штрих-код либо нечитаемым, либо непригодным для использования, поскольку некоторая информация отсутствует в считывании (Code39 не содержит "встроенного" байта контрольной суммы, поэтому это не обязательно может быть легко обнаружено)
3) штрих-код нарушает спокойную зону на одном или обоих концах, и штрих-код становится нечитаемым.

Единственное решение, которое будет работать во всех случаях, - это увеличить размер области, в которой вы печатаете штрих-код.


Shakir Ali

Спасибо за ваш ответ , но я не могу изменить ширину этикетки , у меня есть фиксированный размер(50*25 мм) , так как я пробовал Neodynamic генерировать штрих-код , здесь была возможность установить ширину штрих-кода, см. ниже .
&низкотемпературный;
BarcodeItem bcItem1 = новый BarcodeItem(0, 3.5, 50, 8, BarcodeSymbology.Code128, _OriginalSerialNo);

bcItem1.BarHeight = 6;

bcItem1.BarWidth = 0.3;
>
Я хочу знать тот же вариант , как я могу установить ширину штрих-кода в Дзен-штрих-код также , Так что подкладка штрих-кода получить автоматически настроить, в соответствии с Code39WithoutChecksum , он получает ширину по умолчанию.