Datamatrix 16×48 с библиотекой TCPDF для переполнения стека

мне нужно напечатать код datamatrix на моем PDF.

Запрашиваемый формат по документации: матрица данных 16×48 ECC 200.

Пример кода: 18800000571920119916120010109364801000000128003896

Результат должен быть таким:

Я использую библиотеку TCPDF для PHP, и это мой код:

$code = '18800000571920119916120010109364801000000128003896';
$style = array(
'border' => true,
'vpadding' => 'auto',
'hpadding' => 'auto',
'fgcolor' => array(0,0,0),
'bgcolor' => false, //array(255,255,255)
'module_width' => 1, // width of a single module in points
'module_height' => 1, // height of a single module in points
'position' => 'S'
);
$pdf->write2DBarcode($code, 'DATAMATRIX', 150, 10, 80, 50, $style, 'N', true);

В файле include / barcodes / datamatrix.php я прокомментировал все размеры datamatrix, оставив только 16×48 (потому что, если я оставлю все, я получу размер 32×32 по стандарту).

Вот что я получаю:

Левая часть очень похожа на правильный результат, но правая часть полностью белая !!!

Что я делаю неправильно?

0

Решение

Конструктор Datamatrix проверяет наиболее подходящий размер формы для использования с учетом данных. Определения форм (квадрат и прямоугольник) определены в классе Datamatrix (с l.147 до l.177). В целях тестирования я поставил определения прямоугольников перед квадратами. Он генерирует матрицу данных 16×48, если данные не слишком длинные, но я не проверял целостность данных. include / barcodes / datamatrix.php:

protected $symbattr = array(
// rectangular form (currently unused) ---------------------------------------------------------------------------
array(0x008,0x012,0x006,0x010,0x008,0x012,0x006,0x010,0x001,0x001,0x001,0x005,0x007,0x001,0x005,0x007), // 8x18
array(0x008,0x020,0x006,0x01c,0x008,0x010,0x006,0x00e,0x001,0x002,0x002,0x00a,0x00b,0x001,0x00a,0x00b), // 8x32
array(0x00c,0x01a,0x00a,0x018,0x00c,0x01a,0x00a,0x018,0x001,0x001,0x001,0x010,0x00e,0x001,0x010,0x00e), // 12x26
array(0x00c,0x024,0x00a,0x020,0x00c,0x012,0x00a,0x010,0x001,0x002,0x002,0x00c,0x012,0x001,0x00c,0x012), // 12x36
array(0x010,0x024,0x00e,0x020,0x010,0x012,0x00e,0x010,0x001,0x002,0x002,0x020,0x018,0x001,0x020,0x018), // 16x36
array(0x010,0x030,0x00e,0x02c,0x010,0x018,0x00e,0x016,0x001,0x002,0x002,0x031,0x01c,0x001,0x031,0x01c),  // 16x48

// square form ---------------------------------------------------------------------------------------
array(0x00a,0x00a,0x008,0x008,0x00a,0x00a,0x008,0x008,0x001,0x001,0x001,0x003,0x005,0x001,0x003,0x005), // 10x10
array(0x00c,0x00c,0x00a,0x00a,0x00c,0x00c,0x00a,0x00a,0x001,0x001,0x001,0x005,0x007,0x001,0x005,0x007), // 12x12
array(0x00e,0x00e,0x00c,0x00c,0x00e,0x00e,0x00c,0x00c,0x001,0x001,0x001,0x008,0x00a,0x001,0x008,0x00a), // 14x14
array(0x010,0x010,...
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector