Проблема сопоставления штрих-кодов Code128A, созданных с помощью iTextSharp, и штрих-кодов. 4NET

Прежде всего, я новичок в форматах штрих-кодов, и то, что я знаю, я узнал из Википедии.

У нас есть несколько штрих-кодов, сгенерированных существующим приложением, использующим библиотеку 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";

На изображении ниже показано лучшее, что я сделал на данный момент.

Проблема сопоставления штрих-кодов Code128A, созданных с помощью iTextSharp, и штрих-кодов. 4NET

Изображение вверху создается iTextSharp, а изображение внизу - Barcode4Net. Очевидно, они не одинаковы (и не только по размеру и шрифту - данные со штрих-кодом сильно отличаются).

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
6 716
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

номер должен быть:

*045746201627080857*

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

сканеру нужны начальная и конечная звездочки на этом типе BC.

для того, что я вижу в вашем коде, строка

code128.StartStopText = true;

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

Code128ABarcode c128A = new Code128ABarcode("*045746201627080857*");

попробуй себя :)

Отредактировано:

Правильный штрих-код:

alt text

по ссылке ниже (используя Бесплатная услуга ID Automation):

http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=1

что у вас есть:

alt text

и это Код128C вместо Код128A, как вы можете проверить ссылку (я изменил свойства штрих-кода на Code128C)

http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=3

Строка Code128ABarcode - это, по-видимому, правильный (это та, которую я пытаюсь сопоставить). Любая комбинация звездочек и изменения StartStopText, которую я пробовал, по-прежнему не подходит.

CMPalmer 17.11.2008 06:23

Я только что отредактировал и добавил правильный код. Библиотека Barcode.4NET предоставляет вам Code128C вместо Code128A.

balexandre 17.11.2008 07:05

Звездочки требуются только для кода 3 из 9, а НЕ для кода 128.

Mark Ransom 17.11.2008 07:33
Ответ принят как подходящий

Неужели им действительно необходимо выглядеть одинаково? Все разные версии Code 128 могут кодировать числа, даже если сами штрих-коды выглядят совершенно по-разному; читатель должен во всем разобраться в конце.

Я предпочитаю вариант B, потому что в нем есть не только прописные, но и строчные буквы. Вы можете увидеть таблицу с подробным описанием различий на http://www.barcodeisland.com/code128.phtml

iTextSharp выглядит так, как будто он генерирует вариант C, который является наиболее компактным, если текст состоит только из десятичных цифр. Он кодирует 2 цифры на том же пространстве, что и один символ в других кодировках.

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

CMPalmer 17.11.2008 22:01

Хотя я думаю, что Балександр перепутал генераторы, его совет хорош.

Очевидно, Barcode.4NET правильно генерирует штрих-код Code 128A, который я пытаюсь имитировать.

iTextSharp генерирует штрих-код Code 128C, который, по словам Марка Рэнсома, должен быть в порядке, за исключением того, что пользователи и покупатель, вероятно, посмотрят на него и скажут: «Он слишком короткий и должен выглядеть как другие!»

Итак, отличный совет, но я все еще возвращаюсь к вопросу «Как сгенерировать штрих-код Code 128A с помощью iTextSharp?»

считыватель штрих-кода будет считывать оба, если вы его настроите, по умолчанию устройства Datalogic и Symbol считывают коды Code128 от A до C без каких-либо конкретных параметров.

balexandre 17.11.2008 13:26

Спасибо. Я уточняю у наших клиентов, не возражают ли они перейти на штрих-коды 128C.

CMPalmer 17.11.2008 17:44

Другие вопросы по теме