Генерация GS1 DataMatrix с использованием ZXing.Net

Что мне нужно

Нужно сгенерировать работающую GS1 DataMatrix, используя этот тестовый контент:

(240) 1234567890 (10) AA12345 (11) 123456 (21) 1 (96) 1234567

меры

Я скачал пакет Nuget отсюда:

а также

Я создал консольное приложение, которое использует этот код:

private static void DoGs1DataMatrixStuff()
{
    var writer = new BarcodeWriter
    {
        Format = BarcodeFormat.DATA_MATRIX
    };

    writer
        .Write("(240)1234567890(10)AA12345(11)123456(21)1(96)1234567")
        .Save(@"C:\Temp\barcode.png");
}

Нет очевидного конкретного формата GS1_DataMatrix, который я мог бы использовать...

это дает мне

который при чтении приложением сканера на моем смартфоне дает буквальный контент, который я первоначально представил, а не с форматированием FNC1, которое я ожидаю для GS1:

(240) 1234567890 (10) AA12345 (11) 123456 (21) 1 (96) 1234567

в то время как это должно быть

2401234567890 10AA12345 11123456211 961234567

Из другого источника (не источника, который я могу использовать) я получил этот штрих-код:

С помощью моего приложения для смартфона это считывает правильные данные.

Вопрос

Как я могу воссоздать эту рабочую матрицу данных GS1, используя ZXing.Net?

также см

По этой ссылке Крис Банс поднимает ту же проблему, что и я, но его запрос не получил рабочего ответа.

1 ответ

Решение

Вы должны использовать отформатированную строку с символом ASCII 29 (GS - Group Separator):

240123456789010AA1234511123456211961234567

(заменить "" на ASCII 29)

ZXing.Net поддерживает символ GS с кодировщиком ASCII начиная с версии 0.15. Он заменяет значение ASCII 29 на кодовое слово FNC1 (232) в результирующем изображении матрицы данных.

Это только поддержка низкого уровня. Не существует встроенного класса или чего-то подобного, который понимает AI (идентификаторы приложений) с фиксированной или переменной длиной (аналогично классам анализатора результата для vCards, vEvent, ISBN, ...).

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