Прежде всего, я новичок в форматах штрих-кодов, и то, что я знаю, я узнал из Википедии.
У нас есть несколько штрих-кодов, сгенерированных существующим приложением, использующим библиотеку Barcode.4NET. Штрих-код имеет формат Code 128A. Код для их генерации довольно прост и выглядит примерно так:
// Create the barcode
Code128ABarcode c128A = new Code128ABarcode("045746201627080857");
Никаких других параметров для него не задано - после настройки данных мы просто получаем обратно из библиотеки GIF-версию штрих-кода.
Я работаю над новым приложением, которое использует iTextSharp для создания PDF-файлов, и я решил, что вместо использования двух библиотек я бы использовал библиотеку генерации штрих-кодов iTextSharp, поскольку она поддерживает штрих-коды Code128. Он имеет несколько различных вариаций Code 128, но ни один из них не является «Code 128A».
Вот как выглядит его код:
Barcode128 code128 = new Barcode128();
code128.CodeType = Barcode.CODE128;
code128.ChecksumText = true;
code128.GenerateChecksum = true;
code128.StartStopText = true;
code128.Code = "045746201627080857";
На изображении ниже показано лучшее, что я сделал на данный момент.

Изображение вверху создается iTextSharp, а изображение внизу - Barcode4Net. Очевидно, они не одинаковы (и не только по размеру и шрифту - данные со штрих-кодом сильно отличаются).
Кто-нибудь достаточно знаком с компонентами штрих-кода iTextSharp (или самого iText) или со штрих-кодами Code 128A, чтобы сказать мне, как сделать так, чтобы iTextSharp выглядел точно так же, как Barcode.4NET?





номер должен быть:
*045746201627080857*
вам нужно добавить звездочку в начало и конец, чтобы штрих-код можно было прочитать, вам нужно проверить документацию на компонент, где нужны эти символы.
сканеру нужны начальная и конечная звездочки на этом типе BC.
для того, что я вижу в вашем коде, строка
code128.StartStopText = true;
автоматически добавляет его, попробуйте установить для этого свойства значение false, вы получите тот же штрих-код. В первом коде вы должны использовать
Code128ABarcode c128A = new Code128ABarcode("*045746201627080857*");
попробуй себя :)
Отредактировано:
Правильный штрих-код:
по ссылке ниже (используя Бесплатная услуга ID Automation):
http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=1
что у вас есть:
и это Код128C вместо Код128A, как вы можете проверить ссылку (я изменил свойства штрих-кода на Code128C)
http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=3
Я только что отредактировал и добавил правильный код. Библиотека Barcode.4NET предоставляет вам Code128C вместо Code128A.
Звездочки требуются только для кода 3 из 9, а НЕ для кода 128.
Неужели им действительно необходимо выглядеть одинаково? Все разные версии Code 128 могут кодировать числа, даже если сами штрих-коды выглядят совершенно по-разному; читатель должен во всем разобраться в конце.
Я предпочитаю вариант B, потому что в нем есть не только прописные, но и строчные буквы. Вы можете увидеть таблицу с подробным описанием различий на http://www.barcodeisland.com/code128.phtml
iTextSharp выглядит так, как будто он генерирует вариант C, который является наиболее компактным, если текст состоит только из десятичных цифр. Он кодирует 2 цифры на том же пространстве, что и один символ в других кодировках.
Хотя это не совсем тот ответ, который я искал, я дам ему кивок. Мой клиент сказал, что до тех пор, пока стандартный сканер может считывать любой из них, у нас все в порядке, и теперь я знаю, какой из них какой.
Хотя я думаю, что Балександр перепутал генераторы, его совет хорош.
Очевидно, Barcode.4NET правильно генерирует штрих-код Code 128A, который я пытаюсь имитировать.
iTextSharp генерирует штрих-код Code 128C, который, по словам Марка Рэнсома, должен быть в порядке, за исключением того, что пользователи и покупатель, вероятно, посмотрят на него и скажут: «Он слишком короткий и должен выглядеть как другие!»
Итак, отличный совет, но я все еще возвращаюсь к вопросу «Как сгенерировать штрих-код Code 128A с помощью iTextSharp?»
считыватель штрих-кода будет считывать оба, если вы его настроите, по умолчанию устройства Datalogic и Symbol считывают коды Code128 от A до C без каких-либо конкретных параметров.
Спасибо. Я уточняю у наших клиентов, не возражают ли они перейти на штрих-коды 128C.
Строка Code128ABarcode - это, по-видимому, правильный (это та, которую я пытаюсь сопоставить). Любая комбинация звездочек и изменения StartStopText, которую я пробовал, по-прежнему не подходит.