ECC200 Генерация Datamatrix в PHP
Кто-нибудь имел опыт создания 2D штрих-кодов для Royal Mail через PHP? Я потратил некоторое время, пытаясь заставить свои собственные процедуры написать допустимую матрицу данных, к сожалению, безрезультатно.
У меня есть рабочие процедуры преобразования для ASCII в C40 и создатели контрольных сумм Luhn 16, но я просто не могу получить что-либо с графическим представлением или созданием байта ECC200 в этом отношении.
Существуют ли какие-либо предварительно написанные библиотеки с документацией, которые помогут отнять много дальнейшей работы?
Мне нужно иметь возможность генерировать это в серверной среде, без идеального использования внешних сайтов или генерации изображений.
1 ответ
Мы используем Zint Barcode Generator
Пакеты Unix для генерации кода QR и PDF417. Royal Mail также поддерживается.
(на CentOS dnf install zint
, Ubuntu требует больше работы).
Документация Zint: http://www.zint.org.uk/
В PHP используйте system
метод, пример:
$targetFilePath = dirname(__FILE__).'/test.png';
$contents = 'ABC123';
system('zint ...params... -o"' . $targetFilePath . '" -d"' . $contents . '"');
var_dump(file_exists($targetFilePath));
Он сгенерирует изображение в запрошенном $targetFilePath.
Для генерации матрицы данных ECC200 в PHP мы успешно использовали:
sudo apt install dmtx-utils
Чтобы вывести файл PNG с сервера, при обычных настройках apache2 вы получите штрих-код в формате PNG при входе в браузер: http://yourserver.com/datamatrix/?in=yourbarcodetext
<?php
ob_start();
$old_path = getcwd();
$infile = "/var/www/html/datamatrix/message2.txt";
$image = "/var/www/html/datamatrix/image.png";
file_put_contents($infile,$_GET["in"]);
$ex = "export HOME=/tmp && /usr/bin/dmtxwrite {$infile} -o {$image}";
echo "<b>$ex</b>";
$output = shell_exec($ex);
echo var_export($output, TRUE);
echo "done";
chdir($old_path);
$im = imagecreatefrompng($image);
ob_end_clean();
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);