Mike42 ESCPOS - 一行打印 4 个 png 文件

Mike42 ESCPOS - Print 4 png files in one line

当我想通过 Mik42/ESCPOS 打印 4 个 PNG 文件 (100x100) 时。它在每一行打印每个 PNG 文件。有什么方法可以在一行中打印所有四个 PNG 文件?

$printer -> setJustification(Printer::JUSTIFY_LEFT);
$printer -> graphics($HC1,false);
$printer -> graphics($HC1,false);
$printer -> graphics($HC1,false);
$printer -> graphics($HC1,false);

可以考虑以下之一。

  1. 通过将四个图像数据排列在一条水平线上来创建一个图像数据并打印它。
  2. 结合rawESC/POS命令数据设置页面模式,在escpos-php的图形打印功能后,用rawESC/POS命令数据重复打印起始位置,最后是 raw ESC/POS 命令,执行实际打印和页面模式结束。

相关ESC/POS命令:

ESC L Select 页面模式
ESC W 在页面模式下设置打印区域
ESC T Select 页面模式下的打印方向

GS $ 在页面模式下设置绝对垂直打印位置
ESC $ 设置绝对打印位置
GS \ 在页面模式下设置相对垂直打印位置
ESC \ 设置相对打印位置

FF (in Page mode) 打印并return 到标准模式(在页面模式下)

使用 imgagick 将其保存到 web 目录中的 PNG 文件,然后在 PHP 中编码。

function appendImages($img1,$img2,$img3,$img4,$format) {

$im = new Imagick();

$im->addImage(new Imagick($_SERVER['DOCUMENT_ROOT'].'/images/'.$img1.'.jpg'));
$im->addImage(new Imagick($_SERVER['DOCUMENT_ROOT'].'/images/'.$img2.'.jpg'));
$im->addImage(new Imagick($_SERVER['DOCUMENT_ROOT'].'/images/'.$img3.'.jpg'));
$im->addImage(new Imagick($_SERVER['DOCUMENT_ROOT'].'/images/'.$img4.'.jpg'));

$im->resetIterator();
$combined = $im->appendImages(false);
$combined->setImageFormat($format);
$combined->writeImage($_SERVER['DOCUMENT_ROOT'].'/images/combined.png'); }