Мне нужно иметь возможность преобразовать любую строку в штрих-код code128, который можно распечатать на PDF.
Моя идея заключалась в том, чтобы встроить шрифт code128 в PDF и просто использовать этот шрифт для рендеринга строки, которую мне нужно показать как штрих-код, буква за буквой.
Однако я узнал, что мне также нужно вычислить контрольную сумму и включить символы начала и окончания.
Разве это не возможно с помощью PHP? Я не нашел никакого решения нигде. Единственные решения, которые я смог найти, — это прямое отображение штрих-кода в виде изображения, что не помогает в моей текущей ситуации, поскольку мне нужно использовать шрифт для создания штрих-кода в PDF.
Самый простой способ создать штрих-код в PHP для PDF — это использовать специальную библиотеку программного обеспечения.
AFAIK, самый полный в настоящее время дц Пб-штрихкод (https://github.com/tecnickcom/tc-lib-barcode), который позволяет генерировать как линейные, так и двумерные штрих-коды. Приведенный пример должен дать вам быстрый старт.
Исходный код полностью соответствует PSR-2 и может быть легко добавлен в ваши проекты PHP с помощью Композитор.
Исходный код был перенесен и изменен с TCPDF и уже используется в миллиардах документов.
Если вы ограничите свои усилия до 128B, у вас есть доступ к прописным и строчным буквам, цифрам и большинству знаков препинания. Это также избавляет вас от необходимости писать код для переключения между символами A и C. Это делает код для вычисления контрольной суммы действительно тривиальным.
Начальный символ кода 128В имеет значение 104. Стоповый символ для всех вариантов кода 128 имеет значение 106, но это значение не учитывается при вычислении chksum. Давайте выберем строку «Hello» для реального упражнения. Вы хотите убедиться, что у вас есть доступ к Код 128 стол. Все значения, которые я буду обсуждать, находятся вне этой таблицы, а не ASCII или UTF-8.
Контрольная сумма рассчитывается путем сложения кратного значения символа по его положению в штрих-коде, за исключением начального кода.
Хотя позиция начального кода равна «1», позиция первого символа, следующего за начальным кодом, также имеет место. Таким образом, начальный код и первый байт данных («H») умножаются на число 1 ((104 × 1) + (40 × 1) = 144).
Следующие 4 байта получают постепенно увеличивающийся множитель ((69 × 2) + (76 × 3) + (76 × 4) + (79 × 5) = 1065). Суммируя все вместе (144 + 1065) мы получаем 1209.
Вы должны быть в состоянии использовать оператор модуля (1209% 103) в PHP, чтобы получить 76 для символа контрольной суммы для строки кода 128B «Hello» (значение 103 является константой, поверьте мне в этом). Итак, последний массив кодов для сопоставления «Hello» со штрих-кодом Code 128:
[104 40 69 76 76 79 76 106].
Вам понадобятся таблицы поиска, чтобы преобразовать строковые символьные значения в символьные значения Code 128B в любой ожидаемый шрифт штрих-кода. Но все, что вам нужно, это цикл, индекс массива, накопитель для суммирования факторов и оператор модуля для постоянного значения 103.