PHP 中的 ECC200 数据矩阵生成

ECC200 Datamatrix Generation in PHP

有没有人有通过 PHP 为 Royal Mail 生成二维条码的经验?我花了一段时间尝试让自己的例程编写有效的数据矩阵,遗憾的是无济于事。

我确实有用于 ASCII 到 C40 和 Luhn 16 校验和生成器的工作转换例程,但无法通过图形表示或 ECC200 字节创建来解决这个问题。

是否有任何预先编写的库,其中包含有助于减少大量进一步跑腿工作的文档?

我确实需要能够在服务器环境中生成它,理想情况下无需使用图像生成的外部站点。

我们使用 Zint Barcode Generator Unix 包来生成 QR 和 PDF417 代码。皇家邮政也受支持。 (在 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 上生成图像。

对于 PHP 中的 ECC200 数据矩阵生成,我们成功地使用了:

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);